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

先来看一下题目描述

将一个数组中的值按逆序重新存放。例如,原来的顺序为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

到此,程序结束

    原文作者:opbnbjs
    原文地址: https://www.jianshu.com/p/4616dbb75ce6
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞