C语⾔switch语句举例说明(类⽐坐电梯来理解)
switch语句的本质是什么?这么想你就对了!
我们把使⽤switch语句的过程规律想象成坐电梯(⼤家都有坐电梯的经历),每个ca语句后⾯的标号相当于⼀个按钮,你要在哪⼀层下去,就按那⼀层按钮,就可以在这⼀层下去。
⽐如⼀共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(表达式)
{ ca 常量表达式1:语句组;break;
ca 常量表达式2:语句组;break;
…
ca 常量表达式n:语句组;break;
[default:语句组;[break; ]]
蔡晓晴}
流程图如下:
2.说明:
(1)执⾏过程当switch后⾯"表达式"的值,与某个ca后⾯的"常量表达式"的值相同时,就执⾏该ca后⾯的语句(组);
当执⾏到break语句时,跳出switch语句,转向执⾏switch语句的下⼀条。还记得电梯按钮吗?以下分析都是电梯的⽐喻。
(2)如果没有任何⼀个ca后⾯的"常量表达式"的值,与"表达式"的值匹配,则执⾏default 后⾯的语句(组)。然后 ,再执⾏switch语句的下⼀条。
3.说明:
(1)switch后⾯的"表达式",可以是int、char和枚举型中的⼀种。
(2)每个ca后⾯"常量表达式"的值,必须 各不相同,否则会出现相互⽭盾的现象(即对表达式的同⼀值,有两种或两种以上的执⾏⽅案)。
(3)ca后⾯的常量
自由行走
表达式仅起语句标号作⽤,并不进⾏条件判断。系统⼀旦找到⼊⼝标号,就从此标号开始执⾏,不再进⾏标号判断,所以 必须加上break语句,以便结束switch语句。爱乐之城音乐
(4)各ca及default⼦句的先后次序,不影响程序执⾏结果。
(5)多个ca⼦句,可共⽤同⼀语句(组)。
例如,在[ 接招看题029]中的"ca 10: "和"ca 9: “共⽤语句"printf(“grade=A\n”); break;”,"ca 5: "~"ca 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语句中的ca标号*/
switch(grade)
{
ca10:我思念故乡的小河
ca9:printf("grade=A\n");break;
ca8:printf("grade=B\n");break;
ca7:printf("grade=C\n");break;
ca6:printf("grade=D\n");break;
ca5:
ca4:
ca3:
ca2:
ca1:
ca0:printf("grade=E\n");break;
default:printf("The score is out of range!\n");
}
砥砺前行
}
程序运⾏情况如下:
Input a score(0~100):85↙
grade=B
给各位少侠的结语:先恭喜你耐性的看完了这篇长⽂,此时的你离优秀⼜进了⼀步。在下也在修炼,所以更新博客会很慢。少侠努⼒修炼,祝少侠早⽇成为武林盟主。“江湖不见不散!”
备注:如有不懂之处,观看我以前写的苏⼩红视屏,⽆需密码,即点即看。