🌹个人主页🌹:喜欢草莓熊的bear
🌹专栏🌹:C语言基础
目录
1.4 switch语句中的case和default的顺序问题
5.3 do while循环中的break 和 continue
前言
接着上期写的,本期内容包含:switch语句、for循环、while循环、do while循环、break和continue、goto语句这些。
一、switch语句
除了
if
语句外,C语言还提供了
switch
语句来实现分支结构。
switch
语句是⼀种特殊形式的
if...else
结构,用于判断条件有多个结果的情况。它把多重的 else if
改成更易用、可读性更好的形式。
switch (expression)
{
case value1: statement
case value2: statement
default: statement
}
上面代码中,根据表达式
expression
不同的值,执行相应的
case 分支
。如果找不到对应的值,
就执行
default 分支
。
注:
•
switch
后的
expression
必须是整型表达式
•
case
后的值,必须是整形常量表达式
1.1 if语句和switch语句的对比
练习:输⼊任意⼀个整数值,计算除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;
}
上述的代码中,我们要注意的点有:
1.
case
和后边的数字之间必须有空格
2.
每⼀个
case
语句中的代码执行完成后,需要加上
break
,才能跳出这个switch语句。
1.2 switch语句中的break
前⾯的代码中,如果我们去掉case语句中的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
语句也是分支效果的,只有在
switch
语句中使用
break
才能在跳出
switch
语
句,如果某⼀个
case
语句的后边没有
break
语句,代码会继续玩下执行,有可能执行其他
case
语句中的代码,直到遇到
break
语句或者
switch
语句结束。就比如上面的代码就执行了
case 2 中的语句。所以在 switch
语句中
break
语句是⾮常重要的,能实现真正的分⽀效果。当然, break
也不是每个
case
语句都得有,这就得根据实际情况来看了。