欢迎来到天天文库
浏览记录
ID:62154120
大小:37.00 KB
页数:5页
时间:2021-04-19
《选择结构程序设计:开关语句.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、个人收集整理勿做商业用途导入如果分支太多,会导致嵌套的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常量值。如果有与该值
2、相等的常量,则执行其后的语句,接着就不再进行比较,依次顺序执行后面的所有case语句和default语句,直到switch语句体结束。如果圆括号内的表达式的值与所有case后面的常量均不相等时,如果存在default语句,则执行其后的语句,否则跳过switch语句体,什么也不做。3.说明①switch后面圆括号内表达式的值一般为整型、字符型或枚举型,表达式两边的一对圆括号不能省略。 ②每个case后的“常量表达式”的类型应该与switch后面圆括号内表达式的类型一致。③各case后的常量值应该互不相同,起到语句标号的作用。④每个case后面的常量出现次序发生
3、改变时,不影响程序运行结果。从程序执行效率角度考虑,把发生频率高的情况放在前面。⑤case后的语句省略,则执行与后继case相同的语句。也就是说,找到匹配的case常量,顺序执行case后的语句和后继case后的语句。这样,并未实现真正意义上的分支。4.举例根据输入的学生成绩,编程实现输出对应的等级。(见课本第96页例题4.7)可以通过绘制传统流程图或PAD图来表示算法。(略)#include4、tch(mark){ case 10 :if(score== 100) printf("%d--An", score); else printf("input error!n"); case9:printf("%d--A",score); case 8:printf("%d--B\n",score); case7 :printf("%d--C",score); case6:printf("%d--Dn",score); case5 : case4: case 3 : case 2: case1: ca5、se 0:printf("%d--E\n", score); default:printf("input error!n"); }}问题:上机测试上面的程序,分析存在的问题。 原因:测试程序时,找到符合要求的case分支就开始执行,同时把其后的所有分支全部执行,包括default在内的分支。这样,并没有实现真正意义上的分支。与题目要求不符。需要进行修改!如何进行修改呢?请往后学习哦!5.break语句为了解决上面的问题,在switch语句中使用break语句即可。break语句也称间断语句,可以在case之后执行的语句最后加上break语句。每当执行到6、break语句时,立即跳出switch语句体。switch语句通常总是和break语句联合使用,使得switch语句真正地起到分支的作用。/*添加break语句,修改上面的程序代码,使switch真正起到多分支作用。*/#include<stdio.h>main(){个人收集整理勿做商业用途 intscore,mark; scanf("%d", &score); mark=score/10 ; switch(mark){ case10:if(score== 100) printf("%d--A",score); else 7、 printf("inputerror!"); break; case9:printf("%d--A\n",score); break; case8 :printf("%d--B\n", score); break; case7:printf("%d--C", score); break; case6:printf("%d--D\n",score); break; case 5:case 4: case3: case2 : case1 : case 0:printf("%8、d--E",score); break
4、tch(mark){ case 10 :if(score== 100) printf("%d--An", score); else printf("input error!n"); case9:printf("%d--A",score); case 8:printf("%d--B\n",score); case7 :printf("%d--C",score); case6:printf("%d--Dn",score); case5 : case4: case 3 : case 2: case1: ca
5、se 0:printf("%d--E\n", score); default:printf("input error!n"); }}问题:上机测试上面的程序,分析存在的问题。 原因:测试程序时,找到符合要求的case分支就开始执行,同时把其后的所有分支全部执行,包括default在内的分支。这样,并没有实现真正意义上的分支。与题目要求不符。需要进行修改!如何进行修改呢?请往后学习哦!5.break语句为了解决上面的问题,在switch语句中使用break语句即可。break语句也称间断语句,可以在case之后执行的语句最后加上break语句。每当执行到
6、break语句时,立即跳出switch语句体。switch语句通常总是和break语句联合使用,使得switch语句真正地起到分支的作用。/*添加break语句,修改上面的程序代码,使switch真正起到多分支作用。*/#include<stdio.h>main(){个人收集整理勿做商业用途 intscore,mark; scanf("%d", &score); mark=score/10 ; switch(mark){ case10:if(score== 100) printf("%d--A",score); else
7、 printf("inputerror!"); break; case9:printf("%d--A\n",score); break; case8 :printf("%d--B\n", score); break; case7:printf("%d--C", score); break; case6:printf("%d--D\n",score); break; case 5:case 4: case3: case2 : case1 : case 0:printf("%
8、d--E",score); break
此文档下载收益归作者所有