1、switch 定义
switch 语句是一种特殊形式的 if······else 结构,用于判断条件有多个结果的情况。
2、switch 用法
1 switch (expression){
2 case value1: statement
3 case value2: statement
4 default:statement
5 }
上面的代码中,根据表达式expression不同的值,执行相应的case分支。如果找不到相应的值,就执行default分支。
注意:
· switch 后的expression 必须是整型表达式
· case 后的值,必须是整型常量表达式
//switch(ch)可以
char ch = 'w';
scanf("%c",&ch);
switch (ch)
//switch(f) 不可以
float f = 0.0;
scanf("%f",&f);
switch (f)
在语法归类,字符以ASCII码的形式存储的,ASCII值是整数,字符属于整型家族
3、if 语句与 switch 语句的对比
练习:输入任意整数值,计算除3之后的余数
如果使用 if 语句
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if (num % 3 == 0)
printf("%d是整数,余数为0", num);
else if(num % 3 == 1)
printf("%d不是整数,余数为1", num);
else
printf("%d不是整数,余数为2", num);
return 0;
}
如果使用 switch 语句
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
switch (num % 3)
{
case 0:
printf("%d是整数,余数为0", num);
break;
case 1:
printf("%d不是整数,余数为1", num);
break;
case 2:
printf("%d不是整数,余数为2", num);
break;
}
return 0;
}
注意:
(1)case 和后面的数字之间必须有空格
(2)每个case 语句结束后,需要加上break ,才能跳出这个switch 语句。如果没有break语句,代码会继续执行下去,有可能执行其他代码,直到遇见break 语句或者switch 语句结束。当然,break 也不是每个 case 语句都得有,这就要看具体情况了。
例如:
输入1~7的数字,要求:
输入1~5,输出的是“工作日”
输入6~7,输出的是“休息日”
#include <stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
}
return 0;
}
4.switch 语句中的 default
在使用switch 语句的时候,如果switch 后的表达式中的值无法匹配代码中的case 语句的时候,就要在 switch 语句中加入 defaule 子句
default 用法
1 switch (expression)
{
2 case value1: statement
3 case value2: statement
4 default: statement
}
switch 后面的expression的结果既不是value1 也不是 value2的时候,就会执行defaule 子句
例如前面的的代码练习,如果day的输入不是1~7的值,提示:输入错误,就可以这样完成代码
#include <stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
default:
printf("输入错误");
break;
}
return 0;
}
5、switch 语句中的 case 和 default 的顺序问题
在switch 语句中 case 语句和 default 语句是没有顺序要求的,只要顺序满足实际要求就可以,不过我们通常是把 default 子句放在最后处理。