对于数组的使用,书上给出了一个例子:在for循环中的数组。
例子的背景是高尔夫球的得分问题,10个得分,要求得出总分,平均分,差点(平均分-标准分)
/*scores_in.c -- 10个得分,要求得出总分,平均分,差点(平均分-标准分)*/
#include <stdio.h>
#define PAR 72 //标准分
int main (void)
{
int i, scores[10];
float average;//平均分
int sum = 0;//总分
printf("请输入分别10个得分,空格键隔开:\n");
for(i = 0; i < 10; i++)
{
scanf("%d",&scores[i]);//读取10个数字
}
printf("这10个数分别为:\n");
for(i = 0; i < 10; i++)
{
printf("%5d",scores[i]);
}
printf("\n");
for(i = 0; i < 10; i++)
{
sum += scores[i];
}
average = sum / 10;
printf("总分为:%d,平均分为:%.2f,差点为:%.2f", sum,average, average - PAR);
return 0;
}
请输入分别10个得分,空格键隔开:
99 95 109 105 100 96 98 93 99 97 98
这10个数分别为:
99 95 109 105 100 96 98 93 99 97
总分为:991,平均分为:99.00,差点为:27.00
首先,仔细看输入的数据发现,我照着书上输入数据,输入了11个,而程序只读取了10个并且程序运行没有问题,因为循环中只能读取10个数据,因此,即使我输入100个数字,依然只读取10个(同时警示了我不能完全被书本带着走!)程序中还可以看到数字的读取方法,和之前介绍的很相似,只是改动了&后的变量为数组而已。
第二,定义数组是我直接用了10,来规定数组长度(有点偷懒了)。书上使用的是#define SIZE 10,在[ ]里放的是SIZE,这样的好处是如果遇到相同类型的问题,需要20个数来运行程序,只要在最上面把10改成20就行了,而我要一个一个改(当然我会用替换)
第三,程序能重复显示刚输入的数据。这有助于确保程序处理的数据和期望值相同。
最后,这里使用了三个for循环,其实完全可整合为一个for循环,合并后会使程序更紧凑。编写程序有一个模块化原则,其隐含的思想是将程序划分成一个个独立的单元,分别执行各自的任务,可以提高程序的可读性。更重要的是可以方便程序的更新和改写,在掌握函数后这一点会更加得以体现。