从一个名字,
读懂一组数据
今天开始学习一维整数数组:先认识元素和下标,再用 for 循环逐项访问,把已经学过的累计方法用到一组成绩和温度上。
先补稳昨天的薄弱点
课前复习正确预测了跳过 3 后的输出:1、2、4、5,以及循环外的“结束”。这次没有漏掉最后一行,也能说明 number-- 的减小方向,以及 == 是相等判断、= 是赋值。
数组长度和下标不是一回事
int scores[3] = {80, 90, 75};
scores[0] = 85;声明中的 [3] 表示数组包含三个整数元素;访问时的 [0] 表示第一个元素的位置。三个元素的合法下标是 0、1、2,而不是 1、2、3。
把 scores[0] 改为 85 后,数组变成 85、90、75。实际运行确认,修改只影响指定的元素,第二个成绩仍为 90。
用循环走过每一个位置
for (int index = 0; index < 3; index++)
{
printf("下标 %d,成绩 = %d\n", index, scores[index]);
}index 保存当前位置,scores[index] 读取这个位置保存的成绩。实际输出中,下标 0、1、2 对应 85、90、75。
条件必须是 index < 3。如果写成 index <= 3,就会访问越界的 scores[3]。C 不会自动保证下标合法,因此要自己守住边界,不通过实际越界运行来试错。
累计的是元素,不是下标
在循环之前将 total 初始化为 0,每轮执行 total = total + scores[index];。先用原总和加上当前成绩,再把结果保存回 total。
- 加入 85 后,总和为 85
- 加入 90 后,总和为 175
- 加入 75 后,总和为 250
如果误加 index,得到的只是 0 + 1 + 2 = 3。如果把清零语句放进循环体,每轮都会丢掉之前累计的结果。预测和实际运行都验证了最终成绩总和为 250。
独立综合练习:四个温度求和
创建温度数组 22、24、21、23,把第三个元素修改为 25,再使用自己选择的下标变量 number 遍历、输出和累计。
int temperatures[4] = {22, 24, 21, 23};
temperatures[2] = 25;
int temperature_total = 0;
for (int number = 0; number < 4; number++)
{
temperature_total = temperature_total + temperatures[number];
printf("下标 %d,温度 = %d\n", number, temperatures[number]);
}
printf("温度总和 = %d\n", temperature_total);实际运行依次输出下标 0—3 对应的温度 22、24、25、23,最终总和为 94,程序正常退出,代码为 0。
今天订正的两个细节
- 回答“继续条件”时一度写成
index++。订正后分清:number < 4是继续条件,number++才是每轮更新。 - 独立代码最初已经正确修改和累计温度,但漏写每轮输出。提醒后补上
printf,再次运行验证完整结果。
还理解了:在 for 头部声明的下标变量只在该循环内有效,后面的独立循环可以复用同名变量;使用另一个名字 number 也完全可以。
今天真正完成的内容
- 声明、初始化一维整数数组,并读取和修改单个元素
- 区分数组长度、合法下标和元素值
- 用 for 遍历并累计数组元素
- 独立完成温度数组综合练习,得到总和 94
- 正确回答最后四题:数组长度、下标与元素、访问边界和累计变量的初始化位置
下一课计划学习用输入逐项填充数组,以及通过遍历寻找最大值和最小值。