🔷 第四章 条件判断语句
📄 一句话概括

第三种形式 if-else if-else:像下楼梯一样逐级检查,哪级条件先命中就走哪级、直接离开,全不中走 else 兜底。分数定等级这种"多档选一"的事,全靠它。

一、语法与执行流程

if (score >= 90) {
    cout << "优秀" << endl;
} else if (score >= 80) {
    cout << "良好" << endl;
} else if (score >= 60) {
    cout << "及格" << endl;
} else {
    cout << "不及格" << endl;
}

执行顺序(对着图看):从上往下逐级试条件 → 第一级 >=90 中了就走"优秀",下面全部不看;没中落到第二级 >=80……全没中走 else。

两个关键认知:

  1. 阶梯是"隐含条件"——程序走到第二级时,第一级必然没中(score 必然 < 90),所以 else if (score >= 80) 实际含义是 80~89。条件不用写全,顺序就是逻辑。
  2. 命中即走——整个阶梯最多只执行一块,和 if-else 一样互斥;想"命中后还接着查"就得用连续的独立 if(语义完全不同,见误区 2)。

二、实例 03:根据成绩划分等级

用上面这段代码,输入 95→"优秀"、85→"良好"、73→"及格"、42→"不及格"。

测试要喂边界:90(优秀下界)、89(良好上界)、60、59——边界是条件写错的高发区。如果把第二级误写成 score > 80,89 分会被判成"及格",一测边界就现形。

级数不限:else if 可以写任意多个,最后 else 可省——但不写 else 时"全不中"就什么都不做,要想清楚这正不正是你要的。

三、30 秒实验:打乱顺序会怎样

把上面阶梯的三个条件倒过来排(先 >=60 再 >=80 再 >=90),输入 95:

看到什么算成功:输出"及格"——因为第一级 95>=60 就命中了,直接离开,后面更严的条件永远没机会。这就是"顺序即逻辑"的反面教材:多分支条件必须从严到宽(范围小的放上面)。

四、常见误区

  1. "else if 也要写全条件"——如 score >= 80 && score < 90:写全不算错,但阶梯已经隐含了 score < 90,写全反而啰嗦。
  2. "连续几个独立 if 等于阶梯"——不等。独立 if 每级都检查、可能命中多级;阶梯命中一级就收工。判等级用独立 if 会把"及格"的输出覆盖成"优秀",彻底乱套。
  3. "条件顺序随便排"——见上面的实验,必须从严到宽。这是多分支第一大坑。
自测三问(点开对答案) 1. 阶梯第二级 `else if (score >= 80)` 的隐含条件是什么?——`score < 90`(第一级没中),实际范围 80~89。 2. 输入 85 时整个阶梯执行几块?——一块("良好"),命中即走,其余全跳。 3. 多分支条件的排列原则?——从严到宽(范围小的放上面);打乱会被宽条件截胡。

相关笔记