5.5 多重选择语句
if语句用来处理两个分支,处理多个分支时需使用if-else-if结构。但如果分支较多,嵌套的if语句层就越多,程序不但庞大,而且理解起来比较困难。深层嵌套的else-if语句往往在语法上是正确的,但逻辑上却没有正确地反映程序员的意图。
C/C++语言又提供了一个专门用于处理多分支结构的条件选择语句—switch语句(又称开关语句),它可以很方便地来实现深层嵌套的if/else逻辑。
switch语句的语法格式如下:
提示
各个case的出现顺序可以任意,每个case分支都有break的情况下,case次序不影响执行结果。
其中,switch、case和break都是关键字。
C++中的switch-case语句的执行流程是:首先计算switch后面圆括号中表达式的值,然后用此值依次与各个case的常量表达式比较。若圆括号中表达式的值与某个case后面的常量表达式的值相等,则执行此case后面的语句,执行后遇break语句就退出switch语句;若圆括号中表达式的值与所有case后面的常量表达式都不相等,则执行default后面的语句,然后退出switch语句,程序流程转向开关语句的下一个语句。
【实例5-10】switch(代码5-10.txt)
新建名为“switchtest”的【C++ Source File】源程序,源代码如下所示:
【代码详解】
在该例中,定义了两个int型变量level和score,变量level和score全部赋值为0;通过cin输入score,level赋值为score/10;通过switch判断,若分数的等级是9或10,则为A等,若等级为8,则为B等,若等级为7,则为C等,若等级为6,则为D等,其余的都评为E等。
运行结果如图5-12所示。
图5-12 代码运行结果
【实例分析】
从运行结果来看,从屏幕上输入分数为98,则level=98/10=9;在switch中,执行case9后面的cout语句,执行完cout语句后,调用break,退出整个switch循环。