- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
选择结构程序设:开关语句
导入
如果分支太多,会导致嵌套的if语句层次数过多,则程序冗长且可读性较低。C语言中,可以用开关语句(switch语句)代替条件语句来简化程序的设计。
一、开关语句:switch语句
1.形式
switch(表达式){
case 常量1 : 语句1
case 常量2 : 语句2
case 常量3 : 语句3
……
case 常量n : 语句n
default : 语句n+1
}
2.执行过程
当执行switch语句时,首先计算紧跟其后的一对括号中表达式的值,然后在switch语句体内寻找与该值吻合的case常量值。如果有与该值相等的常量,则执行其后的语句,接着就不再进行比较,依次顺序执行后面的所有case语句和default语句,直到switch语句体结束。如果圆括号内的表达式的值与所有case后面的常量均不相等时,如果存在default语句,则执行其后的语句,否则跳过switch语句体,什么也不做。
3.说明
①switch后面圆括号内表达式的值一般为整型、字符型或枚举型,表达式两边的一对圆括号不能省略。
②每个case后的“常量表达式”的类型应该与switch后面圆括号内表达式的类型一致。
③各case后的常量值应该互不相同,起到语句标号的作用。
④每个case后面的常量出现次序发生改变时,不影响程序运行结果。从程序执行效率角度考虑,把发生频率高的情况放在前面。
⑤case后的语句省略,则执行与后继case相同的语句。也就是说,找到匹配的case常量,顺序执行case后的语句和后继case后的语句。这样,并未实现真正意义上的分支。
4.举例
根据输入的学生成绩,编程实现输出对应的等级。(见课本第96页例题4.7)
可以通过绘制传统流程图或PAD图来表示算法。(略)
#include stdio.h
main(){
int score , mark ;
scanf(%d, score);
mark = score / 10 ;
switch(mark){
case 10 : if(score == 100)
printf(%d--A\n, score) ;
else
printf(input error!\n);
case 9 :printf(%d--A\n, score) ;
case 8 :printf(%d--B\n, score) ;
case 7 :printf(%d--C\n, score) ;
case 6 :printf(%d--D\n, score) ;
case 5 :
case 4 :
case 3 :
case 2 :
case 1 :
case 0 :printf(%d--E\n, score) ;
default :printf(input error!\n);
}
}
问题:上机测试上面的程序,分析存在的问题。
原因:测试程序时,找到符合要求的case分支就开始执行,同时把其后的所有分支全部执行,包括default在内的分支。
这样,并没有实现真正意义上的分支。与题目要求不符。需要进行修改!如何进行修改呢?请往后学习哦!
5.break语句
为了解决上面的问题,在switch语句中使用break语句即可。
break语句也称间断语句,可以在case之后执行的语句最后加上break语句。每当执行到break语句时,立即跳出switch语句体。
switch语句通常总是和break语句联合使用,使得switch语句真正地起到分支的作用。
/*添加break语句,修改上面的程序代码,使switch真正起到多分支作用。*/
#include stdio.h
main(){
int score , mark ;
scanf(%d, score);
mark = score / 10 ;
switch(mark){
case 10 : if(score == 100)
printf(%d--A\n, score) ;
else
您可能关注的文档
最近下载
- (施工组织设计汇总)施工组织设计编制说明、工程概况、施工准备.doc VIP
- 陕西省高速公路施工标准化指南 施工标准化(第二册).pdf VIP
- 生长发育与儿童保健.pptx VIP
- 2025年中考数学---《一元二次方程之实际应用》知识点总结与专项练习题精品.pdf VIP
- 设计师在非正式合作城市开发项目中的参与及角色分析——重庆黄水镇地产项目为例.pdf VIP
- 小学生吸尘器课件.pptx VIP
- (新人教版)八年级英语上册Unit 1大单元教学设计.docx
- 刍议基于建筑外墙防渗漏技术的施工.pdf VIP
- 大学语文——特洛伊_赫克托耳之死.ppt VIP
- 儿童保健:儿童生长发育规律.pptx VIP
文档评论(0)