【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++基础课程
相关文章:

【C++程序员必修第一课】C++基础课程-07:switch 分支选择
1 本课主要内容: 为什么需要有 switch 多分支选择?应用场景在哪里?switch 多分支选择的应用讲解:case, break,default 2 主要知识点: 为什么需要有 switch 多分支选择 思考一个问题,数学老师需要统计班上同…...

initramfs介绍
initramfs介绍 什么是initramfs? initramfs(Initial RAM Filesystem)是一种临时文件系统,它在Linux系统启动过程中被加载到内存中。它包含了必要的驱动程序、工具和配置文件,用于在内核启动后挂载真实的根文件系统之…...

数据结构与算法:二分查找(心得)
前言 前些天我做了一道题目,题目中要求使用二分查找,我便按照我心中的二分查找,信心满满的提交上去了。结果发现无限循环,后面我便去查阅了资料 二分查找的条件 用于查找的内容需要是有序的查找的数量只能是一个 二分查找的二种方…...

项目管理之分析项目特点的方法
在管理项目时,了解项目的目标和实现方法可以帮助我们更好地规划和执行项目。根据项目的目标和实现方法的不同,可以将项目分为四种类型:地、水、火和气。 对于工程项目,采用基于活动任务的计划管理方法,使用活动网络图…...

MyBatisPlus(二十一)乐观锁
使用场景 用于当有多个用户同时修改同一条数据的时候,只允许有一个修改成功。 实现原理 使用一个字段,用于记录数据的版本。 当修改数据时,会去检测当前版本是否是正在修改的版本,同时修改成功后会把 版本号 1。 实现方式 配…...

node 通过axios发送post请求(FormData)
方案一: const axios require(axios) const FormData require(form-data) const fs require(fs)const sdUpscaleOnAzure async (req, res) > {const data new FormData()data.append(image, fs.readFileSync(/temp/ai/sd/download/1.png))let config {hea…...

2024 王道考研-数据结构
第二章 线性表算法题(线性表的顺序表示) 二、综合应用题 01.从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删元素的值。空出的位 置由最后一个元素填补,若顺序表为空,则显示出错信息并退出运行。 算法思想:搜索整个顺序表…...

【疯狂Java讲义】Java学习记录(使用jar命令打包)
jar命令 把多个文件打包成一个压缩包——这个压缩包和WinZip的压缩格式是一样的。 区别在于jar压缩的文件默认多一个META-INF的文件夹,该文件夹里包含一个MANIFEST.MF的文件(清单)。 通常来说,得到的压缩包有3种(压缩格…...

数据库第一、二章作业
只为记录与分享 第1,2章作业.xls 题量: 34 满分: 100 一. 单选题(共34题) 1. (单选题)在数据库中,下列说法( )是不正确的。 A. 数据库避免了一切数据的重复B. 若系统是完全可以控制的,则系统可确保更新…...

将数组拆分成斐波那契序列
题目描述 示例 代码如下: public class SplitIntoFibonacci {LinkedList<Integer> res new LinkedList<>();public List<Integer> splitIntoFibonacci(String num) {if(num.length() < 3) return res;if(dfs(num, 0)) return res;return new…...

【Linux】:权限
朋友们、伙计们,我们又见面了,本期来给大家解读一下有关Linux的基础知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入门到精通 数…...

8年软件测试工程师感悟——写给还在迷茫中的朋友
这两天和朋友谈到软件测试的发展,其实软件测试已经在不知不觉中发生了非常大的改变,前几年的软件测试行业还是一个风口,随着不断地转行人员以及毕业的大学生疯狂地涌入软件测试行业,目前软件测试行业“缺口”已经基本饱和。当然&a…...

CleanMyMac苹果电脑清理软件是智商税吗?最全评测价格、清理效果一次说清
这是一篇CleanMyMac最全评测!价格、清理效果一次说清,告诉你它真不是智商税! 升级Ventura系统之前,我用的是CleanMyMac X绿色版(绝不提倡这个行为)。更新到Ventura之后,之前很多绿色软件失效,浪…...

【pytorch 中 torch.max 和 torch.argmax 的区别】
torch.max 和 torch.argmax 的区别 1.torch.max torch.max(input, dim, maxNone, max_indicesNone, keepdimFalse) -->> (Tensor, LongTensor) 作用:找出给定tensor的指定维度dim上的上的最大值,并返回最大值在该维度上的值和位置索引。 应用举…...

无效的 page.json [“window“] 页面.json配置了“window“: {“disableScroll“: true}
问题:启动小程序时报错 无效的 page.json ["window"] 页面 解决: app.json 全局配置才使用window对象,在单独的页面直接写disableScroll:true即可 //app.json中添加,window里面添加就可以了 "window": { …...

2023最新短视频配音软件~
随着互联网的迅猛发展,网络平台上的影视剧配音逐渐成为一种热门赚钱方式。那么,想要参与影视剧配音赚钱,就需要拥有一款好用的配音软件。下面我就为大家介绍一款最新的影视剧配音神器! 悦音配音 这是一款大家都在用的配音工具&am…...

【内网击穿工具 】NATAPP
内网穿透又叫内网映射,功能是把内网IP映射到公网,使公网也能轻松访问所搭建的服务。 内网与外网 外网指的是一个组织或网络中可公开访问的网络,即对外开放的网络。外网可以通过公共互联网进行访问 内网是相对于外网而言的,指的…...

vue 使用crypto.js解密后,用JSON.parse转义报错非空白格解决办法
问题: 用JSON.parse转义crypto解密后的json字符串会发生错误。如图: 原因: 那是因为crypto自己加了一些未可见的字符,所以用正常的JSON.parse(xxxx)会报错。 解决办法: JSON.parse(xxxx.replace(/[\u0000-\u001F\u…...

全景分割的自监督学习
在本章中,我们将第3章中讨论的SSL方法扩展到语义和全景分割任务。使用手动生成的标签训练的卷积神经网络通常用于语义或实例分割。 在精准农业中,自动化花朵检测方法使用监督模型和后处理技术,随着花朵的外观和数据采集条件的变化,这些技术可能无法始终如一地执行。我们提…...

基于python的23种设计模式
以下是基于Python实现的23种设计模式及代码段和详细解释: 1. 工厂模式(Factory Pattern) 简介 工厂模式是一种创建型设计模式,它允许客户端代码通过工厂方法创建对象,而无需直接实例化对象。在工厂方法模式中&#…...

屏幕录制视频编辑软件 Camtasia 2023 mac中文版软件功能
Camtasia 2023 mac是一款功能强大的屏幕录制和视频编辑软件,可以用于制作教育课程、演示文稿、培训视频等。它具有一系列工具和功能,包括屏幕录制、视频编辑、音频编辑、字幕、特效等,使用户可以轻松地创建高质量的视频内容。 Camtasia2023的…...

关于spring的xml文件中的xmlns,xsi,schemaLocation
关于spring xml文件中的xmlns,xsi:schemaLocation 首先我们看到的一个spring的配置文件大概如下面这个样子: <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans" //这表…...

mac-“准备安装时发生错误,请尝试重新运行此应用程序” + mac未能安装所需的固件更新
参考链接:参考 u盘安装时候遇到问题: 安装系统时候报错 解决方案: 根据u盘系统上进行格式化磁盘,(我选择的是APFS),命名Macintosh HD 抹完之后选择急救下。 然后退出磁盘工具,点击…...

二叉搜索树的详解及Map和Set的介绍
目录 1.二叉搜索树 1.1二叉搜索树的介绍 1.2.二叉搜索树的实现 1.2.1二叉搜索树的创建 1.2.2查找关键字 1.2.3插入 1.2.4删除 1.3二叉搜索树的性能分析 2.Map Map官方文档 2.1Map 的常用方法说明 2.2关于Map.Entry的说明,> 2.3注意事项 2.4reeMap和HashMap的区别 …...

【Android知识笔记】JNI专题
一、JNI 基础知识 JNI 的数据类型以及和Java层之间的数据转换 前面总结了一篇,这里不再展开,可以参考: JNI 的数据类型以及和Java层之间的数据转换 注:这些知识都收集自网络文章,比较零散,对于JNI基础来说应该够用了。主要是一些API的使用,记不住时当成手册来查询一下…...

C++面试题目汇总【持续更新】
面试题目汇总 C基础1. 面向对象是什么?[GPT]2. 面向对象的三大特征是什么?[GPT]3. 重载,重写,隐藏的区别?[GPT]4. 构造函数的类别有哪些?[GPT]5. 定义一个空类时,默认生成哪些函数?[…...

【PXIE301-211】青翼科技基于PXIE总线的16路并行LVDS数据采集、1路光纤数据收发处理平台
板卡概述 PXIE301-211是一款基于PXIE总线架构的16路并行LVDS数据采集、1路光纤收发处理平台,该板卡采用Xilinx的高性能Kintex 7系列FPGA XC7K325T作为实时处理器,实现各个接口之间的互联。板载1组64位的DDR3 SDRAM用作数据缓存。板卡具有1个FMC…...

WPF实现签名拍照功能
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...

基于RuoYi-Flowable-Plus的若依ruoyi-nbcio支持自定义业务表单流程的集成方法与步骤(二)
更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 前面讲了集成的后端部分内容,下面简单介绍一下前端的内容 1、前端生成的页面需要进行修改&…...

【Qt控件之微调框、进度条】QSpinBox、QDoubleSpinBox、QDial、QProgressBar介绍及使用
概述 QSpinBox类提供了一个微调框小部件。 QSpinBox适用于处理整数和离散的值集(例如,月份名称);对于浮点数值,请使用QDoubleSpinBox。 QSpinBox允许用户通过点击上下按钮或按键盘上的上下箭头来增加/减少当前显示的值…...