C++基础23 一维数组及相关问题详解

数组的作用

在之前的题目中出现过有很多很多数字,我们可以使用多个变量把这些数字都保存下来,但是变量数量太多不方便使用,这个时候就需要数组了。

 

数组的概念

相同数据类型的元素按一定顺序排列的集合,就是把多个类型相同的变量用同一个名字命名,然后用编号区分他们的变量的集合。

这个名字称为数组名,编号称为下标,数组里面的每一个数称为数组中的元素。

数组可以理解为一列火车,车厢是从 1 开始编号的,车头可以算成是 0 号车厢。同样数组也是从 0 开始编号的,车厢就是数组元素。

 

数组的定义

int a[5]; //定义里面都是整形变量的数组 a

其中,a是一维数组的数组名,该数组有5个元素,依次表示为:

a[0],a[1],a[2],a[3],a[4] //引用数组元素

 

注意事项

需要注意的是:a[5]不属于该数组的空间范围。

严禁下标越界!!!

但是由于习惯问题,一般我们会从1号元素开始使用,所以一般我们定义数组时会比范围稍微大一些。

 

训练:清点货物

火车车厢可以装很多货物,但是需要按照车厢进行装载,便于查找。车站站长告诉小知各个车厢分别存放多少货物。到了下一站,小知需要把这些具体数量告诉老师,可是实在是太多数字了,能够编写一个程序帮助小知,把这些数字都记录下来呢?(最多有100节车厢)

【输入描述】

2行:

第一行:n,分别表示车厢数量

第二行,n个整数,表示每个车厢里面货物的数量

【输出描述】

1行,n个数字,用空格隔开,表示货物数量

【输入样例】

5

3 2 5 4 1

【输出样例】

3 2 5 4 1

参考程序

#include<iostream>
using namespace std;
int main()
{
    int n,a[110];
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    for(int i=1;i<=n;i++)
        cout<<a[i]<<" ";
    return 0;
}

 

训练:临时抽查

有n节车厢装有很多货物的火车经过中间站的时候,碰到临时检查,需要对第k节车厢进行抽查,请问这节车厢里有多少货物?(最多有100节车厢,2<=k<=n<=100)

【输入描述】

2行:

第一行:n和k,分别表示车厢数量和检查的车厢号

第二行,n个整数,表示每个车厢里面货物的数量

【输出描述】第k节车厢里货物的数量

【样例输入】

5 3

11 15 8 7 10

【样例输出】8

参考程序

#include<iostream>
using namespace std;
int main()
{
    int n,k,a[110];
    cin>>n>>k;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    cout<<a[k]<<" ";
    return 0;
}

 

逆序清点

火车车厢可以装很多货物,但是需要按照车厢进行装载,便于查找。火车到站以后老师从最后一节车厢往前清点货物数量,那么他清点的每节车厢货物的数量应该是什么样子的呢?(最多有100节车厢)

【输入描述】

2行:

第一行:n,分别表示车厢数量(2<=n<=100)

第二行,n个整数,表示每个车厢里面货物的数量

【输出描述】1行,n个数字,用空格隔开,表示逆序输出的货物数量

【样例输入】

7

12 11 9 15 13 14 10

【样例输出】10 14 13 15 9 11 12

参考程序

#include<iostream>
using namespace std;
int main()
{
    int n,a[110];
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    for(int i=n;i>=1;i--)
        cout<<a[i]<<" ";
    return 0;
}