调整课次结构:前9节重新排序,新建第06课一维数组,后3节不变
This commit is contained in:
158
第06课-一维数组/教案-学生版.md
Normal file
158
第06课-一维数组/教案-学生版.md
Normal file
@@ -0,0 +1,158 @@
|
||||
# 第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 个数,使用冒泡排序从小到大排序后输出
|
||||
Reference in New Issue
Block a user