switch语句的本质是什么?这么想你就对了!

我们把使用switch语句的过程规律想象成坐电梯(大家都有坐电梯的经历),每个case语句后面的标号相当于一个按钮,你要在哪一层下去,就按那一层按钮,就可以在这一层下去。
比如一共24层,你要去第几层,比如我要到第十层下去,那么你的第十层后面肯定要加个break语句,意义是到这一层就结束了,退出这个switch语句了,我要离开电梯了。
如果说每一层都有人下去,那么每一层都有一个break语句。
再如果说每一层都不下,我就从1层做到24层,我任性,皮,那你就要把break语句都要取消,不写break语句,一直执行到default语句后面的 } ,最后到顶层了,出电梯吧,退出switch语句。

有点意思吧?看下面循序渐进的案例,帮你一步一步打通switch语句的任督二脉带你超神!
先动手做实例演示,发现问题,再来补充知识,解决问题。注意,结合开头switch语句的本质来分析程序

[接招看题029] 从键盘上输入一个百分制成绩score,按下列原则输出其等级:
score≥90,等级为A;
80≤score<90,等级为B;
70≤score<80,等级为C;
60≤score<70,等级为D;
score<60,等级为E


思考题:如果去掉[接招看题029]程序中的所有break语句,且输入的成绩为85, 输出会如何?还记得电梯的比喻吗?
先给答案,会把grade=A,grade=B,grade=C,grade=D,grade=E,The score is out of range!,在屏幕上原样输出。
再看代码调试的结果:

原理是掌握使用的诀窍规律。也是你最头疼专业术语,但你还是要看一看的。想要成为一个武林高手,当然需要“降龙十八掌”一样的内功心法来助你修炼了。好,现在开始,随我一起修炼!
1.switch语句的一般形式switch(表达式)
{ case 常量表达式1:语句组;break;
case 常量表达式2:语句组;break;

case 常量表达式n:语句组;break;
[default:语句组;[break; ]]
}

流程图如下:

2.说明:
(1)执行过程当switch后面"表达式"的值,与某个case后面的"常量表达式"的值相同时,就执行该case后面的语句(组);
当执行到break语句时,跳出switch语句,转向执行switch语句的下一条。还记得电梯按钮吗?以下分析都是电梯的比喻。
(2)如果没有任何一个case后面的"常量表达式"的值,与"表达式"的值匹配,则执行default 后面的语句(组)。然后 ,再执行switch语句的下一条。
3.说明:
(1)switch后面的"表达式",可以是int、char和枚举型中的一种。
(2)每个case后面"常量表达式"的值,必须 各不相同,否则会出现相互矛盾的现象(即对表达式的同一值,有两种或两种以上的执行方案)。
(3)case后面的常量
表达式仅起语句标号作用,并不进行条件判断。系统一旦找到入口标号,就从此标号开始执行,不再进行标号判断,所以 必须加上break语句,以便结束switch语句。
(4)各case及default子句的先后次序,不影响程序执行结果。
(5)多个case子句,可共用同一语句(组)。
例如,在[ 接招看题029]中的"case 10: "和"case 9: “共用语句"printf(“grade=A\n”); break;”,"case 5: "~"case 0: “共用语 句"printf(“grade=E\n”); break;”。
(6)用switch语句实现的多分支结构程序,完全可以用if语句或if语句的嵌套来实 现。

帮你省时的源代码:
[接招看题029] 从键盘上输入一个百分制成绩score,按下列原则输出其等级:

score≥90,等级为A;
80≤score<90,等级为B;
70≤score<80,等级为C;
60≤score<70,等级为D;
score<60,等级为E。
main()
{int  score, grade;printf("Input a score(0~100): ");scanf("%d", &score);grade = score/10;   /*将成绩整除10,转化成switch语句中的case标号*/switch (grade){case  10:case    9: printf("grade=A\n"); break;    case    8: printf("grade=B\n"); break;case    7: printf("grade=C\n"); break;case    6: printf("grade=D\n"); break;case    5:case    4:case    3:case    2:case    1:case    0: printf("grade=E\n"); break;default: printf("The  score  is  out  of  range!\n");    }
}

程序运行情况如下:

Input a score(0~100): 85↙
grade=B

给各位少侠的结语:先恭喜你耐性的看完了这篇长文,此时的你离优秀又进了一步。在下也在修炼,所以更新博客会很慢。少侠努力修炼,祝少侠早日成为武林盟主。“江湖不见不散!”
备注:如有不懂之处,观看我以前写的苏小红视屏,无需密码,即点即看。

C语言 switch语句举例说明(类比坐电梯来理解)相关推荐

  1. c 语言switch语句举例,C switch 语句 | 菜鸟教程

    使用 switch 语句编程,根据输入的年份判断是否为闰年,根据输入的月份判断这月有多少天. 闰年的定义: 普通年(不能被100整除的年份)能被4整除的为闰年.(如2004年就是闰年,1999年不是闰 ...

  2. R语言switch语句语法、实战:Switch语句用来处理嵌套的if else处理起来比较困难或者麻烦的条件判断问题

    R语言switch语句语法.实战:Switch语句用来处理嵌套的if else处理起来比较困难或者麻烦的条件判断问题 目录

  3. c语言switch语句程序大全,C语言switch语句

    C语言中的switch语句用于从多个条件执行代码. 就像if else-if语句一样. C语言中switch语句的语法如下: switch(expression){ case value1: //co ...

  4. c语言 switch语句大小,C语言switch语句(板式整齐)

    <C语言switch语句(板式整齐)>由会员分享,可在线阅读,更多相关<C语言switch语句(板式整齐)(38页珍藏版)>请在人人文库网上搜索. 1.switch 语句,1, ...

  5. c语言switch()语句

    c语言switch()语句 以上图片来源:https://wenku.baidu.com/view/41e0bb1ef08583d049649b6648d7c1c708a10bb7.html 感谢大牛 ...

  6. c语言switch scanf语句,c语言switch语句 谢谢·!~!~

    c语言switch语句 谢谢·!~!~以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! c语言switch语句 谢谢·!~ ...

  7. C语言 switch语句来调用函数

    C语言 switch语句来调用函数 如果函数写在主函数后面,则在主函数中必须进行函数声明:如果函数写在主函数前面,可适当不写 getchar只能一个一个的读入字符 switch循环语句中最后必须有de ...

  8. c语言switch有什么作用,c语言switch语句如何使用

    C语言的运用非常之多,它兼顾了高级语言的汇编语言的优点,相较于其它编程语言具有较大优势.那么C语言中的switch语句如何使用呢? C语言switch语句如何使用 switch语句允许测试变量与值列表 ...

  9. C语言 switch语句实现不同分数段划分不同等级

    C语言 switch语句实现不同分数段划分不同等级 设定满分为100分,分为20个case,如果分数小于60,则等级为D,在这之前1-10都是与case11相同,可以全部省略.60~70分等级为C,以 ...

最新文章

  1. 第二十篇:Summarisation摘要
  2. 常见的面试算法题:创建几个线程按顺序打印数字或者字母(多线程编程)(套用该模板即可)
  3. Spring核心技术(七)——Spring容器的扩展
  4. Python: 元组的基本用法
  5. jmeter ForEach控制器学习
  6. GBDT是如何成为推荐系统顶级工具人的?
  7. LeetCode(447)——回旋镖的数量(JavaScript)
  8. sift算法c语言实现
  9. EditPlus for python
  10. linux菜鸟要飞-根目录
  11. Web2.0之Tag标签原理实现浅析
  12. Alexa 世界排名推进工具--阿雷克斯(转)
  13. 关于“外接硬盘被写了保护的解决方法”
  14. 10个常用的数据分析商业模型之漏斗模型(六)
  15. python爬虫:批量刷新网页
  16. PDF转换成JPG图片怎么转换?这两招轻松搞定
  17. pycharm 中 pydev debugger: CRITICAL WARNING: This version of python seems to be incorrectly compiled
  18. 使用tensorboard出现:“couldn‘t build proto file into descriptor pool!”的解决方法
  19. ShortcutBadger
  20. jquery设置cursor的属性改变光标的类型(形状)

热门文章

  1. 精华【分布式微服务云架构dubbo+zookeeper+springmvc+mybatis+shiro+redis】分布式大型互联网企业架构!
  2. Steam32寄存器实现流水灯
  3. 网上问政有用吗?如何能更快得到回复?
  4. 一、Windows系统下安装Tensorflow2.x(2.6)
  5. 纸本书变电子书是很小的事——詹宏志谈数字出版时代
  6. 做电商直播绝不能忽视的事:主播人设和账号定位
  7. MFC的导航窗格浮窗设计
  8. Rivian-电动皮卡先行者
  9. 构筑企业供应链高效协同优势,智能供应链系统助推汽车服务行业数字化订单管理
  10. isabelle官网