switch语句是多分支选择语句,通俗地讲,就是多个if。
当嵌套的if比较少时,用if编写程序比较简洁。
当嵌套的if比较多时,用switch编写程序比较合适。
实现多分支选择结构的switch语句的具体形式如下:
switch (表达式)
{
case 常量1:语句组1
case 常量2:语句组2
case 常量3:语句组3
…
case 常量n:语句组n
default :语句组n+1
}
switch 后面的表达式应该是一个确定的值。
case之后只能是常量或者常量表达式,应是确定的值,不能是变量或者其他表达式。
case 后面的常量值应该各不相同,且应该为switch表达式的可能的取值。
语句组可以是一条语句,多条语句,或者没有语句。
语句组中可以使用break终止switch语句的执行。
下以例子进行引入。
例1,利用switch函数模拟电梯
/*switch模拟电梯*/ #include<stdio.h> int main (void) { int i; printf("请输入您想去的楼层:\n"); scanf("%d",&i); switch (i) { case 1: printf("1层开!\n"); break; case 2: printf("2层开!\n"); break; case 3: printf("3层开!\n"); break; default: printf("该层不存在,请重新输入\n"); } return 0; }
例2:输入一个百分制成绩,输出其成绩等级。等级范围为:
90分以上 等级为A级
89~90 等级为B级
79~70 等级为C级
69~60 等级为D级
60分以下 等级为E级
此例中有5条分支,若要通过if语句的嵌套实现,嵌套层数太多。所以选择用switch语句比较合适。
对于我来说的难点,常量1、常量2、常量3……
解决:总分数除以10,定义分数为int型,这样相除得到 10、9、8、7、……
/*根据成绩输出其成绩等级*/ #include<stdio.h> int main (void) { int score; printf("请输入分数:"); scanf("%d",&score); if (score>=0 && score<=100) { switch (score/10) { case 10: printf("A\n"); break; case 9: printf("A\n"); break; case 8: printf("B\n"); break; case 7: printf("C\n"); break; case 6: printf("D\n"); break; default: printf("E\n"); break; } } else { printf("您输入的成绩与实际情况不相符"); } return 0; }
注意格式规范化,if 后加表达式,且表达式后面没有冒号!
else 后面不能加表达式,也不能加冒号。
虽然else执行的语句只有一句,但是最好也是用“{}”规范!