备战大晨7月 GESP C++ 1级(15):for 循环初次登场,累加求和跑通

备战大晨7月 GESP C++ 1级(15):for 循环初次登场,累加求和跑通
强仔上回说到
上一篇大晨搞定了 if-else 多层嵌套,那道判断闰年的题做对了,我给他记了一颗星。翻开《一本通•编程启蒙C++版》下一章,标题写着四个字——循环结构。
我心里咯噔一下。顺序、分支都过了,循环是第三个大关,也是从”线性思维”跳到”重复思维”的分水岭。不少孩子就是卡在循环这一步的。
for 循环:让代码替你干重复的活
我跟大晨说,你平时从1数到100,嘴巴一直重复说数字对吧?代码也一样,要它重复干一件事,就得用循环。
for 循环长这样:
1 | for (初始化; 条件判断; 更新) { |
三个部分用分号隔开。我给大晨打了个比方——
初始化是”从几开始”,条件判断是”到几停”,更新是”每次走几步”。
大晨听完点了点头:”就是从1数到100嘛。”
理解到位,行。
经典题:从1加到n
直接上经典题。输入一个正整数 n,求 1+2+3+…+n 的和。
代码如下:
1 |
|
我一行一行讲:
int sum = 0;—— 准备一个”存钱罐”,初始是空的。for (int i = 1; i <= n; i++)—— i 从1开始,每次加1,到 n 为止。sum = sum + i;—— 每轮把 i 扔进存钱罐。
大晨输入100,屏幕输出5050。他眼睛一亮:”爸爸,这就是高斯小时候算的那个?!”
没错。高斯用公式,我们用循环,殊途同归。
我又让他输入10,输出55;输入1,输出1。他自己又试了几个数,确认没问题。
老父亲翻车现场
讲完正题,大晨突然问:”爸爸,如果把 i++ 改成 i–,是不是倒着加?”
我一愣。对,for (int i = n; i >= 1; i--) 就是从 n 倒着加到1,结果一样。我当场改了代码跑给他看,输出还是5050。
他接着追问:”那 i+=2 呢?”
好家伙,开始举一反三了。 我说那就是隔一个加一个,1+3+5+…+99,结果就不一样了。我一边说一边改代码,输出2500。
他又问:”那 i+=0 会怎样?”
我心里一惊——死循环。 这小子无意中问到了循环里最经典的坑。我赶紧跟他说,i 永远不变,条件永远成立,程序就停不下来了,得强制关掉。
说实话这几个问题问得我后背冒汗。不是怕答不上来,是怕讲着讲着把自己绕进去了。 中年人的脑子,确实不如年轻时候灵光了。
小结
今天大晨第一次接触 for 循环,核心三要素记住了:初始化、条件判断、更新。 经典累加求和这道题算是跑通了。
不过我翻了下书后面,下一节内容是while 循环——for 的亲兄弟。for 能干的事 while 也能干,但写法不一样,有些场景 while 更顺手。大晨能不能接受两套写法、会不会搞混,我心里没底。
下篇我们就来啃 while 循环,看看这小子到底是融会贯通还是当场宕机。
免责声明:本文为个人陪跑学习笔记,代码和方法仅供参考,不构成任何教学建议。每个孩子节奏不同,切勿照搬。


