【C语言】细品分支结构——switch语句
©作者:凡人编程传
©系列:C语言初阶(适合小白入门)
©说明:以凡人之笔墨,书写未来之大梦
这一期我们介绍分支结构的最后一个语句,switch语句,希望你能在文章中有所收获,话不多说,直接开干。
文章目录
- ☾什么是swtich语句
- ☾switch语句的基本结构
- ☾switch语句的简单使用
- 实例1
- 实例2(switch嵌套)
- ☾总结
☾什么是swtich语句
switch语句是C预言中的多分支语句,当问题中需要进行多次分支时,那么使用if-else语句未免显得太过复杂,那么这种情况下就可以考虑使用switch语句.
☾switch语句的基本结构
switch(整形表达式)
{
case 整形常量表达式:
语句;
}
注意:
字符型也可以作为switch括号中的表达式,以及case后面的整形常量表达式,原因是因作为字符型原本使用ASCII码来表示,如字符a的ASCII码值就是97.
☾switch语句的简单使用
实例1
#include<stdio.h>
int main()
{int a;scanf("%d",&a); //若输入1,结果是什么?switch(a){case 1:printf("周一\n");case 2:printf("周二\n");case 3:printf("周三\n");case 4:printf("周四\n");case 5:printf("周五\n");case 6:printf("周六\n");case 7:printf("周日\n"); }
}``
运行结果如下:
问题来了,为什么输入了1,那么周一,二…全部打印了呢?
这就要引出另一个知识点了。
- case关键字的作用:像“”case 1“这样用来表示程序跳转的标识成为标签”,它用于和switch括号中的表达式值对应,表达式的值会寻找与它值相同的标签,从而执行标签(case)后的语句,像上例中输入a的值为1,则对应了case 1这个标签。此外C语言语法规定同一个switch语句中不可以出现两个相同的“标签”。如下图:
那么case知道是如何对应的了,也是对应case 1:,然后执行他后面的语句printf(“周一\n”);啊,别急还有一点没讲。
- break语句的作用:break语句用于结束整个switch语句,若switch语句中没有break语句(例如实例1)就会一直执行到switch语句中的最后一个语句才结束,这也是为什么输入1后还执行了printf(“周二\n”);等原本不属于case 1:控制的输出语句。那么我们不妨为实例1加上break语句:
#include<stdio.h>
int main()
{int a;scanf("%d",&a); //若输入1,结果是什么?switch(a){case 1:printf("周一\n");break;case 2:printf("周二\n");break;case 3:printf("周三\n");break;case 4:printf("周四\n");break;case 5:printf("周五\n");break;case 6:printf("周六\n");break;case 7:printf("周日\n"); break;}
}``
运行结果:
可见加上break语句后,程序乖乖仔执行完printf(“周一\n”);后跳出了整个switch语句。
3 default语句的作用:在分支中总有会有没有列举到的情况,这时候超出case语句控制的全部由default语句控制,如case语句只列举1-10,你输入11,这时候程序是没有对你回应超出输入范围的,这时候需要default语句来回应用户一个答复。如:
#include<stdio.h>
int main()
{int a;scanf("%d",&a); switch(a){case 1:printf("周一\n");break;case 2:printf("周二\n");break;case 3:printf("周三\n");break;case 4:printf("周四\n");break;case 5:printf("周五\n");break;case 6:printf("周六\n");break;case 7:printf("周日\n"); break;default:
7 printf("超出范围,请输入1-7之间的数\n");break;}
}``
运行结果:
实例2(switch嵌套)
上代码:
#include<stdio.h>
int main()
{int a = 1, b = 2;switch (a){case 1:b++;case 2:a++;case 3:switch (a){case 1:a++;case 2:b++; a++;break;}case 4:b++;break;default:break;}printf("b = %d, a = %d \n", b, a);return 0;
}
```c
运行结果
分析:首先a的值为1对应case 1,执行后面的语句,由于没有遇到break语句接着执行到case 3时候,a在case 2 中自增到了2所以执行嵌套switch语句中的case 2,执行完后分别 b=4,a=3.接着遇到了嵌套switch语句中有break语句(注意:break语句只能跳出自己所在的switch语句,而这个break语句只是结束了内嵌switch语句,外层的switch语句还没结束)
接着执行外层的case 4:b又自增,后面遇到break语句,外层switch语句结束。
综上,最后b=5,a=3.
☾总结
switch语句也不是很不容易理解,只要把每一个知识点搞懂,结合理论知识去多多实践,调试看过程,就能用得游刃有余。若有错或还有问题请在评论区留言,感谢您的阅读。好了,分支结构章节完整结束,期待下一章的循环结构吧!
【C语言】细品分支结构——switch语句相关推荐
- 循环数组函数c语言,C语言练习题2(分支结构循环结构数组函数2009-2012二级真题)..doc...
C语言练习题2(分支结构循环结构数组函数2009-2012二级真题). C语言练习题(二) 一 选择题 1.有以下程序 #include void main() { int a: canf(" ...
- c语言用if语句abc输出最大值,C语言基础入门选择结构-if语句(78页)-原创力文档...
C语言基础入门选择结构-if语句_电脑基础知识_IT/计算机_专业资料.第9单元选择结构-if语句<程序设计基础>北京八维研修学院第1节选择结构导入?... <程序设计基础> ...
- 分支函数c语言,C语言练习题2(分支结构 循环结构 数组 函数2009-2012二级真题 ).doc...
C语言练习题2(分支结构 循环结构 数组 函数2009-2012二级真题 ) C语言练习题(二) 一 选择题 1.有以下程序 #include void main() { int a: canf(&q ...
- 【MATLAB】流程控制 ( 循环结构 | for 循环 | while 循环 | 分支结构 | if end 分支结构 | if else end 分支结构 | switch case 分支结构 )
文章目录 一.MATLAB 流程控制结构 二.for 循环 1.for 循环 2.嵌套 for 循环 三.while 循环 二.分支结构 1.if end 分支结构 2.if else end 分支结 ...
- 08.15 javascript3 分支结构 条件语句 :单向分支 双向分支 嵌套分支 多项分支 循环结构 while dowhile for 跳转语句 其他语句...
# 分支结构 条件语句 ### 单向分支 if (){ } ### 双向分支 if () { } else { ...
- 6.1 Python 单分支结构 if语句
第6章 程序流程控制 6.1 单分支结构 if语句 6.1.1 顺序结构 控制流指的是控制程序的执行流程. Python控制流有三种结构:顺序结构.分支结构.循环结构. [体验代码] # 定义2个变量 ...
- 【传智播客上海校区】分支结构 - 条件语句
分支结构 - 条件语句 说明: 在实际生活中经常需要作出一些判断, 比如开车来到一个十字路口,这时需要对红绿灯进行判断,如果前面是红灯,就停车等候,如果是绿灯,就通行. 1. if条件语句 if 语句 ...
- 7-7 计算油费(2022-高级语言程序设计练习——分支结构程序设计)
实现语言:C 编译器:gcc 题目链接: 题目详情 - 7-7 计算油费 (pintia.cn) 题目: 2022-高级语言程序设计练习--分支结构程序设计 7-7 计算油费 分数 15 作者 颜晖 ...
- python语言与c语言相比在分支结构上有什么不同_C语言顺序结构和分支结构总结...
1. 本章学习总结 1.1 思维导图 1.2 本章学习体会及代码量学习体会 1.2.1 学习体会 感觉学的内容比较基础,也是日后编程的基石.今后还应多加练习,能够更自如地运用,避免低级错误,一步步地提 ...
最新文章
- 你负责选歌,索尼负责用 AI 谱出风格相似的曲子
- 我用 YOLOv5 做情感识别!
- microsoft visual basic保存时错误429_win10更新失败错误8000FFF的解决小技巧
- 7、Zabbix微信告警
- iOS:步进UIStepper、滑动块UISlider、开关UISwitch的基本使用
- TensorFlow tf.squeeze
- ESXI6.7虚拟机配置LACP静态汇聚端口网络负载均衡分流
- C语言变量声明问题——变量定义一定要放在所有执行语句/语句块的最前面吗?
- 生成手写文字图片_如何把手机图片转成PDF文件?这个技巧你一定能学会!
- 省市区三级联动 mysql_javaweb--json--ajax--mysql实现省市区三级联动(附三级联动数据库)...
- Node2Vec实战
- 新的宽高比(aspect-ratio)CSS属性
- 鼠标划过切换div显示
- 17*开头的是什么号码?为什么17开头手机号最好不要用
- Teamspeak3集成要注意的问题
- 数据抓包(网络爬虫)-正方教务管理系统登录
- DWD层 (用户行为日志)
- 建武28a对讲机最大距离_TH-28A对讲机使用方法说明
- Arcgis使用教程(十二)ARCGIS地图制图之比例尺设置参数详解
- HTTP资料整理 -- 干货满满