备战大晨7月 GESP C++ 1级(30):for 里再套 for,大晨的星星三角终于立起来了

备战大晨7月 GESP C++ 1级(30):for 里再套 for,大晨的星星三角终于立起来了
强仔上篇留的话头,今天兑现
上一篇咱们把单层 for 循环刷得差不多了,文末我留了句话:循环还能套着循环用,威力翻倍。今天《一本通·编程启蒙》正好翻到循环嵌套这一节,来兑现承诺。
先给他看题:从键盘读入一个 n,打印 n 行星星,第一行 1 颗,第二行 2 颗……第 n 行 n 颗。大晨扫了一眼说”这不简单?”,第一版代码交上来一跑——n 颗星星全挤在一横排里。
单层循环管不了”行”和”列”两个方向的事,这时候就得请出嵌套循环:外层管行,内层管列。
代码上桌
完整代码,直接可以编译运行:
1 |
|
输入 5,输出:
1 | * |
跟大晨磨了半天的是两个点:
- 外层 i 管行数,内层 j 的终点是 i,也就是”第几行就打几颗星”,j <= i 这个条件是整道题的灵魂。
cout << endl;必须放在内层循环外面、外层循环里面,一行星星打完才换行。
他踩的坑:endl 放错了地方
第二版代码编译通过,一运行全乱套——每颗星星自己独占一行,竖着排成一长溜。他盯着屏幕半天,喊我:”爸爸,星星怎么排队下楼了?”
一检查,他把 cout << endl; 塞进了内层循环里。endl 放错一层循环,整个图形就散架——这个坑不亲自踩一次,我讲十遍都白讲。他自己改完再跑,看到三角形立起来的那一秒,蹦起来喊”成了成了”,比我发工资还激动。
后来他总结了一句让我印象很深的话:”这不就是套娃嘛,大循环肚子里装了个小循环,小循环跑完一圈,大循环才走一步。”
娃自己悟出来的比方,比我讲的管用十倍。
老父亲陪跑心得:先画图,再写码
这次我吸取了教训,先拿草稿纸画格子:5 行 5 列,第 i 行涂 i 个格子,让他自己数着填星星,数完再对着代码看 j 从 1 走到 i。手比脑快的孩子,先让手动起来,脑子才肯跟上。
顺势留了两道变形题:倒三角(第 1 行 n 颗往下递减)、每行打行号再打星星(1: *)。倒三角他磨了大概 20 分钟才把 j 的起点想明白,数字三角第一次就过了。
今日小结 & 下篇预告
- 嵌套循环 = 外层管行、内层管列,动手前先想清楚谁控制谁。
- endl 的位置 = 换行的时机,放进哪层循环,就在哪层”刹车”。
- 娃卡住别急着讲,让他先踩坑,踩过的坑才是他自己的。
嵌套循环的第一次亲密接触算是顺利拿下。但光打星星还不够过瘾——下篇就用这两层 for 打印九九乘法表,还要认识一个新朋友 ‘\t’ 制表符,那个对齐问题能把强迫症娃逼疯。大晨能不能一口气打对?下篇见分晓。
免责声明:本系列仅为我家娃的学习记录和老父亲的陪跑笔记,不构成任何教学或报考建议,每个孩子节奏不同,仅供参考。


