备战大晨7月 GESP C++ 1级(5):if-else 分支结构,让程序学会"做选择"

备战大晨7月 GESP C++ 1级(5):if-else 分支结构,让程序学会"做选择"
强仔上回说到
上篇聊完了运算符和表达式,大晨做题还算顺利,正确率大概 85% 左右。当时我留了个话头——真正的考验从这一篇才开始。
因为前面那些 cin、cout、变量、加减乘除,大晨基本一两天就上手了,说白了就是”顺着写下来”。但接下来要讲的 if-else 分支结构,是大晨第一次接触”程序也会做选择”这件事。
大晨的第一反应
我给大晨讲 if-else 的时候,先没着急写代码,而是拿生活场景问他:
“你今天出门,如果下雨,你带不带伞?”
大晨翻了个白眼:”那肯定带啊。”
“那不下雨呢?”
“那就不带呗,带伞干嘛,嫌书包不够重啊?”
我笑了:”你看,你刚才就是在做 if-else。如果下雨,就带伞;否则,就不带。这就是分支结构。“
大晨恍然大悟:”哦——if 就是如果的意思对吧?那 else 就是否则?”
对,就是这么回事。 从生活场景切入比直接讲代码强一百倍,这是我这几次陪跑最大的体会。
最简单的 if 语句
先从最简单的 if 开始,输入一个数,判断是不是正数:
1 |
|
大晨一看就懂了:”输入一个数,如果大于 0,就输出’正数’。”
我追问:”那如果输入 -5 呢?”
“那就什么都不输出呗。”
没错。if 后面的条件不满足,就跳过大括号里的内容,程序继续往下走。
if-else:两条路选一条
光有 if 不够,很多时候我们需要”否则”的情况。比如判断奇偶数:
1 |
|
大晨看到 n % 2 == 0 有点懵,我提醒他:”% 是取余数,上篇刚学过。一个数除以 2,余数是 0 就是偶数。”
大晨拍了一下脑袋:”哦对对对!”
这里有个特别容易踩的坑:== 是判断相等,= 是赋值,两个完全不同。 大晨第一遍写的时候直接敲了 n % 2 = 0,编译直接报错,他盯着屏幕看了两分钟才发现。这个错误我估计每个初学者都得犯一次。
if-else if-else:多条路选一条
选择不止两个的时候,就需要 if-else if-else 了。大晨做了一道判断成绩等级的题:
1 |
|
大晨看完问了个特别好的问题:”爸爸,如果我考了 95 分,它会不会先输出’优秀’,然后又输出’良好’和’及格’?”
这个问题问得非常好,说明他在动脑子。 我跟他解释:if-else if-else 是从上往下依次判断,只要有一个条件满足,就执行对应的代码,然后跳出整个分支结构,不会再往下判断了。
大晨松了口气:”那就好,不然我 95 分同时是优秀又是良好,那不成薛定谔的成绩了嘛。”
——这词儿哪学的我也不知道。
陪跑笔记:三个高频错误
这几天陪大晨刷《一本通》上 if-else 的课后题,我总结了三个他反复犯的错:
第一,大括号忘写。 只有一行代码的时候大括号确实可以省略,但我要求大晨必须写,养成习惯比省那两个字符重要得多。
第二,if 后面多写分号。 if (a > 0); 后面多了个分号,条件直接变成了空语句,下面的代码不管条件真假都会执行。这个 bug 大晨排查了 20 分钟,差点急哭。
第三,大于小于搞反。 题目要求”大于等于 60 输出及格”,他写成了 score < 60。后来我让他先在草稿纸上画流程图,再写代码,出错率明显下降。
小结
if-else 分支结构是 GESP 一级的核心考点之一,理解起来不难,但细节特别多。大晨目前《一本通》上 if-else 相关题目正确率大概 80%,还需要继续练。
不过有个好消息——今天他做了一道”判断闰年”的题,虽然写得磕磕绊绊,但逻辑是对的,最后 AC 的时候高兴得从椅子上蹦起来,喊了一句”我太牛了”。
从”只会顺着写”到”学会让程序做选择”,这是编程思维的第一个大台阶。大晨迈上来了。
下一篇我们要进入一个全新的领域了。我提前翻了一下《一本通》下一章的内容,大晨瞟了一眼说了句”这啥啊,看不懂”——到底是什么把他吓住了?下次再说。
免责声明:本文仅为个人陪孩子学习信奥的记录,不构成任何教学建议。代码示例基于 C++ 基础语法,如有错误欢迎指正。每个孩子学习节奏不同,请根据实际情况调整。


