Files
project1/第02课-循环结构/教案-学生版.md
2026-07-02 16:54:05 +08:00

161 lines
4.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 第2课循环结构 + 数位拆解
## 教学目标
- 掌握 for、while 和 do-while 循环的使用场景
- 掌握数位拆解技巧(取个位、去个位)
- 能用循环判断回文数
- 了解水仙花数的判断方法
## 核心考点:循环边界与数位拆解
### 考什么
判断循环次数和结束条件并用循环完成求各位和、________数字、判断回文数等任务。
### 必须理解
次数明确时常用________结束条件更自然时常用________。数位拆解每轮依次完成________、使用这一位、________。如果后面还要使用原数必须先________。
### 核心写法
```cpp
int num = ________;
int rev = 0;
while (num > 0) {
int d = num ________ 10;
rev = rev * ________ + d;
num ________ 10;
}
```
### `do-while` 循环
`do-while` 的特点:循环体至少执行 ______ 次。
```cpp
do {
// 循环体
} while (); // 结尾不要漏掉 ______
```
### 常见错误
- 忘记更新循环变量会发生什么________________
- `i < n``i <= n` 的执行次数有什么区别____________
- 为什么反转前要备份原数________________
### 判断是否掌握
- [ ] 我能判断循环的起点、终点和次数。
- [ ] 我能写出取个位与去个位。
- [ ] 我能独立完成数字反转。
---
## 课堂编程题
### 课堂1奇偶分组统计【适中】
**题目描述:** 输入正整数 `n`,分别求 `1n` 中奇数之和、偶数之和,并计算 `1n` 的乘积。若乘积超过 `10^18`,输出 `TOO LARGE`
**输入格式:** 输入一个正整数。
**输出格式:** 第一行奇数和与偶数和;第二行乘积或 `TOO LARGE`
**数据范围:** `1≤n≤30`
**输入样例:**
```text
5
```
**输出样例:**
```text
9 6
120
```
**解题思路:** 一个 `for` 循环同时完成奇偶累加;累乘前判断 `product>10^18/i`,避免溢出。
**易错提醒:** 范围是 `1n`,循环条件必须为 `i<=n`;累加器和累乘器的初值分别为 0 和 1。
---
### 课堂2数字分析报告【适中】
**题目描述:** 输入一个非负整数,输出它的位数、各位数字之和、最大数字和反转数。
**输入格式:** 输入一个非负整数。
**输出格式:** 依次输出位数、各位和、最大数字、反转数。
**数据范围:** `0≤n≤10^9`
**输入样例:**
```text
50230
```
**输出样例:**
```text
5 10 5 3205
```
**解题思路:** 备份原数,用 `while` 重复"取个位、使用个位、去个位";单独处理 `n=0`
**易错提醒:** 反转后的前导零不会保留0 本身有一位,不能被普通循环漏掉。
---
### 课堂3寻找第一个合格数【适中】
**题目描述:**`1n` 中寻找第一个同时满足"能被 7 整除、不能被 5 整除、各位和大于 10"的数。跳过所有含数字 4 的数;找到后立即输出,否则输出 `NONE`
**输入格式:** 输入一个正整数。
**输出格式:** 第一个合格数或 `NONE`
**数据范围:** `1≤n≤100000`
**输入样例:**
```text
100
```
**输出样例:**
```text
77
```
**解题思路:** 外层枚举数字;拆位检查含 4 和各位和。含 4 时 `continue`,找到答案时 `break`
**易错提醒:** `continue` 跳过本轮,`break` 结束整个当前循环,两者含义不同。
---
### 课堂4区间素数统计【适中·双层循环】
**题目描述:** 输入 `L``R`,输出闭区间内的所有素数及素数个数。
**输入格式:** 输入区间的左端点和右端点。
**输出格式:** 第一行按升序输出素数;第二行输出个数。没有素数时第一行输出 `NONE`
**数据范围:** `1≤L≤R≤10000`
**输入样例:**
```text
10 20
```
**输出样例:**
```text
11 13 17 19
4
```
**解题思路:** 外层枚举候选数,内层从 2 检查到平方根;找到因数立即 `break`
**易错提醒:** 1 不是素数;内层的 `break` 只结束因数检查,不会结束外层枚举。
---
## 课后作业
> 请完成本课对应的课后作业,见编程题文件。