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

上篇回顾:程序不能只会走直线

上篇咱们聊完顺序结构,文末我卖了个关子,说顺序结构只是信奥路上的热身,真正的考验马上就到。这不,今天按《一本通•编程启蒙C++版》的进度,咱们正式迎来了让程序学会“拐弯”的第一个大坎儿——if-else 分支结构

大晨的灵魂拷问

大晨一看代码里的 if,好奇地问我:“爸,if 是不是‘如果’的意思?那程序也会像人一样思考吗?”
我摸摸他的头说:“程序自己不会思考,但咱们可以给它设定规则。比如,你如果今天30分钟内做完口算,就能玩20分钟游戏;否则,就老老实实继续做题。这就是 if-else。”

大晨眼睛一亮,立刻来了精神:“那我现在就写个程序,让电脑每天自动给我发游戏时间!”

核心知识点:if-else 的基本骨架

在 C++ 里,if-else 的语法其实特别接地气。我跟大晨说,你就记住这个套路:

如果条件成立,就干第一件事;否则,就干第二件事。

写成代码就是这样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;

int main() {
int score;
cin >> score;

if (score >= 60) {
cout << "及格了,可以玩游戏!" << endl;
} else {
cout << "没及格,继续做题吧。" << endl;
}

return 0;
}

我特意跟大晨强调,括号里的条件必须是能判断真假的,比如大于、小于、等于。 这小子上次把 == 写成 =,结果程序不管输入多少分都说能玩游戏,自己 debug 了半天才发现问题在哪。

经典例题:奇数还是偶数?

《一本通》里有个特别经典的题:输入一个整数,判断它是奇数还是偶数。
这题刚好能用到之前学的取余运算符 %,简直是绝佳的练手题。我让大晨自己先敲一遍,他在那嘀咕:“除以2有余数就是奇数,没余数就是偶数,太简单了!”

这里分享一段完全可编译的正确代码,适合 GESP 一级的小朋友们参考:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;

int main() {
int n;
cin >> n;

// 判断是否能被2整除
if (n % 2 == 0) {
cout << n << " 是偶数" << endl;
} else {
cout << n << " 是奇数" << endl;
}

return 0;
}

大晨输入 7,屏幕输出 7 是奇数,他激动得拍桌子:“电脑终于听我的话了!”

老父亲陪跑笔记:三大翻车点

别看 if-else 简单,大晨在实际敲代码时,还是踩了几个坑。我总结了一下,这也是很多初学者常犯的错:

  1. 忘记大括号 {}:很多教材说如果只有一条语句可以不写大括号,但我直接强制要求大晨必须写。初学阶段,大括号就是程序的保险绳,再啰嗦也比出错强。
  2. 分号乱加:大晨老是在 if (n % 2 == 0) 后面顺手敲个分号。我告诉他,if 后面加个分号,就相当于“如果条件成立,啥也不干”,电脑会直接跳过执行后面的代码。
  3. 等号的坑:判断相等一定要用 ==,一个等号 = 是赋值。这个点我至少唠叨了三遍,不知道他记牢没。

小结与下篇预告

今天大晨算是彻底搞懂了最基础的 if-else 两路分支。虽然只是简单的“二选一”,但他已经开始盘算着怎么用代码控制家里的智能音箱了。

不过,现实中的情况可不止两种。比如考试成绩分为优秀、良好、及格和不及格,这时候单纯的一个 if-else 就不够用了。如果遇到多个条件该怎么排兵布阵呢? 下次咱们就来聊聊多重分支的套娃操作,大晨估计又要开始掉头发了。

免责声明:本文仅为大晨备考 GESP C++ 一级的学习记录与个人心得分享,不构成专业编程教学指导。代码仅供交流,如有 bug 欢迎留言指正,老父亲代码水平有限,轻喷哈。