元小白(猿小白)进阶日记:三(switch)

2、switch

switch (整形表达式)
{
	case(整形表达式):
		;break;
	case(整形表达式):
			;break;
	default:(可以放在switch()的开头);break; (break可有可无)。

例如:输出星期几

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
	int day = 0;
	int n = 1;
	scanf("%d", &day);
	switch(day)
	{
	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("星期天\n");
		break;
	default:
		printf("输入错误\n");
		break;
	}
	system("pause");
	return 0;
}

输出工作日

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
	int day = 0;
	int n = 1;
	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;
	default:
		printf("输入错误\n");
		break;
	}
	system("pause");
	return 0;
}

default表示表达式的值与所有的case中的表达式的值都不想等的情况。每个switch中只能出现一个default,并且它可以出现在switch中的任何一个位置,并不影响使用。

误区一: break每次只能跳出一层语句

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
	int n = 1;
	int m = 2;
	switch (n)
	{
	case 1:m++;
	case 2:n++;
	case 3:
			switch (n)
			{
			case 1:n++;
			case 2:m++, n++; break;//跳出此处的switch,并不影响外层的switch。//若此处没有break,程序依然会运行到下一行程序,不会形成死循环。
			}//break;//此处的break用于结束外部的switch,所以程序不会在运行下去。n=3,m=4.
	case 4:m++; break;//程序仍会运行此处的m++。此处的break用于跳出外层的这个switch,
	default:   break;
	}
	printf("n=%d  m=%d\n", n, m);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_44748803/article/details/88984443