备战大晨7月 GESP C++ 1级(29):循环套循环,打出九九乘法表

备战大晨7月 GESP C++ 1级(29):循环套循环,打出九九乘法表
强仔上篇咱们把 for 循环的基本套路捋顺了,大晨自己敲出 1 加到 100 等于 5050,嘚瑟得晚饭多吃了半碗米饭。我当时就撂了句话:别飘,循环的终极形态还没上桌。
今天这篇,上它,循环嵌套:一个 for 里面,再套一个 for。
今天的主角:循环套循环
《一本通·编程启蒙 C++版》翻到循环这一章的后半段,书上管这个叫“循环的嵌套”。我给大晨打了个比方:大循环每走一步,小循环都要从头到尾完整跑一遍,跑完了,大循环才能走下一步。
大晨听完第一反应:“爸爸,这不就是套娃吗?for 里面还有 for!”
对,就是套娃。外层循环管大节奏,内层循环管小步子,外层每挪一步,内层得把一整圈跑完。
上代码:让计算机“背”九九乘法表
概念讲三分钟就够了,练手得来道有意思的题。我直接选了九九乘法表——大晨当年背口诀背得龇牙咧嘴,现在让计算机自己打一张出来,他眼睛一下就亮了。
1 |
|
跑出来是这样的:
1 | 1*1=1 |
这段代码有三个关键点,我陪大晨一个一个抠:
i管行、j管列,外层管行、内层管列,这是嵌套循环的铁律;- 内层条件是
j <= i,不是j <= 9,所以打出来是三角形,跟他背的口诀表一模一样; cout << endl;要写在内层循环结束之后、外层循环的花括号里面——换行的站位,决定了输出是一张表还是一团乱麻。
大晨踩的坑:一串“糖葫芦”
第一次上机,大晨就把第 3 个关键点踩没了。他把 cout << endl; 塞进了内层循环里面,结果每打一个式子就换一行,屏幕上竖着挂出一长串“糖葫芦”。
他自己盯着屏幕乐了半天,然后问我哪儿错了。我没直接说,让他拿手指头在屏幕上比划:外层走一步,内层是不是得把 j 从 1 转到 i?那换行到底是内层的活儿,还是外层的活儿?他想了差不多两分钟,把那行代码挪了出来,一次跑通。
前后折腾了十五分钟,但这十五分钟比讲一小时都值。代码是他自己改对的,这个知识点才真正是他的。
后来他手痒,把 j <= i 改成 j <= 9,打出来一个方方正正的九乘九全表,还跟我显摆:“爸爸你看,这是完整版!”我说行,你知道改一个字符输出就大变样,这个感觉就对了。
老父亲陪跑感悟
晚上七点半上机,八点十分收工,四十分钟。这周的节奏稳住了:周二周四各一次,一次一道主菜。
说实话,循环嵌套是个小分水岭,脑子要同时跟踪两个变量,有的孩子在这儿会卡一下。大晨靠“套娃”这个比方,过得还算顺。我也查了下 GESP 一级的考纲,嵌套考得非常浅,真正发力在二级——但咱们往前多走半步,考场上更稳,以后冲二级也不用回头补课。
陪到第 29 篇,我越来越觉得:学编程不是背语法,是练“把一件大事拆成一层一层小事”的本事。外层定方向,内层干细活——你别说,这跟当爹还挺像。
小结和下篇预告
今天三件事:套娃结构、乘法表代码、换行语句的站位。“外层管行、内层管列、换行放外层”,这三句大晨已经能自己复述了。
收工的时候大晨出了道歪题:“爸爸,能不能让口诀表倒着打,从 9*9 那行开始?”我说能,正好用循环加条件伺候它。另外我翻了翻书,下一站是个大家伙——数组,让计算机一口气记住一串数。歪题和数组,下篇一起见分晓。
免责声明:本文是我陪大晨备考 GESP 的个人记录,代码与做法仅供参考,不构成任何学习建议。每个孩子节奏不同,请量力而行。


