Skip to content

7. if-else 分支:程序的十字路口

前置学习:关系与逻辑运算符

现实生活中,我们无时无刻不在做选择:“如果明天下雨,我就带伞;否则,我就戴遮阳帽。” 在 C++ 中,赋予程序这种“做选择”能力的,就是分支结构。最核心的指令就是 if(如果)和 else(否则)。

1. 单分支:if 语句

当你只需要在“满足某种条件”时才执行某件事,使用单分支。

cpp
int hp = 0;
// 如果小括号里的条件为真 (true),就执行大括号里的代码
if (hp <= 0) {
    cout << "Game Over!" << endl;
}

2. 双分支:if-else 语句

当面临“非此即彼”的选择时,使用 if-else

cpp
int score;
cin >> score;

if (score >= 60) {
    cout << "及格了,晚上加鸡腿!" << endl;
} else {
    // 只要上面的条件不成立,就无条件执行这里
    cout << "不及格,准备挨打!" << endl;
}

3. 多重分支:else if

当情况超过两种,比如成绩分为优、良、及格、不及格时,可以通过连写 else if 来进行像下楼梯一样的逐级判断。

cpp
int score = 85;

if (score >= 90) {
    cout << "优秀";
} else if (score >= 80) {
    // 电脑能走到这里,说明暗含了一个条件:score 一定小于 90
    cout << "良好";
} else if (score >= 60) {
    cout << "及格";
} else {
    // default 兜底:以上都不满足时执行
    cout << "不及格";
}

4. 💀 OI 赛场两大致命陷阱

陷阱一:少写一个等号的惨案 这是无数新手甚至老手都会栽跟头的地方:

cpp
int a = 5;
// 错误写法:if (a = 10)
if (a == 10) { 
    cout << "a等于10";
}

如果你错写成了 if (a = 10),编译器不会报错!它的意思是把 10 塞进 a 里,并且这个操作本身的结果为 10(非 0 即真),所以大括号里的代码会被无条件执行。一定要牢记:判断相等是双等号 ==

陷阱二:省略大括号的诱惑 C++ 语法允许 if 后面如果只有一行代码,可以不写 { }但竞赛铁律是:哪怕只有一行代码,也必须打上大括号! 这能帮你完全避开日后因为代码缩进混乱而导致的“悬挂 else”逻辑 Bug。

5. 动手实践

md
1. 打开左下角的代码沙盒。
2. 编写一个程序:输入一个整数 `n`
3. 如果 `n` 是偶数,输出 `Even`;如果是奇数,输出 `Odd`
   *提示:判断偶数的方法是 `n % 2 == 0`*
💻 运行代码

C++ 在线评测沙盒

📥 标准输入 (cin):
📤 终端输出 (cout):