第 05 课:分支结构(二)——多分支、嵌套与逻辑运算符

前置条件:会写 if / else,认识关系运算符 >、<、>=、<=、==、!=,知道“条件成立是 1、不成立是 0”;会用 % 判断奇偶。

0. 本节知识地图

上节课:二选一

        条件成立吗?
          │        │
        成立      不成立
          │        │
        A 语句    B 语句

这节课:把“选择”变多,把“条件”变复杂

  ┌── 分支结构补齐 ────────────────┐   ┌── 逻辑运算符 ──────────────────┐
  │                                │   │                                │
  │  多分支 if / else if / else    │   │  &&  与:两个条件都成立才算     │
  │  嵌套   if 里面再写一个 if      │   │  ||  或:有一个成立就算         │
  │                                │   │  !   非:把成立变不成立         │
  └────────────────────────────────┘   └────────────────────────────────┘
               │                                      │
               └──────────► 写出更贴近题意的判断 ◄──────┘

多分支用来在三条以上的路里挑一条;嵌套用来“先问一个大问题,再问一个小问题”;逻辑运算符用来把几个简单条件连成一个复杂条件。

1 复习:上节课的两种选择

先用一分钟把上节课的两块积木摆出来:

// 单分支:成立才做,不成立就跳过
if (n > 0) {
    cout << "positive" << endl;
}

// 双分支:两条路,必走一条
if (score >= 60) {
    cout << "pass" << endl;
} else {
    cout << "fail" << endl;
}

一块石头只有两种命运:掉下去或者不掉下去。可如果题目要把成绩分成 A、B、C、D 四档,两个分支就不够用了。下面先把“路”变多。

2 补充一:多分支 if / else if / else

多分支的意思是:从上往下一条一条检查,遇到第一个成立的条件就执行它那一支,后面的全部跳过;如果一条都不成立,就走最后的 else。

if (条件 1) {
    条件 1 成立时执行的语句;
} else if (条件 2) {
    条件 2 成立时执行的语句;
} else if (条件 3) {
    条件 3 成立时执行的语句;
} else {
    上面全都不成立时执行的语句;
}

例子:读入一个分数,按下面的规则输出档位。

分数 输出
90 分及以上 A
80 ~ 89 分 B
60 ~ 79 分 C
60 分以下 D
#include<iostream>
using namespace std;

int main() {
    int score;
    cin >> score;
    if (score >= 90) {
        cout << "A" << endl;
    } else if (score >= 80) {
        cout << "B" << endl;
    } else if (score >= 60) {
        cout << "C" << endl;
    } else {
        cout << "D" << endl;
    }
    return 0;
}

输入 95 输出 A,输入 85 输出 B,输入 60 输出 C,输入 30 输出 D。

讲解要点: