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