
4.5 switch语句的应用—评定学生成绩
switch语句又称开关语句,在C程序中专门用来处理多分支选择问题。用switch语句编写的多分支选择程序,就像一个多路开关,使程序流程形成多个分支,使用起来比复合if语句及嵌套if语句更加方便灵活。
【例4.8】给定一百分制成绩,要求输出成绩等级A,B,C,D,E。90分以上为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。
例4.8程序的N-S图如图4-9所示。
扫一扫 看视频


图4-9 例4.8程序的N-S图
程序代码如下:

程序的运行结果为(比如输入成绩为85分,输出等级为B级):
85<回车>
Score:85,grade:B
相关知识6
1.switch语句
switch语句的语法格式如下:

其含义为:先计算表达式的值,判断此值是否与某个常量表达式的值匹配,如果匹配,控制流程转向其后相应的语句,否则,检查default是否存在,如存在则执行其后相应的语句,否则结束switch语句。
使用switch结构设计多分支选择结构程序,不仅使用更加方便,而且程序可读性也更高。其流程图如图4-10所示。

图4-10 switch结构的流程图
有关switch语句使用的几点说明:
①括号内的表达式可以是整型或字符型。
②case后的每个常量表达式必须各不相同。
③case子句和default子句的位置是任意的。
④每个case之后的执行语句可多于一个,但不必加{}。
⑤允许几种case情况下执行相同的语句,不必每个都写。
⑥switch,break,default,case均为C语言的关键字。
2.break语句
break语句在C语言中称为中断语句,只有关键字break,没有参数。break语句不仅可以用来结束switch的分支语句,而且可以在循环结构中实现中途退出,即在循环条件没有终止前也可以使用break语句来跳出循环结构。详见第5章相关知识。
注意:switch语句中本来不包含break语句,但switch语句不像if语句一样只要满足某一条件则可在执行相应的分支后自动结束选择。在switch语句中,当表达式的值与某个常量表达式的值相等时,即执行常量表达式后对应的语句,然后不再进行判断,继续执行后面所有case分支的语句,因此需要在每个case分支的最后加上一条break语句,以帮助结束选择。
课后讨论
同样是C程序设计中的多分支选择语句,试举例说明switch语句与if…else if…形式的复合if语句有何异同。