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

备战大晨7月 GESP C++ 1级(7):if-else 分支结构,程序终于"会做选择"了
强仔上回说到
上一篇带大晨刷完了顺序结构的练习题,加减乘除、变量赋值,基本能独立敲出来了。我当时说”下一篇咱们该上分支了”,结果大晨问我:”爸,分支是啥?能吃吗?”
好家伙,你要不说,我还真以为能吃。
什么是分支结构
我跟大晨解释:你每天出门上学,如果下雨就带伞,不下雨就不带——这就是分支。程序也一样,遇到某个条件成立就做 A,不成立就做 B,这就是 if-else。
大晨恍然大悟:”就跟妈妈说,如果考 90 分以上就买乐高,否则就买练习册一样?”
准确,而且扎心。
if-else 的基本写法
C++ 里 if-else 的长这样:
1 | if (条件) { |
大晨第一次注意花括号,问我这俩符号干嘛的。我说就像你家院子的围墙,把属于 if 的代码圈起来,别让它们跑到 else 那边去。
大晨说:”那围墙不结实的话,代码会翻墙跑出来吗?”
你别说,他还真问到点上了——以后讲作用域的时候再细说这个。
来一道实战题
GESP 一级常考的类型:输入一个整数,判断它是奇数还是偶数。
1 |
|
大晨看到 n % 2 == 0 的时候卡住了,问我这个 % 是啥。我说就是取余数,比如 5 颗糖分给 2 个人,每人 2 颗剩 1 颗——那个”剩 1 颗”就是 5 % 2 的结果。
“那 == 呢?跟 = 不一样吗?”
这个问题特别重要,好多孩子在这一行栽过跟头。= 是赋值,把右边的值塞给左边;== 是判断相等,问两边是不是一样。写错一个等号,程序的行为完全变。
我让大晨故意把 == 改成 = 编译试了一次,编译器报了个 warning,他这才记住这俩真不一样。
大晨踩的坑
大晨自己敲的时候,第一次把 else 拼成了 esle,编译报错盯着屏幕找了五分钟没找出来。我说你把那一行念出来,他一念:”E-S-L-E……诶?”
拼写错误是初学者的头号敌人,没有之一。
第二个坑是 if 后面手滑多了个分号:
1 | if (n % 2 == 0); // 注意这个分号! |
大晨写了这个分号,程序不管输入啥都输出 even,他一脸懵。我跟他解释,这个分号相当于 if 后面跟了一条空语句,条件成立啥也不干,然后直接往下跑到了 cout 那行。
“分号也有坏的时候啊。”大晨嘟囔了一句。
练习量
这天大晨做了 6 道 if-else 的练习题,包括判断正负数、判断闰年、比较两个数大小。前 3 道我陪着写,后 3 道自己独立完成,对了 4 道,错了 2 道——一道是 == 写成 =,一道是忘写花括号导致逻辑串了。
GESP 一级的 if-else 题目本身不难,但细节决定成败。
小结
if-else 是大晨从”线性思维”跨到”条件思维”的第一步。今天 6 道题做下来,他对条件判断有感觉了,但拼写和符号的小毛病还得多练几轮才能磨掉。
不过,在往更复杂的嵌套 if 走之前,还有个东西得先拿下——多条件判断的 else if 写法。大晨下次见面要问我的问题,估计比今天还多。
下篇咱们聊 else if 和多路分支,看看大晨能不能扛住三个以上条件的连环判断。
免责声明:本文为个人陪跑记录,非专业教学指导,代码和观点仅供参考。每个孩子学习节奏不同,请根据实际情况调整。


