当程序设计需要用到多个条件判断的多分支结构时,若使用if语句的嵌套,则在分支较多时,设计出来的程序会变得复杂冗长,并且很容易产生if与else的个数不配对问题,因此,本节将介绍专门处理多分支情形的switch语句,使用多分支选择语句switch语句实现多个条件判断的多分支结构会使程序更简洁,同时也增强了程序的可读性。
switch语句的语法格式为:
switch(表达式)
{
case常量1:语句1
case常量2:语句2
·
·
·
case常量n:语句n
default:语句n+1
}
(1)switch是C语言中的关键字,switch下面的一对花括号内是一个复合语句,是switch语句的语句体,该花括号不能省略。语句体内包含多个以关键字case开头的语句行和最多一个以default开头的语句行。
(2)switch后面的“表达式”的值可以是整型或字符型数据,表达式两边的括号不能省略。
(3)case和“常量”之间一定要有空格,常量后面的“:”也不能省略。case与其后面的“常量”合称为case语句标号。“常量”的值在运行前必须是确定的,不能改变,因此不能是包含变量的表达式,而且其数据类型必须与switch后面的“表达式”的值的类型一致。
(4)每个case后面“常量”的值必须各不相同,否则会出现相互矛盾的现象。
(5)各个case语句标号的次序不影响执行的结果。
(6)case语句标号仅起标记作用,并不进行条件判断,在执行switch语句时,根据表达式的值找到匹配的入口标号,就从此标号开始执行。如果没有break语句,将继续往下执行,所以必要时加上break语句,以便结束switch语句。
(7)case语句标号后面的语句可以是一条语句,也可以是多条语句,此处多条语句可以不用一对花括号括起来。
(8)多个语句标号可以共用一组执行语句。
例如:
case′A′:
case′B′:printf(">=60");break;
在比例中,无论switch后表达式的值是A还是B,都会执行“case′B′”后的语句。
【例3.10】编写程序实现两个整数的加、减、乘、除四则运算,要求两个整数运算符由用户输入。
程序内容如下:
1 #include<stdio.h>
2 int main()(www.xing528.com)
3 {
4 int data1,data2;
5 char op;
6 scanf("%d,%c,%d",&data1,&op,&data2);
7 switch(op)
8 {
9 case′+′:
10 printf("%d+%d=%d",data1,data2,data1+data2);break;
11 case′-′:
12 printf("%d-%d=%d",data1,data2,data1-data2);break;
13 case′*′:
14 printf("%d*%d=%d",data1,data2,data1*data2);break;
15 case′/′:
16 printf("%d/%d=%d",data1,data2,data1/data2);break;
17 default:
18 printf("invalid operator!");
19 }
20 printf("\n");
21 return 0;
22 }
程序结果如图3.16所示:
图3.16 例3.10程序结果图
【例题中关键问题说明】
(1)本程序在scanf()函数中的格式控制字符串为"%d,%c,%d",所以在用户输入数据时,需要在输入的三个数据之间用逗号进行分隔。
(2)在switch语句中的调用printf()函数实现输出之后,有break语句,可以有效地结束switch语句。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。