第7天:数组 — 操作指南

发布时间:2026/7/30 21:08:50
第7天:数组 — 操作指南 小白记录日常学习一、今日任务总览| 步骤 | 内容 | 时间 ||------|------|------|| ① | 阅读教材第10章 §10.1-10.3 | 60分钟 || ② | 理解数组的存储结构和下标规则 | 30分钟 || ③ | 手打并运行3个练习 | 50分钟 || ④ | 自由实验 | 30分钟 |二、今日核心知识点2.1 数组是什么数组就是把一堆同类型的数据放在连续的内存位置。// 以前需要5个变量int s0, s1, s2, s3, s4; // 噩梦// 现在一个数组搞定int scores[5]; // 清爽内存布局scores[0] scores[1] scores[2] scores[3] scores[4][ ] [ ] [ ] [ ] [ ]↑ 地址连续一个挨一个2.2 下标从 0 开始 ★cint arr[5] {10, 20, 30, 40, 50};arr[0] 10 ← 第一个元素arr[1] 20arr[2] 30arr[3] 40arr[4] 50 ← 最后一个元素// arr[5] ← 越界C不会报错但写了会出大问题为什么从0开始 因为 arr[i] 等价于 *(arr i)——第 0 个元素的偏移量是 0。2.3 数组 for 循环 最佳搭档cint arr[5] {10, 20, 30, 40, 50};// 遍历所有元素for (int i 0; i 5; i)printf(%d , arr[i]);// 常用模式求总和int sum 0;for (int i 0; i 5; i)sum arr[i];2.4 sizeof 计算数组长度cint arr[] {1, 2, 3, 4, 5};int n sizeof(arr) / sizeof(arr[0]); // 总字节数 ÷ 单个字节数 元素个数// 20 ÷ 4 52.5 二维数组cint matrix[3][4]; // 3行4列// 用双层循环遍历for (int i 0; i 3; i) // 行for (int j 0; j 4; j) // 列printf(%d , matrix[i][j]);三、阅读任务60分钟《C Primer Plus 第6版》第10章| 章节 | 内容 | 重点程度 ||------|------|----------|| §10.1 | 数组基本概念 | ★★★ || §10.2 | 一维数组的使用 | ★★★ || §10.3 | 多维数组 | ★★★ || §10.1 末尾 | 数组越界问题 | ★★★ | 今天不读指针部分§10.4-10.7指针是第10天专门看的。四、动手练习50分钟练习1学生成绩bashgcc ex1_scores.c -o ex1_scores.exe./ex1_scores.exe输入5个成绩观察统计结果。改一改把数组长度从5改成10把所有 5 换成 sizeof(scores)/sizeof(scores[0])感受一次改动自动适配的好处。练习23×3矩阵bashgcc ex2_matrix.c -o ex2_matrix.exe./ex2_matrix.exe必做题改成计算副对角线之和即 matrix[0][2] matrix[1][1] matrix[2][0] 357 15。练习3数组反转bashgcc ex3_reverse.c -o ex3_reverse.exe./ex3_reverse.exe纸上追踪画出数组 [1,2,3,4,5,6,7,8]用箭头标注前两轮交换- 第1轮arr[0]↔arr[7] → [8,2,3,4,5,6,7,1]- 第2轮arr[1]↔arr[6] → [8,7,3,4,5,6,2,1]五、自由实验30分钟实验1统计分数段输入10个成绩0-100统计 A(90) / B(80-89) / C(70-79) / D(60-69) / F(60) 各多少人。实验2冒泡排序手动模拟不需要写代码。对数组 [5, 3, 8, 1, 9]在纸上模拟冒泡排序的每一轮交换过程。明天会正式写排序代码。六、今日自检- [ ] 知道数组下标从 0 开始- [ ] 知道 arr[5] 声明了5个元素最后一个下标是 4- [ ] 知道越界不报错后果不可预测- [ ] 能用 sizeof 自动计算数组长度- [ ] 能用 for 循环遍历一维数组- [ ] 能用双层 for 遍历二维数组- [ ] 三个练习全部运行成功七、明天预告第8天函数— 代码复用的核心也是理解指针的前置知识。