一般的if语句只有两个分支可供选择,而实际工作中常需要用到多个分支的选择使用if-else-if语句也可处理多个分支的情况,但多数情况下,使用switch语句处理多个分支将更加方便。
switch语句就像许多扇“大门”一样, 上面标注了要符合什么条件的才能够通过。使用swich语句可方便地处理同一表达式有多个分支的情况。其语法格式如下:
switch (表达式)
{
case常量表达式1:
语句1;
break;
case常量表达式2:
语句2;
break;
.....
case常量表达式m:
语句m;
break;
default :
语句n;
}
其执行过程为:首先计算表达式的值,然后将该值与后面的各个case关键字的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行所有case后的语句,直到遇到break语句退出switch语句。如果表达式的值与所有case后的常量表达式都不等,则执行default后的语句。
switch语句主要应用在同一个表达式有多个分支的情况下。
注意:
(1) switch关键字后面括号内的表达式的值必须为整型,不能为实型。
(2)每个case关键字的常量表达式后面要添加冒号(:)。
(3) case关键字后面的值可以是常量(如1、2等),也可以是常量表达式(如1+2、3+3等),但表达式中不能有变量(如1+i是错误的)。因为case关键字后面的值必须在编译阶段被确定。
(4)每个case后的常量表达式的值要与switch后面括号内的表达式的类型一致,且各个case后的常量表达式必须互不相同,否则会出现执行两个分支的矛盾。
(5 )执行完一个case后面的语句后,流程控制转移到下一个case继续执行。“case常量表达式”只起语句标号作用,并不是在该处进行条件判断。因此,如果在执行完当前case语句后需要跳到switch语句后执行,就需要在该case分支的最后加上一条break语句。
(6) default分支可以省略。如果省略该分支,则当所有常量表达式与switch后面括卜内的表达式的值不相等时,switch 结构中将没有语句被执行。
【练习】输入数字,转换为中文星期几名称(switch语句)
代码如下:
#include <stdio.h>
int main()
{
int w;
printf ("请输入1个整数:scanf ("&d", &w) ;
switch (w)
{
case 0:
printf("星期日\n") ;
break;case 1 :
printf("星期一\n");
break;
case 2:
printf ("星期二\n");
break;
case 3:
printf ("星期三\n") ;
break;
case 4:
printf ("星期四\n") ;
break;
case 5:
printf ("星期五\n") ;
break;
case 6:
printf ("星期六\n");
break;
default:
printf ("输入错误! \n);
}
getch() ;
return 0;
}
运行结果:
请输入1个整数:5
星期五