当前位置: 首页 > news >正文

【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+人数加1break;
case LevelType::LevelA:aNumber++;        // A人数加1break;
case LevelType::LevelBPlus:bPlusNumber++;    // B+人数加1break;
case LevelType::LevelB:bNumber++;        // B人数加1break;
default:cNumber++;       // 其他(C)人数加1break;
}
  • 哪些数据类型可用于 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++基础课程

http://www.lryc.cn/news/198932.html

相关文章:

  • initramfs介绍
  • 数据结构与算法:二分查找(心得)
  • 项目管理之分析项目特点的方法
  • MyBatisPlus(二十一)乐观锁
  • node 通过axios发送post请求(FormData)
  • 2024 王道考研-数据结构
  • 【疯狂Java讲义】Java学习记录(使用jar命令打包)
  • 数据库第一、二章作业
  • 将数组拆分成斐波那契序列
  • 【Linux】:权限
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • CleanMyMac苹果电脑清理软件是智商税吗?最全评测价格、清理效果一次说清
  • 【pytorch 中 torch.max 和 torch.argmax 的区别】
  • 无效的 page.json [“window“] 页面.json配置了“window“: {“disableScroll“: true}
  • 2023最新短视频配音软件~
  • 【内网击穿工具 】NATAPP
  • vue 使用crypto.js解密后,用JSON.parse转义报错非空白格解决办法
  • 全景分割的自监督学习
  • 基于python的23种设计模式
  • 屏幕录制视频编辑软件 Camtasia 2023 mac中文版软件功能
  • 关于spring的xml文件中的xmlns,xsi,schemaLocation
  • mac-“准备安装时发生错误,请尝试重新运行此应用程序” + mac未能安装所需的固件更新
  • 二叉搜索树的详解及Map和Set的介绍
  • 【Android知识笔记】JNI专题
  • C++面试题目汇总【持续更新】
  • 【PXIE301-211】青翼科技基于PXIE总线的16路并行LVDS数据采集、1路光纤数据收发处理平台
  • WPF实现签名拍照功能
  • 基于RuoYi-Flowable-Plus的若依ruoyi-nbcio支持自定义业务表单流程的集成方法与步骤(二)
  • 【Qt控件之微调框、进度条】QSpinBox、QDoubleSpinBox、QDial、QProgressBar介绍及使用
  • Python学习-----Day09