
除了 if 语句,C语言还提供了 switch 语句来实现分支结构。
switch语句是一种特殊形式的 if...else... 语句,用于判断条件有多种结果的情况。它把多重的 else...if... 改成更易用、可读性更好的形式。
switch( 表达式 )
{
case 值1:
语句1;
case 值2:
语句2;
...
default:
语句3;
}switch语句会根据 表达式 的不同值执行相应的case分支;如果都没有对应的情况,就执行 default分支。并且switch语句中并没有严格要求case分支和default分支的前后顺序。
!注意:
练习:输入任意⼀个整数值,计算除3之后的余数
// 使用if语句
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
if(n % 3 == 0)
printf("整除,余数为0\n");
else if(n % 3 == 1)
printf("余数是1\n");
else
printf("余数是2\n");
return 0;
}
// 使用switch语句
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
switch(n % 3)
{
case 0:
printf("整除,余数为0\n");
break;
case 1:
printf("余数是1\n");
break;
case 2:
printf("余数是2\n");
break;
}
return 0;
}上述的代码中,我们要注意的点有:
如果我们把代码中的break去掉,会怎么样呢?
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
switch(n % 3)
{
case 0:
printf("整除,余数为0\n");
case 1:
printf("余数是1\n");
case 2:
printf("余数是2\n");
}
return 0;
}
可以看到,7除以3本来余数是1,但是多了 “余数是2” 的打印。 这是为什么呢?
原因是:switch语句中的分支在没有遇到break语句之前是不会跳出switch的,而是继续往下执行。
例如:
输入:1 输出:星期⼀
输入:2 输出:星期⼆
输入:3 输出:星期三
输入:4 输出:星期四
输入:5 输出:星期五
输入:6 输出:星期六
输入:7 输出:星期天
#include<stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);
switch(day)
{
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;
case 7:
printf("星期天\n");
break;
}
return 0;
}如果需求发生变化,变为:
#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;
}以上的练习中,我们可以体会到:
应该根据实际要求决定是否需要加入break语句。
完
下节就是循环咯~