C++中使用嵌套 if 语句

C++中使用嵌套 if 语句

经常需要检查一系列不同的条件,且很多条件依赖于前一个条件是否满足。为了满足这种需求,C++ 允许您对 if 语句进行嵌套。
嵌套 if 语句类似于下面这样:

if (expression1)
{DoSomething1;if(expression2)DoSomething2;elseDoSomethingElse2;
}
elseDoSomethingElse1;

假设有一个应用程序,用户可通过按 d 或 m 键,让应用程序执行除法或乘法运算。执行除法运算前,必须核实除数不为零。因此,除检查用户输入外,在用户要求程序执行除法运算时,还必须核实除数不为零。为此,可使用嵌套 if 语句,如以下的示例程序所示:

#include <iostream>
using namespace std;int main()
{cout << "Enter two numbers: " << endl;float num1 = 0, num2 = 0;cin >> num1;cin >> num2;cout << "Enter 'd' to divide, anything else to multiply: ";char userSelection = '\0';cin >> userSelection;if (userSelection == 'd'){cout << "You wish to divide!" << endl;if (num2 != 0)cout << num1 << " / " << num2 << " = " << num1 / num2 << endl;elsecout << "Division by zero is not allowed" << endl;}else{cout << "You wish to multiply!" << endl;cout << num1 << " x " << num2 << " = " << num1 * num2 << endl;}return 0;
}

输出:

Enter two numbers:
45
9
Enter 'd' to divide, anything else to multiply: m
You wish to multiply!
45 x 9 = 405

再次运行的输出:

Enter two numbers:
22
7
Enter 'd' to divide, anything else to multiply: d
You wish to divide!
22 / 7 = 3.14286

最后一次运行的输出:

Enter two numbers:
365
0
Enter 'd' to divide, anything else to multiply: d
You wish to divide!
Division by zero is not allowed

这是运行程序三次得到的输出,每次提供的输入都不同。正如您看到的,程序每次的执行路径都不同。相比于上一节的示例程序,这个程序有很多地方不同:

  • 为了更好地处理小数,将输入存储到了 float 变量中,执行除法运算时这很重要。
  • if 条件与程序清单 6.1 中不同,不再检查用户按的是否是 m 键,而在第 14 行使用了表达式 (userSelection == 'd'),该表达式在用户输入字符 d 时为 true。如果用户输入了 d,则执行除法运算。
  • 鉴于这个程序将两个数相除,且除数由用户输入,因此必须核实除数不为零。这是在第 17 行使用嵌套的 if 语句实现的。

需要根据多个条件执行不同任务时,嵌套 if 语句很有用,这个程序演示了这一点。

提示:

这里使用制表符(空白)对嵌套语句进行了缩进,这是可选的,但可极大地改善嵌套 if 语句的可读性。很多较新的 IDE 都会自动缩进代码。

该文章会更新,欢迎大家批评指正。

推荐一个零声学院的C++服务器开发课程,个人觉得老师讲得不错,
分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,
fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,
TCP/IP,协程,DPDK等技术内容
点击立即学习:C/C++后台高级服务器课程

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

调控一体化技术支持系统的建设基础

调控一体化技术支持系统的建设是结合龙岩 EMS 系统建设的基础 上完善升级实现的。系统采用的是山东积成电子的 iES600 系统。系统服务器主机 主要采用惠普小型机&#xff0c;软件平台模块化部署。 &#xff08;二&#xff09;调控一体化技术支持系统的建设环境 1、机房环境…

自建音乐服务器Navidrome之一

这里写自定义目录标题 1.1 官方网站 2. Navidrome 简介2.1 简介2.2 特性 3. 准备工作4. 视频教程5. 界面演示5.1 初始化页5.2 专辑页 前言 之前给大家介绍过 Koel 音频流服务&#xff0c;就是为了解决大家的这个问题&#xff1a;下载下来的音乐&#xff0c;只能在本机欣赏&…

「Redis」1. 数据类型的底层实现

前言&#xff1a;在这篇博文中&#xff0c;我们将简单总结在面试中怎么回答Redis数据类型的底层实现。 因为面试时间就那么点&#xff0c;言简意赅的描述自己会的知识显得尤为重要‼️ 文章目录 0.1. String 的底层实现原理0.2. 列表的底层实现原理0.3. 字典的底层实现原理0.4.…

​放弃数据库,改用Kafka!

长期以来&#xff0c;数据库一直充当着记录系统&#xff0c;它们以可靠且持久的方式存储和管理关键数据&#xff0c;也赢得了大多数公司的信赖。 但时代在变。许多新兴趋势正在影响当今数据的存储和管理方式&#xff0c;不得不让一些技术决策者们重新考虑数据存储究竟还有哪些…

敏感接口权限校验

前端校验 &#xff08;从前端或者从token里面拿一下&#xff09;&#xff0c;看一下用户有没有这个页面的权限&#xff08;但是一般不用&#xff0c;因为nodejs也可以写后端&#xff0c;但是放到前端去校验不安全&#xff09; 后端校验 需要梳理敏感数据接口&#xff0c;将这…

重写 UGUI

重写Button using UnityEngine; using UnityEngine.UI; public class MyButton : Button {[SerializeField] private int _newNumber; }using UnityEditor;//编辑器类在UnityEditor命名空间下。所以当使用C#脚本时&#xff0c;你需要在脚本前面加上 "using UnityEditor&q…

Hive-安装与配置(1)

&#x1f947;&#x1f947;【大数据学习记录篇】-持续更新中~&#x1f947;&#x1f947; 个人主页&#xff1a;beixi 本文章收录于专栏&#xff08;点击传送&#xff09;&#xff1a;【大数据学习】 &#x1f493;&#x1f493;持续更新中&#xff0c;感谢各位前辈朋友们支持…

C中的strtol()函数

C 库函数strtol原型为&#xff1a; long int strtol(const char *str, char **endptr, int base) &#xff1b; 其运行过程为&#xff1a; 把参数 str 所指向的字符串根据给定的 base 转换为一个长整数&#xff08;类型为 long int 型&#xff09;&#xff0c;并将该长整数转换…

微信小程序修改vant组件样式

1 背景 在使用vant组件开发微信小程序的时候&#xff0c;想更改vant组件内部样式&#xff0c;达到自己想要的目的&#xff08;van-grid组件改成宫格背景色为透明&#xff0c;默认为白色&#xff09;&#xff0c;官网没有示例&#xff0c;通过以下几步修改成功。 2 步骤 2.1 …

随机森林算法

介绍 随机森林是一种基于集成学习的有监督机器学习算法。随机森林是包含多个决策树的分类器&#xff0c;一般输出的类别是由决策树的众数决定。随机森林也可以用于常见的回归拟合。随机森林主要是运用了两种思想。具体如下所示。 Breimans的Bootstrap aggregatingHo的random …

重装系统全流程

重点&#xff1a; 下载镜像网址&#xff1a;下载 Windows 10 (microsoft.com) 不过不用下载&#xff0c;你的美均相U盘里面有下载好的Win10系统 重点注意&#xff0c;重启后拔优盘&#xff0c;安装时不要联网

PID串行多闭环控制与并行多闭环控制的优缺点分析和应用比较

导言&#xff1a; 在自动控制领域&#xff0c;PID控制器是一种经典的控制策略&#xff0c;被广泛应用于各种工业和非工业过程。随着控制系统的复杂性增加&#xff0c;PID串行多闭环控制和PID并行多闭环控制成为解决复杂控制问题的重要方法。本文将从优点和缺点的角度对这两种控…

Web服务器简介及HTTP协议

一、Web Server&#xff08;网页服务器&#xff09; 一个 Web Server 就是一个服务器软件&#xff08;程序&#xff09;&#xff0c;或者是运行这个服务器软件的硬件&#xff08;计算机&#xff09;。其主要功能是通过 HTTP 协议与客户端&#xff08;通常是浏览器&#xff08…

浏览器输入 URL 地址,访问主页的过程

分析&回答 浏览器解析域名&#xff1b;TCP建立连接&#xff1b;浏览器向服务器发送HTTP请求&#xff1b;服务器解析请求并返回HTTP报文&#xff1b;浏览器解析并渲染页面&#xff1b;断开连接。 反思&扩展 域名解析的流程 查找浏览器缓存——我们日常浏览网站时&am…

(二十)大数据实战——Flume数据采集的基本案例实战

前言 本节内容我们主要介绍几个Flume数据采集的基本案例&#xff0c;包括监控端口数据、实时监控单个追加文件、实时监控目录下多个新文件、实时监控目录下的多个追加文件等案例。完成flume数据监控的基本使用。 正文 监控端口数据 ①需求说明 - 使用 Flume 监听一个端口&am…

设计模式系列-创建者模式

一、上篇回顾 上篇我们主要讲述了抽象工厂模式和工厂模式。并且分析了该模式的应用场景和一些优缺点&#xff0c;并且给出了一些实现的思路和方案,我们现在来回顾一下&#xff1a; 抽象工厂模式&#xff1a;一个工厂负责所有类型对象的创建&#xff0c;支持无缝的新增新的类型对…

kotlin 转 Java

今天突然想研究下有些kotlin文件转为Java到底长什么样&#xff0c;好方便优化kotlin代码&#xff0c;搞了半天发现一个非常简单的Android Studio或者Intellij idea官方插件Kotlin&#xff0c;Kotlin是插件的名字&#xff0c;真是醉了&#xff1b; 这里以AS为例&#xff0c;使用…

pnpm快速创建 Vue.js 项目(npm类似)

目录 pnpm 创建一个 Vue.js 项目 前提准备&#xff1a; 运行创建命令&#xff1a; 选择项目配置&#xff1a;&#xff08;按需选择&#xff09; cd 项目名&#xff1a;&#xff08;进入项目终端&#xff09; 安装项目依赖&#xff1a; 运行项目&#xff1a; pnpm 创建一…

[FFmpeg] 常用ffmpeg命令

去水印 ffmpeg -i water.jpeg -strict -2 -vf delogox300:y250:w56:h18:show0 no_water.jpeg 打时间戳 ffmpeg -i perf_60Hz_Raw.mp4 -vf "drawtextfontsize160:fontcolorred:text%{pts\:hms}" -c:v libx264 -an -f mp4 perf_output.mp4 -y ffmpeg -i perf_8k.mp4 -v…

枚举的简单介绍

目录 概念&#xff1a; 枚举的声明&#xff1a; 枚举的使用&#xff1a; 枚举的取值&#xff1a; 枚举的优点&#xff1a; #define的功能&#xff1a; 而与#define对比&#xff0c;枚举的优点有&#xff1a; 概念&#xff1a; 枚举顾名思义就是⼀⼀列举。 把可能的取值…