3.4 KiB
3.4 KiB
第6课:一维数组
教学目标
- 掌握一维数组的定义、初始化和访问
- 能使用数组进行遍历、查找、统计等基本操作
- 理解数组逆序和冒泡排序的原理
核心考点:数组下标、遍历与越界
考什么
使用数组完成读入、统计、查找和排序,并判断每个元素对应的________。
必须理解
长度为 n 的数组,合法下标从________到________。arr[i] 表示第________个元素。访问 arr[n] 会发生________。
核心写法
for (int i = ________; i < ________; i++) cin >> arr[i];
int maximum = ________;
for (int i = ________; i < n; i++) {
if (arr[i] > maximum) ____________________;
}
常见错误
i <= n为什么会越界?________________- 全是负数时,最大值能否初始化为0?________________
- "第5个元素"的下标是多少?________
判断是否掌握
- 我能说出数组的首尾合法下标。
- 我能写出无越界的遍历循环。
- 我能用数组完成查找和打擂台。
题目一:数组入门 — 求最大值与平均值
核心代码(一句话)
数组遍历的核心:
______,下标从 ______ 开始,到 ______ 结束;打擂台求最值,先请 ______ 当擂主。
自然语言思路
伪代码
1. 输入 n
2. 定义数组 ______
3. for i = 0 到 ______:
4. 输入 ______ // 读入数组
5. maxVal = ______ // 擂主
6. sum = ______
7. for i = ______ 到 ______:
8. if arr[i] ______ maxVal: // 打擂
9. maxVal = ______
10. sum += ______ // 累加
11. avg = ________________ // 整数转浮点数
12. 输出 maxVal 和 avg
真实代码
注意点
题目二:查找元素 — 找目标值
核心代码(一句话)
查找的核心:遍历 + 比较 + ______,找到了就记录位置并退出,用一个 ______ 表示"没找到"。
自然语言思路
伪代码
1. 输入 n, 数组 arr, target
2. index = ______ // 哨兵:默认没找到
3. for i = 0 到 ______:
4. if arr[i] ______ target:
5. index = ______
6. ______ // 找到就停
7. if index ______ -1:
8. 输出 "找到,下标:" + index
9. else:
10. 输出 "未找到"
真实代码
注意点
题目三:数组逆序与冒泡排序
核心代码(一句话)
逆序的核心:首尾交换,只换 ______;冒泡排序的核心:相邻两两比较,______,每轮确定一个最大值的位置。
自然语言思路
伪代码
数组逆序:
1. for i = 0 到 ______:
2. temp = ______
3. arr[i] = ______
4. arr[______] = temp
冒泡排序:
1. for i = 0 到 ______: // 外层:第 i 轮
2. for j = 0 到 ______: // 内层:相邻比较
3. if arr[j] ______ arr[j+1]:// 前面大就交换
4. temp = ______
5. arr[j] = ______
6. arr[j+1] = ______
真实代码
注意点
本课打油诗
课后作业
- 输入 n 个数,求第二大值(注意可能有重复最大值)
- 输入 n 个数,将它们逆序存储后输出(不能用第二个数组)
- 输入 n 个数,统计其中不同数字的个数
- 输入 n 个数,使用冒泡排序从小到大排序后输出