我们经常需要在程序中存储某种类型的大量数据值。
例如编写一个程序,追踪一只篮球队的成绩,就要存储一个赛季各场分数和各个球员得分。
我们可以使用前面学过的知识 为每个分数使用不同的变量。然而,如果一个赛季有非常多的赛事,这回非常频繁,因为有球赛的每个球员都需要许多变量。
这显然不理想。
理想情况 应该把这些变量 集中在一个名称下面。这样就不需要定义多个变量了。
数组的简介
我们通过一个例子 来了解数组。 这个例子是计算某班学生的平均分数。
假设该班有十个学生。计算一组数字的平均值,要将他们全加起来。再除以数字的个数。#include
int main(void)
{
int number = 0; /* 存储输入的分数*/
int count = 10; /* 学生的个数 */
long sum = 0L; /* 总分 */
float average = 0.0f; /* 平均分*/
/* 读十个数的平均数 */
for(int i = 0; i
{
printf("输入一个学生的成绩: ");
scanf("%d", &number); /* 读取一个数 */
sum += number; /* 累加到sum*/
}
average = (float)sum/count; /* 计算平均数 */
printf("\n输入的十个数字的平均值是: %f\n", average);
return 0;
}
这个程序支队平均值感兴趣,所以 至少累加输入的数。然后输出平均值。
加上要讲这个程序开发为更复杂的程序,需要输入一些数值,再输出每个人的分数,最后输出平均分。
上面的代码 就无法实现了 。因为number 每次都被覆盖了。 不能再次使用
如何存储所有的分数,可以声明十个整数,但是这样不能用for循环输入。而且必须添加代码。追个读入。
太麻烦了。#include
int main(void)
{
int number0 = 0, number1 = 0, number2 = 0, number3 = 0, number4 = 0;
int number5 = 0, number6 = 0, number7 = 0, number8 = 0, number9 = 0;
long sum = 0L; /* Sum of the numbers */
float average = 0.0f; /* Average of the numbers */
/* Read the ten numbers to be averaged */
printf("输入一到五个数字,\n");
printf("每个数字用空格隔开,输入完成按回车键.\n");
scanf("%d%d%d%d%d", &number0, &number1, &number2, &number3, &number4);
printf("输入后面五个数字,\n");
printf("每个数字用空格隔开,输入完成按回车键.\n");
scanf("%d%d%d%d%d", &number5, &number6, &number7, &number8, &number9);
/* Now we have the ten numbers, we can calculate the average */
sum = number0 + number1+ number2 + number3 + number4+
number5 + number6 + number7 + number8 + number9;
average = (float)sum/10.0f;
printf("\n平均数是: %f\n", average);
return 0;
}