备战大晨7月 GESP C++ 1级(27):for 套 for,循环也会"套娃"

备战大晨7月 GESP C++ 1级(27):for 套 for,循环也会"套娃"
强仔上一篇结尾我说过,单层循环大晨已经基本拿下了,接下来该上点”硬菜”。这不,本周陪跑,《一本通·编程启蒙 C++版》正好推进到循环章节的”打印图形”小节——for 套 for,嵌套循环,来了。
说实话,这个知识点我当年自己学 C 语言的时候也卡过一下,所以我提前给大晨打好了预防针:今天可能会有点绕,绕不过来不怪你。
循环套循环,到底是什么玩意
我没急着讲代码,先拿生活里的例子打比方:外层走一步,内层跑一圈。
我跟他说:你每天上学,是一层大循环;而在学校里,每节课 40 分钟,是里面的小循环。一天 8 节课都上完,外面那个”天”的循环才走完一步。
大晨听完来了句:”爸爸,这不就是套娃吗?”
行吧,这词比我的”学校循环论”形象多了。后面我俩干脆就把嵌套循环叫”套娃循环”。
第一题:打印星号矩形
书上的例题很经典:打印一个 3 行 4 列的星号矩形。
1 |
|
输出长这样:
1 | **** |
大晨第一次敲的时候,把 cout << endl; 写进了内层循环里,结果打出来一根竖着的糖葫芦,一行一个星号。他盯着屏幕愣了三秒,自己反应过来了:”换行放错地方了,应该一整行打完再换!”
自己发现的 bug,比我讲十遍都管用。
第二题:直角三角形,内层条件跟着变
矩形会了,书上紧接着来了个直角三角形:第 1 行 1 个星,第 2 行 2 个,一路加到第 5 行 5 个。
1 |
|
输出:
1 | * |
这题的关键就一处:内层的终止条件是 j <= i,跟着外层变。大晨一开始照抄上一题的 j <= 4,打出来还是个矩形,他还挺委屈:”我代码没错啊?”
我让他用手指着屏幕数:第 2 行应该几个星?两个。你代码里让它打了几个?四个。他”哦——“了一声,改了一个字符,过了。
老父亲陪跑心得
今晚有效学习时间 45 分钟,两道例题加 4 道课后小题,错 1 道。总结几条给自己也给大家:
- 外层管行,内层管列,这句话我让大晨抄在了笔记本第一页;
- 换行的
endl要放在两个循环之间,这是今天最容易翻车的点; - 让孩子用手指着输出数星号,比干讲逻辑有用十倍。
临睡前大晨还追着问:”爸爸,套娃能套三层吗?”我说能,不过那是以后的事,先把两层玩明白。
小结与下篇预告
今天拿下了嵌套循环,一句话记住:外层走一步,内层跑一圈,换行别放错地方。GESP 一级的图形打印题,基本就是这个套路。
下一篇,咱们就用今天学的”套娃循环”,去挑战一个真正的大 boss——九九乘法表。大晨看到样例输出的那一刻眼睛都亮了,至于他第一遍会打出一张什么样的”残表”,下篇见分晓。
免责声明:本文仅为自家孩子备考过程的个人记录,不构成任何教学建议。每个孩子节奏不同,参考就好,别焦虑。


