8.1.1 初试数组
在循环中我们有一个例子:计算用户输入的整数平均数,以-1结尾。
当时的方法是:读入用户输入的每个数字,统计输入的个数,然后用输入的数字之和除以个数。
我们用累加的方法得到最后的和,不需要记录每个数字是多少。
那么问题做些更改,又该怎么做?
容易知道,我们需要记录每个数字,那么如何记录很多数?
- int num1,num2....?
我们需要一种新的手段:数组
int number[100];
scanf("%d",&number[i]);
定义了一个变量叫number,这个变量是一个数组,这个数组的每个单元都是一个int,数组的大小是100(可以放100个int)
#include <stdio. h>
int main()
{
int x;
double sum = 0;
int cnt = 0;
int number [100] ;//定义数组
scanf("%d", &x);
while(x!=-1){
number [cnt] = x;//对数组里的元素赋值
sum+=X;
cnt ++ ;
scanf("%d", &x);
}
if(cnt>0){
printf ("%f\n", sum/cnt);
int i;
for ( i=0; i<cnt; i++ ){
if ( number [i] > sum/cnt )//使用数组元素
{
printf("%d\n",number[i]);//遍历数组
}
}
}
return 0;
}
PS:遍历就是将数组里的每个元素都过一遍或者规定的范围内过一遍
这个程序利用了数组来完成计算平均值并且输出比平均值大的数字,然而这个程序中存在安全隐患——数组的大小从一开始就固定,这个问题我们下节再说
8.1.2 数组的使用
定义数组
上一节我们定义了一个数组,它的格式是这样的:
- <类型>变量名称[元素数量]
- 如int grades[100]
- double weight [20]
- 需要注意的是:元素数量必须是整数
- C99之前元素数量必须在编译时确定,C99之后可以用变量来定义数组大小
数组的含义
- 是一种容器(放东西的东西) ,有一些特点:
- 所有的元素都是同一类型,在定义数组时就定义好了
- 一旦创建就不能改变其大小
- 在计算机内部内存中数组中的元素是按照顺序排列的
编程语言可提供容器能力的大小和语言能力大小相挂钩
如:
int a[10];
- 一个int类型的数组
- 其中有10个单元,依次为a[0],a[1],a[2]...a[9]
- 每个单元都是一个int型变量