• C Primer Plus(6) 中文版 第6章 C控制语句:循环 6.11 数组简介


    6.11 数组简介
    数组可以作为一种存储多个相关项的遍历方式。
    数组(array)是按顺序存储的一系列类型相同的值。整个数组有一个数组名,通过整数下标访问数组中单独的项或元素(element)。
    注意,数组元素的编号从0开始,不是从1开始。
    实际上,使用数组元素和使用同类型的变量一样。
    注意一个潜在的陷阱:考虑到执行速度的影响,C编译器不会检查数组的下标是否正确。
    当下标超过数组有效范围外,当运行程序时,这会导致数据被放置在已被其他数据占用的地方,可能会破坏程序的结果甚至导致程序异常中断。
    数组的类型可以是任意数据类型。
    如果char类型的数组末尾包含一个表示字符串末尾的空字符\0,则该数组中的内容就构成了一个字符串,否则就是字符数组。
    用于识别数组元素的数组被称为下标(subscript)、索引(indice)或偏移量(offset)。下标必须是整数,而且要从0开始计数。
    数组的元素被依次存储在内存中相邻的位置。
    6.11.1 在for循环中使用数组
    程序打印总分、平均分、差点(handicap),它是平均分与标准分的差值。
    // scores_in.c -- uses loops for array processing
    #include
    #define SIZE 10
    #define PAR 72
    int main(void)
    {
        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]);  // read in the ten scores
        printf("The scores read in are as follows:\n");
        for (index = 0; index < SIZE; index++)
            printf("%5d", score[index]); // verify input
        printf("\n");
        for (index = 0; index < SIZE; index++)
            sum += score[index];         // add them up
        average = (float) sum / SIZE;    // time-honored method
        printf("Sum of scores = %d, average = %.2f\n", sum, average);
        printf("That's a handicap of %.0f.\n", average - PAR);
        
        return 0;

    /* 输出:

    */ 

    scanf()会跳过空白字符。所以可以在一行输入10个数字,也可以每行只输入一个数字,或者像本例这样混合使用空格和换行符隔开每个数字(因为输入是缓冲的,只用当用户键入Enter键后数字才会被发送给程序)。
    一些较好的程序风格:
    第一,用#define指令创建的明示常量来指定数组的大小。这样就可以在定义数组和设置循环边界时使用该明示常量。如果以后要扩展数组的大小,只需要修改SIZE即可,不用逐一修改程序中使用了数组大小的每一处。
    第二,可以很方便地处理一个大小为SIZE的数组:
    for( index = 0; index < SIZE; index++ )
    设置正确的数组边界很重要。第1个元素的下标是0,最后一个元素的下标是SIZE - 1。因此使用index < SIZE。
    第三,程序能重复显示刚读入的数据。这是很好的编程习惯,有助于确保程序处理的数据与期望相符。
    for( index = 0; index < SIZE; index++ ){
        scanf("%d", &score[index]);  // read in the ten scores
        printf("%5d", score[index]); // verify input
        sum += score[index];         // add them up
    }
    该程序可以合并3个独立的for循环。合并后的程序显得更加紧凑。但是,调整时要注意遵循模块化(modularity)的原则。模块化隐含的思想是:应该把程序划分为一些独立的单元,每个单元执行一个任务。这样做提高了程序的可读性。也许更重要的是,模块化使程序的不同部分彼此独立,方便后续更新或修改程序。在掌握如何使用函数后,可以把每个执行任务的单元放进函数中,提高程序的模块化。

  • 相关阅读:
    【快速幂】
    【脑肿瘤分割】Deep learning based brain tumor segmentation: a survey
    一些关于Netty的工作架构流程的问题
    2022年度新星,4款一见倾心的黑马软件,让你找不到拒绝的理由
    .NET Core MongoDB数据仓储和工作单元模式封装
    1774. 最接近目标价格的甜点成本
    基于Java的师生健康体检管理系统设计与实现(源码+lw+部署文档+讲解等)
    Golang学习:基础知识篇(三)—— Map(集合)
    微软广告和网络服务CEO承认OpenAI的Sora将加入Copilot,但需要一些时间
    AVR汇编(四):数据传送指令
  • 原文地址:https://blog.csdn.net/weixin_40186813/article/details/126205877