C++重新入门-C++判断语句

目录

1.if语句

嵌套 if 语句

2.switch语句

工作原理

语法

示例

3.三元运算符

示例

注意事项


判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。

下面是大多数编程语言中典型的判断结构的一般形式:

1.if语句

 if 语句用于根据条件的真假执行不同的代码块。其语法如下:

if (condition) {
    // 在条件为真时执行的代码块
} else {
    // 在条件为假时执行的代码块
}
  • condition 是一个表达式,当其值为真(非零)时执行 if 代码块,否则执行 else 代码块(如果有的话)。
  • 如果 else 代码块被省略,则在条件为假时不执行任何代码。

 示例:

int x = 10;

if (x > 5) {
    cout << "x is greater than 5" << endl;
} else {
    cout << "x is not greater than 5" << endl;
}

除了单个 if 语句外,还可以使用多个 if 语句来实现多重条件判断。也可以使用 else if 来检查多个条件,这样可以避免每个条件都被检查一遍,提高效率。

假设有一个问题,我们需要根据成绩判断学生的等级,并且按照顺序判断,A 为优秀(90-100),B 为良好(80-89),C 为及格(60-79),D 为不及格(0-59)。

如果我们使用多个 if 语句:

int score = 85;

if (score >= 90) {
    cout << "A - Excellent" << endl;
}
if (score >= 80 && score < 90) {
    cout << "B - Good" << endl;
}
if (score >= 60 && score < 80) {
    cout << "C - Passed" << endl;
}
if (score < 60) {
    cout << "D - Fail" << endl;
}

 在这种情况下,即使学生得到了 95 分,仍然会被检查其他的条件(80-89 和 60-79),这样增加了不必要的计算。

但是如果使用 else if

int score = 95;

if (score >= 90) {
    cout << "A - Excellent" << endl;
} else if (score >= 80) {
    cout << "B - Good" << endl;
} else if (score >= 60) {
    cout << "C - Passed" << endl;
} else {
    cout << "D - Fail" << endl;
}

当学生得到了 95 分时,首先检查第一个条件(90-100),因为满足条件,所以输出 "A - Excellent",然后跳出判断,不再执行后续的条件判断。这样能够提高程序的效率。

因此,使用 else if 可以在一定程度上提高程序的效率,避免不必要的条件检查。

嵌套 if 语句

可以在一个 ifelse 代码块内部嵌套另一个 if 语句,形成嵌套条件判断。

int x = 10;
int y = 20;

if (x == 10) {
    if (y == 20) {
        cout << "Both x and y are equal to 10 and 20 respectively" << endl;
    }
}

2.switch语句

 switch 语句是一种用于处理多个不同情况的控制流语句。它允许基于一个表达式的值,从多个可能的情况中选择一个执行。

switch (expression) {
    case value1:
        // 当 expression 等于 value1 时执行的代码
        break;
    case value2:
        // 当 expression 等于 value2 时执行的代码
        break;
    // 更多的 case 语句
    default:
        // 当 expression 不等于任何一个 case 时执行的代码
}
  • expression 是一个表达式,其值将与 case 子句中的值进行比较。
  • case 子句中的值必须是常量表达式(整数、字符、枚举等),不能是变量或其他非常量。
  • break 关键字用于退出 switch 语句。如果省略 break,则程序将会继续执行下一个 case 子句,直到遇到 breakswitch 结束。
  • default 是可选的,用于处理 expression 不等于任何一个 case 值时的情况。它类似于 else 语句,是可选的默认情况。

 

工作原理

switch 语句的工作方式是,它首先计算 expression 的值,然后在 case 子句中逐一与其比较,直到找到匹配的值或者执行到 default 子句。

一旦匹配到一个 case 子句,将会执行对应的代码块,并且跳出 switch 语句(除非没有 break 语句,这时会继续执行下一个 case)。

如果没有找到匹配的 case 子句,且有 default 子句,则执行 default 代码块。

 

int option = 2;

switch (option) {
    case 1:
        cout << "Option 1 selected" << endl;
        break;
    case 2:
        cout << "Option 2 selected" << endl;
        break;
    case 3:
        cout << "Option 3 selected" << endl;
        break;
    default:
        cout << "Invalid option" << endl;
}

在这个示例中,option 的值为 2,因此会执行第二个 case 子句中的代码,输出 "Option 2 selected"。

switch 语句是一种非常有用的控制流结构,可以用来处理多种选择情况,使代码更加简洁、清晰。但需要注意的是,switch 语句适用于离散的、有限的情况,不适合用来处理范围较广的情况。

嵌套 switch 是指在一个 switch 语句内部使用另一个 switch 语句。这种结构可以用于处理更复杂的条件情况,其中外部 switch 控制一组情况,而内部 switch 控制这些情况的子情况。

语法

嵌套 switch 的基本语法如下:

switch (expression1) {
    case value1:
        switch (expression2) {
            case value2:
                // 当 expression1 等于 value1 且 expression2 等于 value2 时执行的代码
                break;
            // 更多的 case 语句
            default:
                // 当 expression1 等于 value1 但 expression2 不等于任何一个 case 时执行的代码
        }
        break;
    // 更多的 case 语句
    default:
        // 当 expression1 不等于任何一个 case 时执行的代码
}

外部 switch 控制一个表达式 expression1,而内部 switch 控制另一个表达式 expression2。根据外部 switch 中的 case 子句的值,选择执行内部 switch 中对应的 case 代码块。

示例

假设我们要根据用户选择的产品和其对应的操作执行不同的操作。我们可以使用嵌套 switch 来处理这种情况。

int product = 1;
int action = 2;

switch (product) {
    case 1:
        switch (action) {
            case 1:
                cout << "Add product 1 to cart" << endl;
                break;
            case 2:
                cout << "Remove product 1 from cart" << endl;
                break;
            default:
                cout << "Invalid action for product 1" << endl;
        }
        break;
    case 2:
        switch (action) {
            case 1:
                cout << "Add product 2 to cart" << endl;
                break;
            case 2:
                cout << "Remove product 2 from cart" << endl;
                break;
            default:
                cout << "Invalid action for product 2" << endl;
        }
        break;
    default:
        cout << "Invalid product" << endl;
}

在这个示例中,外部 switch 控制产品,内部 switch 控制操作。根据用户选择的产品和操作,执行不同的操作。

3.三元运算符

? : 运算符是 C++ 中的条件运算符,也称为三元条件运算符。它是 C++ 中唯一的三元运算符,因为它需要三个操作数。它的基本语法如下:

condition ? value_if_true : value_if_false;

其中,condition 是一个表达式,如果它的值为真(非零),则表达式的结果为 value_if_true,否则表达式的结果为 value_if_false

示例

以下是一个简单的示例,说明了 ? : 运算符的使用:

int x = 10;
int y = (x > 5) ? 100 : 200;
cout << "Value of y: " << y << endl;

在这个示例中,如果 x > 5 的条件为真,则 y 的值为 100,否则 y 的值为 200。因为 x 的值是 10,因此 x > 5 的条件为真,所以 y 的值是 100

注意事项

  • value_if_truevalue_if_false 可以是任何表达式,包括变量、函数调用、算术运算等。
  • ? : 运算符的结果可以赋值给变量,也可以直接输出或用于其他表达式中。
  • 该运算符通常用于简单的条件判断,可以使代码更加简洁,但过度使用可能会降低代码的可读性,因此在使用时需要谨慎考虑。

总之,? : 运算符是一种简洁的条件表达式,在一行中完成条件判断和赋值的操作,常用于简单的条件赋值或输出。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/382708.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Rust基础拾遗--核心功能

Rust基础拾遗 前言1.所有权与移动1.1 所有权 2.引用3.特型与泛型简介3.1 使用特型3.2 特型对象3.3 泛型函数与类型参数 4.实用工具特型5.闭包 前言 通过Rust程序设计-第二版笔记的形式对Rust相关重点知识进行汇总&#xff0c;读者通读此系列文章就可以轻松的把该语言基础捡起来…

推荐知识付费源码,梦想贩卖机升级版

梦想贩卖机升级版&#xff0c;变现宝吸收了资源变现类产品的许多优势&#xff0c;并剔除了那些无关紧要的元素&#xff0c;使得本产品在运营和变现能力方面实现了质的飞跃。多领域素材资源知识变现营销裂变独立版本。 演示地址&#xff1a;runruncode.com/rjcx/19689.html

电商小程序03登录页面开发

目录 1 创建应用2 创建页面3 首页功能搭建4 登录页搭建5 设置叠加效果总结 小程序开发在经过需求分析和数据源设计之后&#xff0c;就可以进入到页面开发的阶段了。首先我们需要开发登录的功能。 登录功能要求用户输入用户名和密码&#xff0c;勾选同意用户协议和隐私协议&…

第77讲用户管理功能实现

用户管理功能实现 前端&#xff1a; views/user/index.vue <template><el-card><el-row :gutter"20" class"header"><el-col :span"7"><el-input placeholder"请输入用户昵称..." clearable v-model"…

JVM-类加载器 双亲委派机制

申明&#xff1a;文章内容是本人学习极客时间课程所写&#xff0c;文字和图片基本来源于课程资料&#xff0c;在某些地方会插入一点自己的理解&#xff0c;未用于商业用途&#xff0c;侵删。 什么是JVM JVM是Java Virtual Machine&#xff08;Java虚拟机&#xff09;的缩写&a…

Peter算法小课堂—背包问题

我们已经学过好久好久的动态规划了&#xff0c;动态规划_Peter Pan was right的博客-CSDN博客 那么&#xff0c;我用一张图片来概括一下背包问题。 大家有可能比较疑惑&#xff0c;优化决策怎么优化呢&#xff1f;答案是&#xff0c;滚动数组&#xff0c;一个神秘而简单的东西…

AI:125-基于深度学习的航拍图像中地物变化检测

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的关键代码,详细讲解供…

uniapp vue3怎么调用uni-popup组件的this.$refs.message.open() ?

vue2代码 <!-- 提示信息弹窗 --><uni-popup ref"message" type"message"><uni-popup-message :type"msgType" :message"messageText" :duration"2000"></uni-popup-message></uni-popup>typ…

【集合系列】TreeMap 集合

TreeMap 集合 1. 概述2. 方法3. 遍历方式4. 排序方式5. 代码示例16. 代码示例27. 代码示例38. 注意事项9. 源码分析 其他集合类 父类 Map 集合类的遍历方式 TreeSet 集合 具体信息请查看 API 帮助文档 1. 概述 TreeMap 是 Java 中的一个集合类&#xff0c;它实现了 SortedMap…

ChatGPT高效提问—prompt常见用法(续篇九)

ChatGPT高效提问—prompt常见用法(续篇九) ​ 如何准确地向大型语言模型提出问题,使其更好地理解我们的意图,从而得到期望的答案呢?编写有效的prompt的技巧,精心设计的prompt,获得期望的的答案。 1.1 增加条件 ​ 在各种prompt技巧中,增加条件是最常用的。在prompt中…

人工智能之大数定理和中心极限定理

大数定律 大数定律&#xff1a;是一种描述当试验次数很大时所呈现的概率性致的定律&#xff0c;由概率统计定义“频率收敛于概率”引申而来。换而言之&#xff0c;就是n个独立分布的随机变量其观察值的均值依概率收敛于这些随机变量所属分布的理论均值&#xff0c;也就是总体均…

精读《js 模块化发展》

1 引言 如今&#xff0c;Javascript 模块化规范非常方便、自然&#xff0c;但这个新规范仅执行了 2 年&#xff0c;就在 4 年前&#xff0c;js 的模块化还停留在运行时支持&#xff0c;10 年前&#xff0c;通过后端模版定义、注释定义模块依赖。对经历过来的人来说&#xff0c;…

区间dp 笔记

区间dp一般是先枚举区间长度&#xff0c;再枚举左端点&#xff0c;再枚举分界点&#xff0c;时间复杂度为 环形石子合并 将 n 堆石子绕圆形操场排放&#xff0c;现要将石子有序地合并成一堆。 规定每次只能选相邻的两堆合并成新的一堆&#xff0c;并将新的一堆的石子数记做该…

qt学习:串口

头文件 #include <QSerialPort> #include <QSerialPortInfo> 模块 QT core gui serialport 编程步骤 配置一个ui界面&#xff0c;五个QComboBox和一个按钮和一个QTextEdit 添加一个成员 private:QSerialPort *serial; 在构造函数中初始化ui端口列表和…

【数据结构和算法】--- 基于c语言排序算法的实现(2)

目录 一、交换排序1.1 冒泡排序1.2 快速排序1.2.1 hoare法1.2.2 挖坑法1.2.3 前后指针法 1.3 快速排序优化1.3.1 三数取中法选key1.3.2 递归到小的子区间使用插入排序 1.4 快排非递归版 二、归并排序2.1 归并排序2.1.1 递归版2.1.2 非递归版 一、交换排序 基本思想&#xff1a…

hexo 博客搭建以及踩雷总结

搭建时的坑 文章置顶 安装一下这个依赖 npm install hexo-generator-topindex --save然后再文章的上面设置 top: number&#xff0c;数字越大&#xff0c;权重越大&#xff0c;也就是越靠顶部 hexo 每次推送 nginx 都访问不到 宝塔自带的 nginx 的 config 里默认的角色是 …

磁盘分区和挂载

一、分区概念 1、基本概念 (1) 一块硬盘最多只能有4个主分区 (2) 其中一个(且最多只能有一个)主分区能作为扩展分区,而扩展分区不能写入数据,只能包含逻辑分区 2、格式化 分区之后的磁盘并不能直接使用&#xff0c;而是需要先进行格式化&#xff0c;又称为逻辑格式化。它是指…

掌握Go的加密技术:crypto/rsa库的高效使用指南

掌握Go的加密技术&#xff1a;crypto/rsa库的高效使用指南 引言crypto/rsa 库概览RSA 加密算法基本原理crypto/rsa 库的功能和应用 安装和基本设置在 Go 项目中引入 crypto/rsa 库基本环境设置和配置 密钥生成与管理生成 RSA 密钥对密钥存储和管理 加密和解密操作使用 RSA 加密…

【HTML+CSS】使用CSS中的Position与z-index轻松实现一个简单的自定义标题栏效果

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;web开发者、设计师、技术分享博主 &#x1f40b; 希望大家多多支持一下, 我们一起学习和进步&#xff01;&#x1f604; &#x1f3c5; 如果文章对你有帮助的话&#xff0c;欢迎评论 &#x1f4ac;点赞&a…

【数据结构与算法】【小白也能学的数据结构与算法】递归 分治 迭代 动态规划 无从下手?一文通!!!

&#x1f389;&#x1f389;欢迎光临&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;特别推荐给大家我的最新专栏《数据结构与算法&#xff1a;初学者入门指南》&#x1f4d8;&am…