©作者:凡人编程传
©系列: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,那么周一,二…全部打印了呢?

这就要引出另一个知识点了。

  1. case关键字的作用:像“”case 1“这样用来表示程序跳转的标识成为标签”,它用于和switch括号中的表达式值对应,表达式的值会寻找与它值相同的标签,从而执行标签(case)后的语句,像上例中输入a的值为1,则对应了case 1这个标签。此外C语言语法规定同一个switch语句中不可以出现两个相同的“标签”。如下图:

那么case知道是如何对应的了,也是对应case 1:,然后执行他后面的语句printf(“周一\n”);啊,别急还有一点没讲。

  1. 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语句相关推荐

  1. 循环数组函数c语言,C语言练习题2(分支结构循环结构数组函数2009-2012二级真题)..doc...

    C语言练习题2(分支结构循环结构数组函数2009-2012二级真题). C语言练习题(二) 一 选择题 1.有以下程序 #include void main() { int a: canf(" ...

  2. c语言用if语句abc输出最大值,C语言基础入门选择结构-if语句(78页)-原创力文档...

    C语言基础入门选择结构-if语句_电脑基础知识_IT/计算机_专业资料.第9单元选择结构-if语句<程序设计基础>北京八维研修学院第1节选择结构导入?... <程序设计基础> ...

  3. 分支函数c语言,C语言练习题2(分支结构 循环结构 数组 函数2009-2012二级真题 ).doc...

    C语言练习题2(分支结构 循环结构 数组 函数2009-2012二级真题 ) C语言练习题(二) 一 选择题 1.有以下程序 #include void main() { int a: canf(&q ...

  4. 【MATLAB】流程控制 ( 循环结构 | for 循环 | while 循环 | 分支结构 | if end 分支结构 | if else end 分支结构 | switch case 分支结构 )

    文章目录 一.MATLAB 流程控制结构 二.for 循环 1.for 循环 2.嵌套 for 循环 三.while 循环 二.分支结构 1.if end 分支结构 2.if else end 分支结 ...

  5. 08.15 javascript3 分支结构 条件语句 :单向分支 双向分支 嵌套分支 多项分支 循环结构 while dowhile for 跳转语句 其他语句...

    # 分支结构  条件语句 ### 单向分支          if (){              } ### 双向分支          if () {          } else {     ...

  6. 6.1 Python 单分支结构 if语句

    第6章 程序流程控制 6.1 单分支结构 if语句 6.1.1 顺序结构 控制流指的是控制程序的执行流程. Python控制流有三种结构:顺序结构.分支结构.循环结构. [体验代码] # 定义2个变量 ...

  7. 【传智播客上海校区】分支结构 - 条件语句

    分支结构 - 条件语句 说明: 在实际生活中经常需要作出一些判断, 比如开车来到一个十字路口,这时需要对红绿灯进行判断,如果前面是红灯,就停车等候,如果是绿灯,就通行. 1. if条件语句 if 语句 ...

  8. 7-7 计算油费(2022-高级语言程序设计练习——分支结构程序设计)

    实现语言:C 编译器:gcc 题目链接: 题目详情 - 7-7 计算油费 (pintia.cn) 题目: 2022-高级语言程序设计练习--分支结构程序设计 7-7 计算油费 分数 15 作者 颜晖 ...

  9. python语言与c语言相比在分支结构上有什么不同_C语言顺序结构和分支结构总结...

    1. 本章学习总结 1.1 思维导图 1.2 本章学习体会及代码量学习体会 1.2.1 学习体会 感觉学的内容比较基础,也是日后编程的基石.今后还应多加练习,能够更自如地运用,避免低级错误,一步步地提 ...

最新文章

  1. 你负责选歌,索尼负责用 AI 谱出风格相似的曲子
  2. 我用 YOLOv5 做情感识别!
  3. microsoft visual basic保存时错误429_win10更新失败错误8000FFF的解决小技巧
  4. 7、Zabbix微信告警
  5. iOS:步进UIStepper、滑动块UISlider、开关UISwitch的基本使用
  6. TensorFlow tf.squeeze
  7. ESXI6.7虚拟机配置LACP静态汇聚端口网络负载均衡分流
  8. C语言变量声明问题——变量定义一定要放在所有执行语句/语句块的最前面吗?
  9. 生成手写文字图片_如何把手机图片转成PDF文件?这个技巧你一定能学会!
  10. 省市区三级联动 mysql_javaweb--json--ajax--mysql实现省市区三级联动(附三级联动数据库)...
  11. Node2Vec实战
  12. 新的宽高比(aspect-ratio)CSS属性
  13. 鼠标划过切换div显示
  14. 17*开头的是什么号码?为什么17开头手机号最好不要用
  15. Teamspeak3集成要注意的问题
  16. 数据抓包(网络爬虫)-正方教务管理系统登录
  17. DWD层 (用户行为日志)
  18. 建武28a对讲机最大距离_TH-28A对讲机使用方法说明
  19. Arcgis使用教程(十二)ARCGIS地图制图之比例尺设置参数详解
  20. HTTP资料整理 -- 干货满满

热门文章

  1. orbslam3 跑EuRoC数据集及 ros接口
  2. 期货止损的必要性(为什么期货止损不一定会触发)
  3. STM32MP157开发板嵌入式Linux指南资料
  4. 2020-10-18盒子科技笔试
  5. Linux驱动PCIE转USB 3.0调试经验
  6. matlab 倒数第二个位置_matlab中,形如A=A(end-6:end-1,2)是什么意思
  7. 背调可以杜绝简历造假吗?
  8. 第二届网刃杯 ICS+Misc wp
  9. 市面所有民营电信运营商套餐资费
  10. flask 模板:控制语句 、宏、继承、包含、特殊变量和方法【闪现使用】