switch语句
switch语句也是一种分支语句,常用于多分支的情况
switch语句的语法形式是:
switch(整型表达式)
{语句项;
}
而语句项是什么呢?
case 整型常量表达式:语句;
switch语句中的break
对于case 语句来说,我们day输入的多少就从case几进入,然后打印,但是由于没有break阻止其停止,所以才会全部打印出来
我们在每个case语句后加上break,效果就不一样了
#include <stdio.h>int main()
{int day = 0;scanf("%d", &day);switch(day){case 1:printf("Monday\n");break;case 2:printf("Tuesday\n");break;case 3:printf("Wednesday\n");break;case 4:printf("Thursday\n");break;case 5:printf("Friday\n");break;case 6:printf("Saturday\n");break;case 7:printf("Sunday\n");break;}return 0;
}
其实每个case后的break不加也是没错的,只要复合自己的逻辑即可。
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;
}
default选项
对于所有case不能匹配的选项,我们用default
#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("Invalid input\n");break;}return 0;
}
default的位置无所谓,只要在switch语句中即可
并且switch语句允许嵌套使用
试问下面的代码输出什么呢?
#include <stdio.h>int main()
{int n = 1;int m = 2;switch (n){case 1:m++;case 2:n++;case 3:switch (n){ // switch允许嵌套使用case 1:n++;case 2:m++;n++;break;}case 4:m++;break;default:break;}printf("m = %d, n = %d\n", m, n);return 0;
}