【C++程序员必修第一课】C++基础课程-07:switch 分支选择

1 本课主要内容:

  • 为什么需要有 switch 多分支选择?应用场景在哪里?
  • switch 多分支选择的应用讲解:case, break,default

2 主要知识点:

  • 为什么需要有 switch 多分支选择

思考一个问题,数学老师需要统计班上同学,期末考试获得A+、A、B+、B、C总共五个等级学生分别总人数时,就可以使用 switch 多分支选择语句,代码例子如下:

// 考试等级类型
enum LevelType {
    LevelAPlus    // A+
    , LevelA      // A
    , LevelBPlus  // B+
    , LevelB      // B
    , LevelC      // C
};

int aPlusNumber{0};    // A+人数
int aNumber{0};        // A人数
int bPlusNumber{0};    // B+人数
int bNumber{0};        // B人数
int cNumber{0};        // C人数
...

LevelType level{0};        //考试等级
...

switch (level) {
case LevelType::LevelAPlus:
    aPlusNumber++;    // A+人数加1
    break;
case LevelType::LevelA:
    aNumber++;        // A人数加1
    break;
case LevelType::LevelBPlus:
    bPlusNumber++;    // B+人数加1
    break;
case LevelType::LevelB:
    bNumber++;        // B人数加1
    break;
default:
    cNumber++;       // 其他(C)人数加1
    break;
}
  • 哪些数据类型可用于 switch 语句

char, short, int, long, bool, enum 数据类型可以用于 switch 多分支选择;switch 多分支选择格式例子如下:

语句格式:
switch (...) {
case v1: {
    ...
    break;
}
case v2: {
    ...
    break;
}
default: {
    ...
    break;
}
}
执行顺序如下:
1 判断 (...)的值,如果跟对应哪个 case (v1,v2,...) 的值相等,进入 2 ,否则进入 3 default 分支(可选)
2 直接执行对应 case (v1,v2,...) 后面的代码,一直到 break 指令跳出分支,否则继续执行下一个 case 的 {...} 代码,直到遇到 break 或者 switch 最后一行代码;
3 执行 default 后面 {...} 代码

// 例子:
int a{0};
...
switch (a) {
case 0: {
    // a==0执行以下代码
    // ...
    break;
}
case 1: {
    // a==1执行以下代码
    // ...
    break;
}
default: {
    // 其他情况下,执行以下代码;
    // default属于可选分支,可以
    // ...
    break;
}
}

char 字符的 switch case 例子:
char c{' '};
...
// char 类型使用 '' 来写 case 判断,如下例子:
switch (c) {
case 'A': {
    
    break;
}
default: break;
}
  • break 用于退出当前分支或当前代码块

case 分支代码最后必须加上 break 退出当前分支,否则会执行到下一个 case 分支代码

  • default 默认分支

default 默认分支属于可选分支,建议最后都写上,可以写上 (default: break;)

3 一些建议:

  • case 分支代码超过二行,用 { } 代码块编写代码;如下二种例子:
int a = 10;
int b = 20;
...
switch (a) {
case 0:     // 可以不用加上 {}
    a += 10;
    break;
case 1: {    // 超过二行代码,加上 {}
    a += 10;
    b -= 10;
    break;
}
default: 
    break;
}
  • 如果 {...} 代码块里面写的代码行数太多,建议编写成函数来调用;
int a{0};
...
switch (a) {
case 0:
    set_value(a);    // 添加函数调用
    break;
default: break;
}

4 课后练习:

  • 练习1:利用 std::random_device 产生 10000 组随机无符号整数,计算这 10000 组随机数除以 10 的余数,从 0 到 9 分别计算个数,把计算结果输出到屏幕

 附录:在线视频课程

【C++程序员必修第一课】C++基础课程

你可能感兴趣的:(c++,switch分支选择,C++基础课程,C++程序员员课程,C++课程)