笔记13:switch多分支选择语句

引例:

输入1-5中的任意一共数字,对应的打印字符A,B,C,D,E

int num = 0;
printf("Input a number[1,5]:");
scanf("%d",&num);
if( num == 1)
    printf("A\n");
else 
if(num==2)
    printf("B\n");
else if(num== 3)
    printf("C\n");
else 
if(num == 4)
    printf("D\n");
else 
if(num ==5 )
    printf("E\n");
else
    printf("Invalid Inut\n");

问题:有没有更加简洁的多分支选择结构语句?

switch-更简洁的多分支选择结构

wsitch(var)
{
    case x;
    //语句x1;
    //......var == x,时,执行这里的语句
    //语句xn;
    break;//每个分支代码的最后必须加上break,否则将继续向下执行。
    
    case y;
    //语句y1;
    //......var == y,时,执行这里的语句
    //语句yn;
    break;

    case z;
    //语句z1;
    //......var == z,时,执行这里的语句
    //语句zn;
    break;
    
    default;//默认情况,执行default的语句
}

示例分析:

#include<stdio.h>
int main( )
{
	int a= 1;//先定义三个变量
	int b = 2;
	char sign =0;//char是只有一个的整型

	printf("Input a sign:");//打印字符串
	scanf("%c",&sign);//输入字符
	getchar();//解决闪退问题

	switch(sign)//进行多分支选择
	{
		case'+'://如果键盘上输入的是+,就是进行加法运算,然后跳出;
			printf("%d + %d = %d\n",a, b, a+ b);
			break;
		case'-'://如果键盘上输入的是-,就是进行减法运算,然后跳出;
			printf("%d-%d=%d\n",a,b,a-b);
			break;
		default://如果上面都不满足;
			printf("Unsupport sign:%c\n", sign);
	}

	getchar();
	return 0;
}

运行结果:

更改1

现在根据所学,对引例进行更改;

#include<stdio.h>
int main( )
{
	int num= 0;//先定义三个变量

	printf("Input a number[1,5]:");//打印字符串
	scanf("%d",&num);//输入字符
	getchar();//解决闪退问题

	switch( num )//进行多分支选择
	{
		case 1://如果键盘上输入的是1,就是A,然后跳出
			printf("A\n");
			break;
		case 2://如果键盘上输入的是2,就是B,然后跳出
			printf("B\n");
			break;
		case 3://如果键盘上输入的是3,就是C,然后跳出
			printf("C\n");
			break;
		case 4://如果键盘上输入的是4,就是D,然后跳出
			printf("D\n");
			break;
		case 5://如果键盘上输入的是5,就是E,然后跳出
			printf("E\n");
			break;
		default://如果上面都不满足
			printf("Invalid Inut\n");
	}

	getchar();
	return 0;
}

运行结果:

switch 实验小结

1.switch 仅能适用于离散变量或值(整数值 ),如果用浮点型就会报错;
2.case 是分支入口,匹配成功后执行case 下的语句;
3.当语句全部执行后,需要使用 break 跳出执行分支;
4.default 分支不是必须的(类似于 else 分支不是必须的);

示例分析:

#include<stdio.h>
int main()
{
    int num = 0;

    printf("Input a number:");
    scanf("%d",&num);
	getchar();

    switch( num % 3)//%整除3取余数
    {
        case 0:
            printf("Object Number:%d\n",num);//需要的数
			break;//不要忘记break,如果没有就会把所有需要打印的都打印了
		case 1:
            printf("Bigger!\n");//数大了,减一就可以除三
			break;
		case 2:
            printf("Smaller!\n");//数小了,减一就可以除三
			break;
    }
    
    getchar();
    return 0;
}

运行结果:

switch语句的分支合并技巧

switch(var)
{
    case a;
    case b;
    语句1;//var == a||var == b时,执行这里的语句;
    ......
    语句n;
    break;
   
    case c;
    case d;
    语句1;//var == a||var == b时,执行这里的语句;
    ......
    语句n;
    break;

    default;
    ......
}

更改2

#include<stdio.h>
int main( )
{
	int num= 0;//先定义三个变量

	printf("Input a number[1,5]:");//打印字符串
	scanf("%d",&num);//输入字符
	getchar();//解决闪退问题

	switch( num )//进行多分支选择
	{
		case 1:
		case 2:
		case 3:
		case 4:
		case 5:
			printf("%c\n" , 'A'+(num-1) );
			//B-A=1,(B=A+1);C-A=2,(C=A+2)...E-A=4,(E=A+4)
			//注意,时‘’,不是“”
		break;

		default://如果上面都不满足
			printf("Invalid Inut\n");
	}

	getchar();
	return 0;
}

运行结果:

小结:

1.switch 是一种更简洁的分支选择结构
2.switch 仅能适用于整数(小数不可用)
3.case 是分支入口,匹配成功后执行 case 下的语句
4.当语句全部执行后,需要使用 break 跳出执行分支
5.多个 case 可合并在一起,执行相同的语句

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

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

相关文章

【大数据】—FIFA世界杯探索性分析(EDA)

引言 足球&#xff0c;作为全球最受欢迎的运动之一&#xff0c;拥有庞大的粉丝群体和深远的文化影响。自1930年首届FIFA世界杯举办以来&#xff0c;这项赛事已经成为全球体育盛事&#xff0c;吸引了数十亿观众的目光。世界杯不仅是各国足球技艺的较量&#xff0c;更是国家荣誉…

02STM32环境搭建新建工程

STM32环境搭建&新建工程 软件安装&#xff1a;开发方式&新建工程步骤&架构 个人心得 软件安装&#xff1a; 安装Keil5 MDK 安装器件支持包 软件注册 安装STLINK驱动 安装USB转串口驱动 开发方式&新建工程步骤&架构 STM32开发方式&#xff1a; 1.寄存器 …

笔记14:程序中的循环结构

生活中的循环现象&#xff1a; -日复一日&#xff0c;年复一年 -春夏秋冬&#xff0c;四季交替 -周日&#xff0c;周一&#xff0c;周二&#xff0c;周三&#xff0c;周四&#xff0c;周五&#xff0c;周六 -人生是一个轮回&#xff0c;多年后&#xff0c;又会回到最初的原点 …

APP渗透-android12夜神模拟器+Burpsuite实现

一、夜神模拟器下载地址&#xff1a;https://www.yeshen.com/ 二、使用openssl转换证书格式 1、首先导出bp证书 2、将cacert.der证书在kali中转换 使用openssl生成pem格式证书,并授予最高权限 openssl x509 -inform der -in cacert.der -out cacert.pem chmod 777 cacert…

容器:queue(队列)

以下是关于queue容器的总结 1、构造函数&#xff1a;queue [queueName] 2、添加、删除元素: push() 、pop() 3、获取队头/队尾元素&#xff1a;front()、back() 4、获取栈的大小&#xff1a;size() 5、判断栈是否为空&#xff1a;empty() #include <iostream> #include …

解决 MEX 文件 ‘xxx.mexw64‘ 无效: 找不到指定的模块。的问题

1.问题描述 在matlab R2021b中运行编译好后的gptoolbox工具箱中的函数[SVtemp,SFtemp,IF] selfintersect(V,F);报错如下 MEX 文件 E:\MATLAB_File\gptoolbox\mex\selfintersect.mexw64 无效: 找不到指定的模块。出错 offset_bunny (第 15 行) [SVtemp,SFtemp,IF] selfinter…

MATLAB-分类CPO-RF-Adaboost冠豪猪优化器(CPO)优化RF随机森林结合Adaboost分类预测(二分类及多分类)

MATLAB-分类CPO-RF-Adaboost冠豪猪优化器&#xff08;CPO&#xff09;优化RF随机森林结合Adaboost分类预测&#xff08;二分类及多分类&#xff09; 分类CPO-RF-Adaboost冠豪猪优化器&#xff08;CPO&#xff09;优化RF随机森林结合Adaboost分类预测&#xff08;二分类及多分类…

MySQL基础篇(三)数据库的修改 删除 备份恢复 查看连接情况

对数据库的修改主要指的是修改数据库的字符集&#xff0c;校验规则。 将test1数据库字符集改为gbk。 数据库的删除&#xff1a; 执行完该数据库就不存在了&#xff0c;对应数据库文件夹被删除&#xff0c;级联删除&#xff0c;里面的数据表全部被删除。 注意&#xff1a;不要随…

线程同步66666

1. 概述 当有多个线程访问同一个共享资源&#xff08;临界资源&#xff09;时&#xff0c;且不允许同时访问&#xff0c;那么就需要线程同步。常见的线程同步方式&#xff1a;互斥锁、读写锁、条件变量、信号量。 2. 互斥锁 互斥锁的方式可以简单概括为&#xff1a;锁定操作…

ros1仿真导航机器人 navigation

仅为学习记录和一些自己的思考&#xff0c;不具有参考意义。 1navigation导航框架 2导航设置过程 &#xff08;1&#xff09;启动仿真环境 roslaunch why_simulation why_robocup.launch &#xff08;2&#xff09;启动move_base导航、amcl定位 roslaunch why_simulation nav…

【OnlyOffice】桌面应用编辑器,插件开发大赛,等你来挑战

OnlyOffice&#xff0c;桌面应用编辑器&#xff0c;最近版本已从8.0升级到了8.1 从PDF、Word、Excel、PPT等全面进行了升级。随着AI应用持续的火热&#xff0c;OnlyOffice也在不断推出AI相关插件。 因此&#xff0c;在此给大家推荐一下OnlyOffice本次的插件开发大赛。 详细信息…

磁盘就是一个超大的Byte数组,操作系统是如何管理的?

磁盘在操作系统的维度看&#xff0c;就是一个“超大的Byte数组”。 那么操作系统是如何对这块“超大的Byte数组”做管理的呢&#xff1f; 我们知道在逻辑上&#xff0c;上帝说是用“文件”的概念来进行管理的。于是&#xff0c;便有了“文件系统”。那么&#xff0c;文件系统…

深圳晶彩智能ESP32-2432S028R实时观察LVGL9效果

深圳晶彩智能ESP32-2432S028R概述&#xff1a; 深圳晶彩智能出品ESP32-32432S028R为2.8寸彩色屏采用分辨率320x240彩色液晶屏&#xff0c;驱动芯片是ILI9431。板载乐鑫公司出品ESP-WROOM-32&#xff0c;Flash 4M。型号尾部“R”标识电阻膜的感压式触摸屏&#xff0c;驱动芯片是…

以腾讯为例,手把手教你搭建产品帮助中心

一个精心设计的产品帮助中心对于提高用户满意度和体验至关重要。腾讯&#xff0c;作为全球领先的互联网企业&#xff0c;通过其多样化的产品线&#xff08;包括微信、QQ、腾讯游戏、腾讯视频等&#xff09;吸引了亿万用户。下面将以腾讯为例&#xff0c;向您展示如何搭建一个高…

数据库系统原理 | 查询作业1

整理自博主本科《数据库系统原理》专业课自己完成的实验课查询作业&#xff0c;以便各位学习数据库系统概论的小伙伴们参考、学习。 *文中若存在书写不合理的地方&#xff0c;欢迎各位斧正。 专业课本&#xff1a; ​ ———— 本次实验使用到的图形化工具&#xff1a;Heidisql…

进程的控制-ps和kill命令

ps 查看进程信息 部分参数&#xff1a; a : 显示现行终端机下的所有程序&#xff0c;包括其他用户的程序 u: 以用户为主的格式来显示程序状况 x: 显示所有程序&#xff0c;不以 终端机来区分 kill 向指定的进程发送信号 kill 可将指定的信息送至程序。预设的信息为 SIG…

linux下高级IO模型

高级IO 1.高级IO模型基本概念1.1 阻塞IO1.2 非阻塞IO1.3 信号驱动IO1.4 IO多路转接1.5 异步IO 2. 模型代码实现2.1 非阻塞IO2.2 多路转接-selectselect函数介绍什么才叫就绪呢&#xff1f;demoselect特点 2.3 多路转接-pollpoll函数介绍poll优缺点demo 2.4 多路转接-epoll&…

24西安电子科技大学马克思主义学院—考研录取情况

01、马克思主义学院各个方向 02、24马克思主义学院近三年复试分数线对比 PS&#xff1a;马院24年院线相对于23年院线增加15分&#xff0c;反映了大家对于马克思主义理论学习与研究的热情高涨&#xff0c;也彰显了学院在人才培养、学科建设及学术研究等方面的不断进步与成就。 6…

集成学习(一)Bagging

前边学习了&#xff1a;十大集成学习模型&#xff08;简单版&#xff09;-CSDN博客 Bagging又称为“装袋法”&#xff0c;它是所有集成学习方法当中最为著名、最为简单、也最为有效的操作之一。 在Bagging集成当中&#xff0c;我们并行建立多个弱评估器&#xff08;通常是决策…

限时免费!国产Sora快手可灵Web网页端及全新功能上线!国货之光!

大家好&#xff0c;我是程序员X小鹿&#xff0c;前互联网大厂程序员&#xff0c;自由职业2年&#xff0c;也一名 AIGC 爱好者&#xff0c;持续分享更多前沿的「AI 工具」和「AI副业玩法」&#xff0c;欢迎一起交流~ 快手可灵&#xff08;Kling&#xff09;这回是真的出息了&…