《C Primer Plus》第 6 章 学习笔记(6·11)


6·11 数组简介

数组(array) 是按 顺序 存储的一系列 类型相同 的值。

整个数组有一个 数组名 ,通过 整数下标 (subscript)访问数组中单独的项或元素 (element)

例如 float debts[20]; ,声明 debts 是一个内含 20 个元素的数组,每个元素都可以存储 float 类型的值

要注意的是,第一个元素是 debts[ 0 ] ,第二个才是 debts[ 1 ] ,直至 debts[ 19 ] 。

可以给每个元素赋值:

debts[ 5 ] = 23.3;
debts[ 10 ] = 2.33e7;

也可以通过函数赋值:

scanf_s("%f", &debts[ 4 ]);

但此处要注意:

  1. 程序不会检查下标是否正确
  2. 每个 int 为 2 字节
  3. 每个 char 为 1 字节

6·11·1 可以使用循环来为数组赋值:

示例:

//使用 for循环 处理数据
#include <stdio.h>
#define SIZE 10
#define PAR 72.0                              //标准分
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_s("%d", &score[index]);         //输入 SIZE 个分数

    printf("The scores read in are as follows:\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;              //使用 (float)把 sum 由 int 转化为 float
    printf("|          Sum of scores= %d         |\n", sum);
    printf("|          Average = %.2f            |\n", average); 
    printf("|     That's a handicap of %.0lf.        |\n", average - PAR);    //差分:平均分与标准分的差值
    return 0;
}

结果:

Enter 10 golf scores:
99
95
109
105
100
96
98
93
99
97
The scores read in are as follows:
   99   95  109  105  100   96   98   93   99   97
|          Sum of scores= 991         |
|          Average = 99.10            |
|     That's a handicap of 27.        |

以下是注意事项

  1. 使用 #define 定义明示常量(符号常量)来给定指定数组的大小,并且程序中的数组大小都使用这个符号常量来代替具体数字,这样利于后期程序的优化和修改。

  2. 使用循环的方式可以较轻松地处理一个大小为 SIZE 的数组:

    for (index = 0; index < SIZE; index++)
    

    设置正确的 数组边界 很重要,第一个元素的 下标0 ,则循环开始时就把 index 设置为 0 ,最后一个元素的下标为 SIZE - 1 ,通过测试条件 index < SIZE 来控制最后一个元素的下标正确。

  3. 程序能重复显示刚输入的数据

  4. 调整程序时注意遵循 模块化(modularity)的原则。也即:要把程序划分为若干的 独立的单元 ,每个单元执行一个任务。可以把每一个执行任务的单元放进函数中,提高程序的模块化。


参考书籍

《C Primer Plus》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值