一般的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 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
星期五