C++语法15 多分支结构(if多分支与switch结构)

news2024/10/6 1:35:44

if else if else 多分支结构基本框架

if(条件1)
    语句1;       //满足条件1就执行
else if(条件2)
    语句2;       //不满足条件1,但是满足条件2执行
else if (条件3)
    语句3;       //不满足条件1和条件2,满足条件3执行
......
else 语句 n;     //不满足上面所有条件就执行

if开始,中间都是else if,最后是以else结束是对上面所有条件的否定

不同三角形

我们已经知道三角形的成立条件是任意两边之和大于第三边了。按照边长的特性我们还将三角形分为等边,等腰和一般三角形。

等腰三角形就是有两边相等,等边三角形就是三边都相等,一般三角形就是任意两边都不等。

训练:特殊三角形

输入三角形的三边,判断它是何种类型的三角形?是等边的话输出'DB',仅是等腰的话输出'DY',除此之外都属于一般三角形,输出'YB',如果不能构成三角形则输出'NO'。(1<=a<=10,1<=b<=10,1<=c<=10)

【输入格式】三个整数a,b,c,分别代表三条边的边长

【输出格式】DB或者DY或者YB或者NO

【输入样例】3 4 3

【输出样例】DY

解析

判断是否是三角形:首先要判断这三条边是否能构成三角形,即要满足任意两边之和要大于第三边

是三角形:除去上面的情况,则能构成三角形,紧接着判断什么类型的三角形

参考代码

#include<iostream>
using namespace std;
int main( )
{
    int a,b,c;
    cin>>a>>b>>c;
    if(a+b<=c||a+c<=b||b+c<=a)
        cout<<"NO";
    else  if(a==b&&a==c)
        cout<<"DB";
    else  if(a==b||a==c||b==c)
        cout<<"DY";
    else  cout<<"YB";
    return 0;
}

训练:电脑故障

学校组织的某次竞赛一共有99位学生参加,考试结束后老师对编号从1-99的每一位同学的成绩进行名次标注,并在电脑上记录。结果电脑出现了故障,将第1名到第9名改为了10,20,30...90 名,将第10,20,30...90 名改为了第1到第9名。竞赛成绩前50名(包括50名)的同学获得奖励,后49名没有奖励。在电脑故障后随意输入一个同学的名次n,输出在电脑故障之前他应该是什么名次,和之前是否应该获得奖励。(1<=a<=100)

【输入格式】一个整数n,表示故障后的名次

【输出格式】故障前的名次和是否获奖,用空格隔开(获得奖励输出Yes,没有获得输出No)

【输入样例】70

【输出样例】7 Yes

解析

调整现在的10-90名:现在的10-90名其实是1-9名,将10-90调整回1-9,需要将这个数被10整除

调整现在的1-9名:现在的1-9名其实是10-90名,将1-9调整回10-90,需要将这个数乘以10

参考代码

#include<iostream>
using namespace std;
int main( )
{
    int n;
    cin>>n;
    if(n%10==0)     n=n/10;
    else if(n<10)    n=n*10;
    if(n<=50)    cout<<n<<" Yes";
    else    cout<<n<<" No";
    return 0;
}

什么是switch结构?

应用条件语句可以很方便地使程序实现分支,但是出现分支比较多的时候,虽然可以用嵌套的if语句来解决,但是程序结构会显得复杂,其至凌乱。为方便实现多情况选择,C++提供了一种switch开关语句。

基本框架

 switch(表达式)
  {
         case 常量表达式1:
                  语句序列1;
                  break;
         ……
         case  常量表达式n:
                   语句序列n;
                   break;
         default:
                  语句序列n+1;
 }

该语句中可以使用一次或多次case标号,但只能使用一次default标号,或者省略整个default部分

多个case标号也允许使用在同一个语句序列的前面

每个语句标号有保留字case和后面的常量表达式及冒号组成,每个常量表达式通常为字面常量,如常数或字符。

switch语句的执行过程

计算出switch后面圆括号内表达式的值,假定为M,若它不是整型,系统将自动舍去其小数部分,只取其整数部分作为结果值。

依次计算出每个case后常量表达式的值,假定它们为M1、M2、…,同样若它们的值不是整型,则自动转换为整型。

让M依次同M1、M2、…进行比较,一旦遇到M与某个值相等,则就从对应标号的语句开始执行;在碰不到相等的情况下,若存在default子句,则就执行其冒号后面的语句序列,否则不执行任何操作;当执行到复合语句最后的右花括号时就结束整个switch语句的执行。

注意事项

case语句后的各常量表达式的值不能相同,否则会出现错误码。

每个case或default后,可以包含多条语句,不需要使用“{”和“}”括起来。

各case和default子句的先后顺序可以变动,这不会影响程序执行结果。

default子句可以省略,default后面的语句末尾可以不必写break。

训练:计算器

一个最简单的计算器支持+,-,*,/四种运算。输入只有一行:两个参加运算的数和一个操作符(+,-,*,/)。输出运算表达式的结果。考虑下面两种情况:
(1)如果出现除数为0的情况,则输出:Divided by zero!
(2)如果出现无效的操作符(即不为+,-,*,/之一),则输出:Invalid operator!
【输入样例】34  56  +
【输出样例】90

解 析

设num1、num2存放两个参加运算的操作数,op存放操作符。

  • 当op为“+”号时,实现加法操作。
  • 当op为“-”号时,实现减法操作。
  • 当op为“*”号时,实现乘法操作。
  • 当op为“/”号时,判断b值,如果不为0,则实现除法操作,如果为0,则输出:Divided by zero!。
  • 当op不是上面四种操作符时,输出:“Invalid operator!”。

参考代码

float num1,num2;
char op;
cin>>num1>>num2>>op;
switch(op)
{
        case '+': cout<<num1+num2;break;
        case '-': cout<<num1-num2;break;
        case '*': cout<<num1*num2;break;
        case '/':if(num2!=0) cout<<num1/num2;break;
        else cout<<"Divided by zero!";break;
        default: cout<<"Invalid operrator!";
}


从入门到算法,再到数据结构,查看全部文章请点击此处icon-default.png?t=N7T8http://bigbigli.com/

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

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

相关文章

【链表经典面试题】LeetCode138.复制带随机指针的链表(链表深拷贝)

&#x1f4c7;文章目录 &#x1f680;题目描述&#x1f680;思路1&#xff1a;&#x1f680;思路2&#xff1a;&#x1f680;完整代码 &#x1f680;题目描述 解读&#xff1a; 题目意思就是 给你一个链表 这个链表中除了有next指针之外 还有一个指向这个链表的随机位置的一个指…

在哪里可以查到一手的标讯信息?

标讯信息集招投标讯息的简称。在市场上&#xff0c;标讯是一种非常关键的信息&#xff0c;包括招标公告&#xff0c;文件&#xff0c;截止日期等关键内容&#xff0c;便于需求方和供应商进行业务合作。 对于企业来说&#xff0c;及时获取到最新的标讯信息是非常重要的&#xf…

安装VS Code 提示This User Installer is not meant to be run as an Administrator问题

目录预览 一、问题描述二、原因分析三、解决方案四、参考链接 一、问题描述 在vs code官网&#xff08;https://code.visualstudio.com/&#xff09;下载安装包&#xff0c;显示如下提示信息&#xff1a; This User Installer is not meant to be run as an Administrator.…

【vue大作业-端午节主题网站】【预览展示视频和详细文档】

vue大作业-端午节主题网站介绍 端午节&#xff0c;又称为龙舟节&#xff0c;是中国的传统节日之一&#xff0c;每年农历五月初五庆祝。这个节日不仅是纪念古代爱国诗人屈原的日子&#xff0c;也是家人团聚、共享美食的时刻。今天&#xff0c;我们非常高兴地分享一个以端午节为…

【字符串解析】IP地址字段解析提取函数接口

在嵌入式业务逻辑中&#xff0c;我们有时需要从配置文件、串口或者服务端接收的消息数据中进行字符串解析&#xff0c;来提取需要的目标字符串字段。通常我们会调用字符串处理相关的函数&#xff0c;例如strstr&#xff0c;strchr&#xff0c;sscanf等&#xff0c;再结合指针偏…

【验证码识别】Yolov8实战某验3空间推理点选验证码,目标检测,语义分割,颜色分类。

【验证码识别】Yolov8实战某验3空间推理点选验证码&#xff0c;目标检测&#xff0c;语义分割&#xff0c;颜色分类。 文章目录 【验证码识别】Yolov8实战某验3空间推理点选验证码&#xff0c;目标检测&#xff0c;语义分割&#xff0c;颜色分类。声明1.空间推理验证码&#xf…

C# OpenCvSharp 车牌颜色识别

C# OpenCvSharp 车牌颜色识别 目录 效果 项目 代码 下载 效果 项目 代码 using OpenCvSharp; using System; using System.Diagnostics; using System.Drawing; using System.Windows.Forms; namespace OpenCvSharp_Demo { public partial class Form1 : Form { …

采购芯片时细心,再细心!

检查原理图&#xff0c;采购时候的细心对照所费的时远远少于焊完找BUG的时间&#xff01;&#xff01;&#xff01; 购买芯片的时候不光看芯片名称&#xff0c;封装&#xff0c;丝印也要看&#xff0c;如果不一样必须对照两者的引脚图仔细观察是否一样&#xff01;&#xff01…

扭蛋机小程序:深度探索虚拟寻宝之旅的乐趣

引言 扭蛋机小程序&#xff0c;这个融合了传统与创新的虚拟寻宝乐园&#xff0c;已经吸引了无数玩家的目光。在这个充满惊喜和挑战的虚拟世界里&#xff0c;每一个扭蛋都可能蕴藏着无尽的宝藏。本文将带您深入探索扭蛋机小程序的魅力所在&#xff0c;体验一场别开生面的虚拟寻…

上位机图像处理和嵌入式模块部署(h750 mcu vs f407)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 在目前工业控制上面&#xff0c;f103和f407是用的最多的两种stm32 mcu。前者频率低一点&#xff0c;功能少一点&#xff0c;一般用在低端的嵌入式设…

【数据结构与算法】运算受限的线性表(栈,队列)重要知识点详解

栈和队列是什么样的线性表? 栈&#xff08;Stack&#xff09;和队列&#xff08;Queue&#xff09;都是运算受限的线性表。 栈&#xff1a;栈是一种特殊的线性表&#xff0c;只允许在一端&#xff08;通常称为“顶端”&#xff09;进行插入和删除操作。栈遵循后进先出&#x…

CENTOS7.9下服务器双网卡bond模式6配置示例

​1.bond口的特点 bond口通过将多个网口进行聚合&#xff0c;多个网口聚合后一方面实现了大带宽传输&#xff0c;另外多网口聚合后也同时具有冗余特性&#xff0c;当其中一个网口down掉后&#xff0c;其他网口会继续转发流量&#xff0c;不会导致流量中断。 2.使用条件 当环境…

参数搜索流形学习

目录 一、网格搜索1、介绍2、代码示例 二、HalvingGridSearch1、介绍2、代码示例 三、随机搜索1、介绍2、代码示例 三、贝叶斯搜索1、介绍2、代码示例 四、参数搜索总结五、流形学习1、LLE1、介绍2、官方代码示例 2、t-SNE1、介绍2、官方代码示例 一、网格搜索 1、介绍 网格搜…

安卓手机最近删除照片如何找回?这些技巧来帮你!

我们时常会在手机上拍摄大量照片&#xff0c;记录下生活中的每一个瞬间。然而&#xff0c;由于存储空间不足、设备更新等原因&#xff0c;我们可能会不小心删除一些照片。最近删除照片如何找回&#xff1f;通过本文的介绍&#xff0c;您将了解到如何轻松找回最近删除的照片&…

2025计算机毕业设计选题题目推荐-毕设题目汇总大全

选题在于精&#xff0c;以下是推荐的容易答辩的选题&#xff1a; SpringBoot Vue选题: 基于SpringBoot Vue家政服务系统 基于SpringBoot Vue非物质文化遗产数字化传承 基于SpringBoot Vue兽医站管理系统 基于SpringBoot Vue毕业设计选题管理系统 基于SpringBoot Vue灾害应急救援…

群辉USB Copy套件的使用

目录 一、套件安装 二、插入USB设备 三、使用 四、故障排除 有了群辉NAS后,很多U盘、移动硬盘的数据需要备份到NAS中,这时就可以考虑使用USB Copy这个套件了。 USB Copy 乃是群晖上可用于和外接存储设备进行文件复制的一个工具,我常常借助它把外置存储设备的文件拷贝至…

程序猿大战Python——文件操作、异常、模块——异常介绍

什么是异常 目标&#xff1a;了解什么是异常&#xff1f; 异常指的是Python程序发生的不正常事件。 有时候&#xff0c;异常可称为错误。 当检测到一个错误时&#xff0c;Python解释器就无法继续执行&#xff0c;反而出现了一些错误的提示&#xff0c;这就是异常&#xff0c;…

stable diffusion-v2.1-pytorch以文生图推理模型

Stable Diffusion Version 2 论文 DENOISING DIFFUSION IMPLICIT MODELS https://arxiv.org/pdf/2010.02502 模型结构 通过串联或更通用的交叉注意机制来调节LDM 算法原理 通过将图像形成过程分解为去噪自动编码器的顺序应用&#xff0c;扩散模型&#xff08;DM&#xff…

Thermo Fisher赛默飞TSQ单杆电源维修1R120380-0001

美国热电质朴分析仪电路板维修&#xff0c;液相色谱质谱联用仪维修&#xff0c;Thermo Fisher赛默飞世尔光谱仪IS10 IS5赛默飞主板维修。 公司仪器维修设备备有三相交流电源,变频电源&#xff0c;无油空压气源&#xff0c;标准化的维修平台、电子负载&#xff0c;耐压测试仪、老…

【YOLOv8改进[注意力]】使用MLCA混合局部通道注意力改进c2f + 含全部代码和详细修改方式 + 手撕结构图

本文将进行在YOLOv8中使用MLCA混合局部通道注意力改进c2f 的实践,助力YOLOv8目标检测效果的实践,文中含全部代码、详细修改方式以及手撕结构图。助您轻松理解改进的方法。 改进前和改进后的参数对比: 目录 一 MLCA 二 使用MLCA混合局部通道注意力改进c2f 1 整体修改