#GOC107725. 一维数组知识点

一维数组知识点

题目描述


思考题:

输入3个正整数,请按照与他们输入相反的顺序逆着输出这几个数。例如:输入1,3,2,输出:2,3,1.按照之前学过的内容,我们可以定义三个变量a,b,c,然后输入三个变量cin>>a>>b>>c;倒序输出三个变量:cout<<c<<b<<a;

想想看,如果不是3个数,而是50个数呢?

1、在数学中,如果要使用50个变量,那我们可以使用s1,s2,s3...s50代替,所以结合数学知识我们可以这样写:

int s1,s2,s3,s4...s50;

cin>>s1>>s2>>s3>>s4>>...>>s50;

cout<<s50<<“ ”<<s49<<“ ”<<s48<<...s1<<endl;

可是C++代码中不能用“...”代替类似代码,所以s5~s49也必须要全部写出来,所以如果单个定义变量会变得非常麻烦。


于是,我们需要学习数组。

在计算中定义相同类型的多个数据,我们可以通过数组实现,其定义格式为:

数据类型   数组名  [数组大小]; 例如:int a[50]。需要特别留意:int a[50]是定义了a[0]~a[49],并不包括a[50],相当于有50个房间,但是编号从0开始,所以只能到49号房间,因此为了防止数组溢出,我们通常会在题目要求的最大范围的基础上再加5,比如说50个变量,可以定义int a[55],数组可以开大但是不能开小,但是数组也不是无限大的,int数组最大可以开10的7次方。

1、数组大小必须是一个有确切值的常数或者变量,且数组一旦定义,其大小不能再被更改。数组名的定义和变量名的定义规则一样。

例如:int a[105];是正确的,但是int a[n];是错误的,因为n的大小未知,而数组大小必须是常数。

2、数组输入:如何输入50个整数呢?我们可以这样写。

            for(int i=1;i<=50;i++) 

                cin>>a[i];

3、数组输出:如何用空格隔开输出50个整数呢?我们可以这样写。

            for(int i=1;i<=50;i++) 

                cout<<a[i]<<' ';

例题:

1、输入n个同学的成绩,请输出学号a到b之间的成绩,用空格隔开。

输入格式:

第一行:三个整数n,a,b(n<1000)

第二行:输入n名同学的成绩

输出格式:

a到b之间的成绩,用空格隔开(a<b<n)

样例1:

8 3 6
45 64 32 67 24 89 58 78
32 67 24 89


参考程序:

#include<bits/stdc++.h>

using namespace std;

int n,a,b,c[1005];

int main(){

    cin>>n>>a>>b;

    for(int i=1;i<=n;i++){

    cin>>c[i];

    }

    for(int i=a;i<=b;i++)

    cout<<c[i]<<' ';

    return 0;

}