switch语句可以实现多分支语句,其一般形式如下:
switch(整型表达式)
{
case 整形常量表达式1:语句1;break;
case 整形常量表达式2:语句2;break;
......
case 整形常量表达式n:语句n;break;
default:语句n+1;break;
}
switch语句有两点需要注意,一是switch后面括号里面的必须是整型表达式,二是case后面的也必须是整型常量表达式。另外提醒一下,case和整型常量表达式之间有空格哦,不要写的连在一起了啊,我最开始的时候就写的连在一起了,然后就编译不通过了~
Switch语句用在什么地方比较合适呢?
其实switch语句所体现的是多分支选择,比如我们希望在多种不同的条件下能有不同的的结果时,一般可以用switch语句来实现。例如当我们输入一个数字,希望它能输出与之对应的语句时,就可以用switch啦。话不多说,我们直接上代码~
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int a;
scanf("%d",&a);
switch (a)
{
case 1:
printf("星期1\n");
case 2:
printf("星期2\n");
case 3:
printf("星期3\n");
case 4:
printf("星期4\n");
case 5:
printf("星期5\n");
case 6:
printf("星期6\n");
case 7:
printf("星期7\n");
}
return 0;
}
这段代码我们就是想当输入1~7种的某个数字时,能输出完整的星期几。
当输入“5”这个数字时,运行结果如下:
星期5
星期6
星期7
结果是不是和我们想要的结果不一样?为什么呢,原来呀,当我们输入“5” 时,它会自动匹配与case 5对应的语句然后执行。但是一旦执行完之后,就不会再进行匹配了,直接将所有下面case对应的全部执行。但是有时候我们只希望它匹配到一个之后就跳出switch语句,不需要将下面的全部输出来,这时候,我们只需要在每个case对应的语句最后面加一个“break;”就行了。如:
case 1:
printf("星期1\n");
break;
case 2:
printf("星期2\n");
break;
case 3:
printf("星期3\n");
break;
case 4:
printf("星期4\n");
break;
case 5:
printf("星期5\n");
break;
case 6:
printf("星期6\n");
break;
case 7:
printf("星期7\n");
break;
这时候,当你输入5之后,输出的就只有“星期5”了。break在这里起的作用就是跳出switch语句。
switch语句也还可以这样使用,让我们来看看代码:
switch (a)
{
case 1:
case 2:
case 3:
case 4:
printf("星期1\n");
break;
case 5:
case 6:
printf("星期6\n");
break;
case 7:
printf("星期7\n");
break;
}
这样写也是正确的,就是当你输入1~4时,都会输出星期1,输入5或6时则会输出星期6,输入7时便输出的是星期7。这样写可以使代码看起来更简洁,具体用哪种方法的话还是要根据自己的需求来滴~
另外,swutch也是允许嵌套使用的,请看:
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d", &b);
scanf("%d", &a);
switch (a)
{
case 1:
a++;
printf("星期1\n");
case 2:
switch (b)
{
case 1:
printf("一月\n");
break;
case 2:
printf("二月\n");
break;
case 3:
printf("一月\n");
break;
}
break;
case 3:
printf("星期3\n");
break;
case 4:
printf("星期4\n");
break;
}
return 0;
}
当输入“2\n1”时 ,运行结果:
星期1
二月
通过这个例子我们不难发现break在switch嵌套里面只是结束它自己所在的switch语句哦~