欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

用坐电梯的方式理解C语言中的switch语句实例解析

最编程 2024-08-02 17:59:27
...


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

C语言 switch语句举例说明(类比坐电梯来理解)_switch语句

思考题:如果去掉[接招看题029]程序中的所有break语句,且输入的成绩为85, 输出会如何?还记得电梯的比喻吗?

先给答案,会把grade=A,grade=B,grade=C,grade=D,grade=E,The score is out of range!,在屏幕上原样输出。

再看代码调试的结果:

C语言 switch语句举例说明(类比坐电梯来理解)_if语句_02

原理是掌握使用的诀窍规律。也是你最头疼专业术语,但你还是要看一看的。想要成为一个武林高手,当然需要“降龙十八掌”一样的内功心法来助你修炼了。好,现在开始,随我一起修炼!

1.switch语句的一般形式switch(表达式)

{ case 常量表达式1:语句组;break;

case 常量表达式2:语句组;break;

case 常量表达式n:语句组;break;

[default:语句组;[break; ]]

}

流程图如下:

C语言 switch语句举例说明(类比坐电梯来理解)_代码调试_03

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

给各位少侠的结语:先恭喜你耐性的看完了这篇长文,此时的你离优秀又进了一步。在下也在修炼,所以更新博客会很慢。少侠努力修炼,祝少侠早日成为武林盟主。“江湖不见不散!”

备注:如有不懂之处,观看我以前写的苏小红视屏,无需密码,即点即看。



上一篇: 坐电梯小技巧

下一篇: 奇怪的电梯

推荐阅读