Switch语句

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语句哦~

上一篇:访问者模式


下一篇:noip模拟37