首页 理论教育 C语言程序设计Switch语句的选择结构

C语言程序设计Switch语句的选择结构

时间:2023-10-29 理论教育 版权反馈
【摘要】:“常量”的值在运行前必须是确定的,不能改变,因此不能是包含变量的表达式,而且其数据类型必须与switch后面的“表达式”的值的类型一致。case语句标号仅起标记作用,并不进行条件判断,在执行switch语句时,根据表达式的值找到匹配的入口标号,就从此标号开始执行。如果没有break语句,将继续往下执行,所以必要时加上break语句,以便结束switch语句。在switch语句中的调用printf()函数实现输出之后,有break语句,可以有效地结束switch语句。

C语言程序设计Switch语句的选择结构

当程序设计需要用到多个条件判断的多分支结构时,若使用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语句。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈