C++数组基础题目“数组倒序输出”

作者: opbnbjs | 来源:发表于2017-11-25 20:28 被阅读44次

    先来看一下题目描述

    将一个数组中的值按逆序重新存放。例如,原来的顺序为8,6,5,4,1。要求改为1,4,5,6,8。

    输入

    输入为两行:第一行数组中元素的个数n(1<n<100),第二行是n个整数,每两个整数之间用空格分隔。

    输出

    输出为一行:输出逆序后数组的整数,每两个整数之间用空格分隔。

    样例输入

    5

    8 6 5 4 1

    样例输出

    1 4 5 6 8

    这题的关键就在"倒序"上

    倒序输出的方法有很多

    为了让初学者很快get到新技能

    我今天要讲到的,就是用for语句倒序输出

    先看一下程序体(完整版)

    #include

    using namespace std;

    int main()

    {

    int b,c;

    int a[100];

    cin>>b;

    for(int i=1;i<=b;i )

    {

    cin>>a[i];

    }

    for(int j=b;j>0;j--)

    {

    c=a[j];

    cout<<c<<" ";

    }

    return 0;

    }

    这个程序只需要用iostream就能解决(为了方便新手,我没有使用标准输入输出)

    我们只用了两个循环,而第一个循环只是拿来正序输入的

    这是第一个循环:

    for(i=1;i<=b;i )

    {

    cin>>a[i];

    }

    此处用的是最基本的for语句读入数组法

    之前读入了一个b,b就是这个数组的元素的数量。

    i的初值要设为1

    如果i的初值设为0那么就会多读入一个数据

    (道理:若从一开始,假设我们要读入5个数据,将会是:1.2.3.4.5   5个数据

    假设从0开始,将会是:0.1.2.3.4.5  6个数据)

    i<=b   表示有b个数据

    (解释一下为什么是<=b而不是<b或=b或==b)

    先说

    如果写=b,那么就更不科学,在c中,一个等号表示赋值,i=b相当于把i的值赋给b,这在for语句中是不合规矩的,会报错

    如果写==b,在c中,"=="表示判等,意思说只有在i等于b的时候才会执行后面的运算。虽然不会报错,但是没有达到我们想要的效果)

    i 相当于i=i1

    下面的cin>>a[i]就是读入数组。

    那么我刚才int的a[100]数组中的前b个元素已经赋值了

    而后的for就是用来倒序输出的

    for(int j=b;j>0;j--)

    {

    c=a[j];

    cout<<c<<" ";

    }

    首先,j=b

    先让j等于b,也就是正序的最后一个数据,它将成为倒序的第一个数据

    j>0

    大于0的整数,也就是说j最小为1

    这个1代表正序的第一个元素,现在1成了最小值,就相当于让以前的第一个成了现在的最后一个

    至此,我们已成功的让正序的第一个元素成为了倒序的最后一个元素。正序的最后一个元素成了倒序的第一个元素

    j--相当于j=j-1

    那么在这个循环语句中,j的值将会是b,b-1,b-2,b-3.....3.2.1

    也就是a[b],a[b-1],a[b-2]......a[1]

    成功将数组倒序

    但是还要输出,我们就将就这个循环来进行输出

    这里我把a[j]赋给了c,只是为了图个清爽

    也可以不用c

    将就循环,把a[j]的值赋给c,在输出一个空格

    (意思是说a[j]的值在变,而c的值也跟着它变,它变一次,c就取了它的值然后输出,它的值再变,c的值又跟着变然后在输出,如此反复)

    然后return 0

    到此,程序结束

    相关文章

      网友评论

        本文标题:C++数组基础题目“数组倒序输出”

        本文链接:https://www.haomeiwen.com/subject/nythbxtx.html