if语句会根据对某个条件的判断结果,将程序的流程分为两支。而本章将要介绍的switch语句,则会将程序分为多个分支。
首先我们来看看下面的代码。
\\显示所输入的整数除以3的余数
#include <stdio.h>
#int main()
{
int num=0; 运行结果1
printf("请输入一个整数:"); 请输入一个整数:6
scanf("%d",&num); 该数能被3整除。
if(num%3==1)
puts("该数除以3余1。");
if(num%3==2) 运行结果2
puts("该数除以3余2。"); 请输入一个整数:35
else 该数除以3余2。
puts("改数能被3整除。");
return 0;
}
本代码使用了两次计算num除以3的余数的表达式num%3,多次输入同一个表达式,容易造成输入错误。不仅如此,同一个除法执行两次也会使程序冗长。
此时,如果使用switch语句的话,程序就变得简单得多了。让我们来看看switch语句写出上面这个结果的代码。
\\显示所输入的整数除以3的余数(switch)
#include <stdio.h>
#int main()
{
int num=0;
printf("请输入一个整数:");
scanf("%d",&num); 运行结果1
switch(no%3); 请输入一个整数:37
case 0:put("该数能被3整除。); 该数除以3余1。
break;
case 1:put("该数除以3余1。);
break;
case 2:put("该数除以3余2。);
break;
return 0;
}
我们可以看到使用switch语句,简短了很多。我们可以看到上述代码中还用到了case,break这两个标识符。下面我们来介绍一下它们。
像“case 1:”这样用来表示程序跳转到标识成为标签。
▶注意:1和:中间有没有空格都可以。但是case和1之前必须有空格,不能写成case1。
标签的值必须是常量,不可为变量。另外,不可以多个标签都是同一个值。程序跳到该标签后会执行其后面的语句。
当程序遇到break语句时,switch语句执行结束。
我们很好理解,break的英文意思有“打破”“脱离”的意思。当执行到位break语句后,程序就会跳出将它围住的switch语句。
在当没有遇到break语句时,程序就会一直走下去,知道遇到break语句或者switch语句结束。
当控制表达式的判断结果与任何一个case都不一致的时候,程序就会跳转到“default :”继续执行。
下面我们来写一串代码,再输入一些值你就能大致明白switch语句的执行流程了。
\\确认switch语句的执行流程
#include <stdio.h>
int main() 运行结果1 运行结果5
{ 整数:1 整数:6
int num=0; A E
printf("整数:"); B
scanf("%d",&num);
switch(num) 运行结果2
{ 整数:2
case 1: puts("A"); puts("B"); break; C
case 2: puts("C");-------注意没有break语句。 D
case 5: puts("D"); break;
case 6: -----------------注意没有break语句。 运行结果3
case 7: puts("E"); break; 整数:3
default : puts("F"); break; F
}
return 0; 运行结果4
} 整数:5
D
通过上述代码,你应该能理解switch语句的执行流程了。最后还有一些注意事项:1.switch的执行语句只能是整数。 2.注意break语句的书写和放置,不要忘记书写break语句。3.通过单一表达式来控制程序流程分支的时候,使用switch语句的效果要比if语句好。
本节就结束啦,下面自己去尝试谢谢代码吧。