# 第6课:一维数组 ## 教学目标 - 掌握一维数组的定义、初始化和访问 - 能使用数组进行遍历、查找、统计等基本操作 - 理解数组逆序和冒泡排序的原理 ## 核心考点:数组下标、遍历与越界 ### 考什么 使用数组完成读入、统计、查找和排序,并判断每个元素对应的________。 ### 必须理解 长度为 n 的数组,合法下标从________到________。`arr[i]` 表示第________个元素。访问 `arr[n]` 会发生________。 ### 核心写法 ```cpp 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 ``` ### 真实代码 ```cpp ``` ### 注意点 --- ## 题目二:查找元素 — 找目标值 ### 核心代码(一句话) > 查找的核心:**遍历 + 比较 + ______**,找到了就记录位置并退出,用一个 ______ 表示"没找到"。 ### 自然语言思路 ### 伪代码 ``` 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. 输出 "未找到" ``` ### 真实代码 ```cpp ``` ### 注意点 --- ## 题目三:数组逆序与冒泡排序 ### 核心代码(一句话) > 逆序的核心:**首尾交换,只换 ______**;冒泡排序的核心:**相邻两两比较,______**,每轮确定一个最大值的位置。 ### 自然语言思路 ### 伪代码 **数组逆序**: ``` 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] = ______ ``` ### 真实代码 ```cpp ``` ### 注意点 --- ## 本课打油诗 > --- ## 课后作业 1. 输入 n 个数,求第二大值(注意可能有重复最大值) 2. 输入 n 个数,将它们逆序存储后输出(不能用第二个数组) 3. 输入 n 个数,统计其中不同数字的个数 4. 输入 n 个数,使用冒泡排序从小到大排序后输出