C++ 一维数组初步

数组是具有相同属性的一组数据的总称。一个一维数组就相当于一个单行表格,我们称数组的一个“格子”为一个元素,每个数组元素都有唯一的编号,这个编号通常被称为下标。

一、一维数组的定义

定义格式如下: 类型名数组名[常量表达式];例如:int a[10];

说明:

(1)类型名是指数组元素的类型,它可以是任何类型,同一个数组中的元素具有相同类型。因此我们可以说,数组是由固定数量的相同类型的元素组成。上面例子中int说明这个数组的类型是整数类型。

(2)数组名必须是标识符,而数组元素的个数由常量表达式决定,这个值必须是正整数常量表达式,不能是变量或含有变量的表达式。上面例子中a是这个数组的数组名,[10]是这个数组元素的个数。

(3)数组元素的个数由常量表达式决定,数组下标从0开始。因此,如果你定义了一个含有n个元素的数组变量,只能够从0引用到n-1。例如int a[10];这个数组的下标为0~9,其元素分别为a[0]、[1]、a[2]、a[3]、a[4]、a[5]、a[6]、a[7]、a[8]、a[9]。C++不检查数组下标是否越界!如果下标越界,程序会崩溃!

(4)定义一维数组元素可以直接赋初始值,如int a[5]=(10,20,30,40,50]则他们的值为a[0]是10、a[1]是20,a[2]是30,a[3]是40、a[4]是50。

注意:如果你想要使用10个数组变量,而且想这些变量的下标名是1~10,那么定义数组就应该为int a[11]。在这个数组中定义了11个数组元素,我们在使用的时候可放弃下标0不用,直接从1开始用,就可以实现10个数组元素的下标从1~10。

注:通常我们会把数组定义在主函数外面,这样数组元素就直接清零了。

二、一维数组的输入

(1)数组名代表的不是一个变量,而是一批变量,因此不能直接读入整个数组,而是要逐个读人数组元素,通常用循环语句来完成这一功能。

for(int i=1;i<=n;i++){//从键盘读入n个数组元素的值
        cin>>a[i];  //当i=1时,输入的值就是给到a[1];当i=2时,输入的值就是给到a[2];当i=3时,输入的值就是给到a[3].....
}

(2)也可以单独输入某个数组元素,例如:

cin>>a[5]; //单独给下标为5的a数组输入数值

三、一维数组的赋值

(1)一维数组的赋值通常是利用循环语句来实现。

例如:一维数组的赋值

for(int i=1;i<=n;i++){
       a[i]=i;  //把1~n的赋值给数组元素a[1]~a[n]
}

例如:一维数组清零

for(int i=1;i<=n;i++){
       a[i]=0;  //数组元素清零
}

(2)单独给某个数组元素赋值,例如:

a[5]=100;        
a[10]=a[2]+50;
a[15]=a[20];

四、一维数组的输出

(1)数组元素的输出通常用循环语句来实现。

例如:输出n个数组元素

for(int i=1;i<=n;i++){
       cout<<a[i]<<" ";  //数组元素之间用空格分隔;当i=1时,输出的值是a[1]的值;当i=2时,输出的值是a[2]的值.....
}

(2)单独输出某个数组元素,例如

cout<<a[5]; //单独输出下标为5的a数组的元素值

五、数组下标

数组下标用于标明某一元素在数组中的位置,它与数组元素一一对应。

例如:

#include<iostream>
using namespace std;
int a[11];
int main()
{
	for(int i=1;i<=10;i++){
		cin>>a[i];
	}
	for(int i=1;i<=10;i++){
		cout<<a[i]<<" ";
	}
	
	return 0;
}
//输入数据:100 98 99 100 95 97 96 100 99 96

所以a数组其对应的元素值为:

a数组下标12345678910
数组元素值10098991009597961009996

六、实例

例1、成绩检查

英语老师已经把n个同学的成绩输入电脑,现在需要抽取学号a到学号b之间所有同学的成绩进行检查,请你编程序帮助英语老师解决。

【输入格式】

第一行,1个整数n(n<1000),代表学生总数;第二行,n个整数,代表每个同学的成绩;第三行,2个整数a,b(a<b)。

【输出格式】

从a到b之间的所有成绩,分数之间用空格隔开。

【输入样例】

10

98 96 100 97 96 98 97 98 87 89

3 5

【输出样例】

100 97 96

分析:可以用一维数组按学号顺序存储所有同学的成绩,那么学号a到学号b之间的成绩就是这个数组中位置a到位置b位置的所有数。

#include<iostream>
using namespace std;
int cj[1001];//用cj数组来储存同学的成绩
int main()
{
	int n,a,b;
	cin>>n;
	for(int i=1;i<=n;i++)//按顺序输入n个成绩
		cin>>cj[i];
	cin>>a>>b;
	for(int i=a;i<=b;i++)//按顺序输出学号a到学号b之间的成绩
		cout<<cj[i]<<" ";
		
	return 0;
}

例2、种小花

为了美化环境,市长提出全民种花活动:第一户种1盆,第二户种1盆,第三户种2盆,第四户种3盆,第五户种5盆,第六户种8盆……以此类推,请问第n户要种多少盆?

【输入格式】

1个整数n,代表第几户(n<1000)。

【输出格式】

1个整数,代表第n户要种花的盆数。

【输入样例】

10

【输出样例】

55

分析:根据题意,可以得出以下规律:第1个数是1,第2个数是1,从第3个开始,每个数等于前两个数之和,这就是著名的菲波那契数列。

#include<iostream>
using namespace std;
int a[1001];
int main()
{
	int n;
	cin>>n;
	a[1]=1;a[2]=1;
	for(int i=3;i<=n;i++)
		a[i]=a[i-1]+a[i-2];
	cout<<a[n];
		
	return 0;
}
  • 35
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值