C语言:在for循环中使用数组

263 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第25天,点击查看活动详情

举个使用循环处理的数组例子

#include <stdio.h>
#define SIZE 10
#define PAR 72
int main() {
    int index,score[SIZE];
    int sum=0;
    float average;
    printf("Enter %d golf scores:\n",SIZE);
    for(index=0;index<SIZE;index++)
        scanf("%d",&score[index]);
    printf("The scores read in are as follow:\n");
    for(index=0;index<SIZE;index++)
        printf("%5d",score[index]);
    printf("\n");
    for(index=0;index<SIZE;index++)
        sum+=score[index];
    average=(float)sum/SIZE;
    printf("Sum of scores=%d,average=%.2f\n",sum,average);
    printf("That's a handicap of %.0f.\n",average-PAR);
    return 0;
}

运算结果

Snipaste_2022-08-22_21-36-36.png

分析一下

首先,注意程序示例虽然打印了11个数字,但只读取了10个数字,因为循环只读了10个值。由于scanf()会跳过空白字符,所以可以在一行输入10个数字,也可以每行只输入一个数字,或者像本例这样混合使用空格和换行符隔开每个数字。因为输入是缓冲的,只有当用户键入Enter键后数字才会被发给程序。

然后,程序使用数组和循环处理数据,这比使用10个单独的scanf()语句和10个单独的printf()语句读取10个分数方便得多。for循环提供了一个简单直接的方法来使用数组下标。注意,int类型数组元素的用法与int类型变量的用法类似。要读取int类型变量fue,应这样写 scanf("%d",&score[index]);

该程序示例演示了一些较好的编程风格。第一,用#define 指令创建的明示常量来指定数组的大小。这样就可以在定义数组和设置循环边界时使用该明示常量。如果以后要扩展程序处理20个分数,只需要简单地把SIZE重新定义为20即可,不用逐一修改程序使用了数组大小的每一处。

下面的代码可以很方便处理一个大小为SIZE的数组:for(index=0;index<SIZE;index++) 设置正确的数组边界很重要。第1个元素的下标是0,因此循环开始时把index设置为0.因为从0开始编号,所以数组中最后一个元素的下标是SIZE-1。也就是说,第10个元素是 score[9].通过测试条件index<SIZE来控制循环中使用的最后一个index的值是SIZE-1