Files

152 lines
3.9 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.
# 第5课嵌套循环与图形打印
## 教学目标
- 理解嵌套循环的执行流程(外层管行、内层管列)
- 能分析图形规律,写出对应的行列公式
- 掌握矩形、直角三角形、等腰三角形、菱形的打印方法
- 掌握多层循环以及分支与循环相互嵌套
## 核心考点:嵌套循环中的行列关系
### 考什么
根据图形推导每一行的________数和________数再使用嵌套循环输出。
### 必须理解
________循环负责行数________循环负责当前行中的字符数量。等腰三角形第 i 行有________个前导空格、________个星号。
### 核心写法
```cpp
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= ________; j++) cout << ' ';
for (int j = 1; j <= ________; j++) cout << '*';
____________________;
}
```
### 常见错误
- 换行应写在内层循环里面还是外面________________
- 为什么内层循环的次数常常与 i 有关________________
- 行号从0开始时能否直接使用从1开始的公式________
### 判断是否掌握
- [ ] 我能列出每行空格数和符号数。
- [ ] 我能由行号推导数量公式。
- [ ] 我能正确安排内外层循环与换行。
---
## 课堂编程题
### 课堂1实心与空心矩形【适中】
**题目描述:** 输入行数 `n`、列数 `m` 和模式 `type`。当 `type=1` 时打印实心矩形;当 `type=2` 时打印空心矩形。
**输入格式:** 依次输入行数、列数和图形模式。
**输出格式:** 用星号打印指定矩形。
**数据范围:** `1≤n,m≤30``type` 为 1 或 2。
**输入样例:**
```text
3 5 2
```
**输出样例:**
```text
*****
* *
*****
```
**解题思路:** 双层循环枚举行列。实心模式总输出星号;空心模式只在首尾行或首尾列输出星号。
**易错提醒:** 每打印完一行才换行;`n=1``m=1` 时所有位置都在边界上。
### 课堂2四种直角三角形【适中】
**题目描述:** 输入 `n` 和类型 `type`,打印边长为 `n` 的直角三角形1 左下、2 右下、3 左上、4 右上。
**输入格式:** 输入三角形边长和图形类型。
**输出格式:** 指定方向的星号三角形。
**数据范围:** `1≤n≤30``1≤type≤4`
**输入样例:**
```text
4 2
```
**输出样例:**
```text
*
**
***
****
```
**解题思路:**`i` 行星号数量为 `i``n-i+1`;右对齐时先输出相应数量空格。
**易错提醒:** 右对齐不是改变星号数量,而是在星号前补空格。
### 课堂3等腰三角形与菱形【适中】
**题目描述:** 输入 `n` 和模式 `type`。模式 1 打印高为 `n` 的实心等腰三角形;模式 2 打印上下高度均为 `n`、中间行不重复的菱形。
**输入格式:** 输入图形高度和图形模式。
**输出格式:** 指定图形。
**数据范围:** `1≤n≤20`
**输入样例:**
```text
3 2
```
**输出样例:**
```text
*
***
*****
***
*
```
**解题思路:** 上半部分第 `i` 行有 `n-i` 个空格和 `2i-1` 个星号;菱形下半部分按相反规律输出。
**易错提醒:** 菱形下半部分从 `n-1` 开始,避免中间最长行重复。
### 课堂4九九乘法表【适中】
**题目描述:** 输入 `n`,打印 `1n` 的下三角乘法表。第 `i` 行输出 `1×i``i×i`
**输入格式:** 输入乘法表的最大因数。
**输出格式:** 下三角乘法表,每项格式为 `j*i=积`,项之间一个空格。
**数据范围:** `1≤n≤9`
**输入样例:**
```text
3
```
**输出样例:**
```text
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
```
**解题思路:** 外层 `i` 控制行和第二个因数,内层 `j` 从 1 走到 `i`
**易错提醒:** 内层上界是当前行号 `i`,不是固定的 `n`
---
## 课后作业
> 请完成本课对应的课后作业,见编程题文件。