(八)switch语句

前面我们已经学习了if语句,会发现if语句在多重嵌套下,会显得非常凌乱,代码的可读性非常差,所以就有了今天我们要学习的switch语句,它和if语句能实现相同的功能,只不过在多重判断下,运用switch语句会使代码更加的简洁。

switch语句的用法如下:

switch (表达式)
{
    case 常量表达式1:    语句1
    case 常量表达式2:    语句2
       ┇
    case 常量表达式n:    语句n
    default:        语句n+1
}

当switch后面括号内“表达式”的值与某个case后面的“常量表达式”的值相等时,就执行此case后面的语句。执行完一个case后面的语句后,流程控制转移到下一个case继续执行。如果你只想执行这一个case语句,不想执行其他case,那么就需要在这个case语句后面加上break,跳出switch语句。正常我们都希望只执行一个符合条件的case语句,所以一般后面都会加上break,以便执行完成后,直接跳出switch语句


下面举例来说明,我们从键盘上随意输入1,2,3,4,5,6,7七个数字中的一个,如果输入1,就打印Monday,如果输入2,就打印Friday,依次类推

#include<stdio.h>
void main()
{
	int c;
	printf("请输入1-7中的一个数字: ");
	scanf("%d",&c);
	switch(c)
	{
		case 1:
			printf("Monday");
			break;
		case 2:
			printf("Tuesday");
			break;
		case 3:
			printf("Wednesday");
			break;
		case 4:
			printf("Tursday");
			break;
		case 5:
			printf("Friday");
			break;
		case 6:
			printf("Saturday");
			break;
		case 7:
			printf("Sunday");
			break;
		default:
			printf("你输入了错误的数字");
	}
}


这么简单的代码,我不添加注释相信大家也一定能读明白的,我们来说以下default的作用,若所有的 case 中的常量表达式的值都没有与 switch 后面括号内“表达式”的值相等的,就执行 default 后面的语句,如果 default 是最后一条语句的话,那么其后就可以不加 break,因为既然已经是最后一句了,则执行完后自然就退出 switch 了。如果我们输入8,程序就会执行default后面的语句,大家可以试着把每个case后面的break都删掉,再运行一遍,看看会有什么样的结果,就会彻底明白break的作用了。


下面咱们来利用switch做一个四则运算的计算器

#include<stdio.h>
void main()
{
	char c;     //用来接收输入的运算符
	int a=7,b=8;
	printf("请输入运算符+ - * /: ");
	scanf("%c",&c);
	switch(c)
	{
	case '+':      //注意,c为字符型数据,需用单引号括起来
		printf("a+b=%d",a+b);
		break;
	case '-':
		printf("a-b=%d",a-b);
		break;
	case '*':
		printf("a*b=%d",a*b);
		break;
	case '/':
		printf("a/b=%d",a/b);
		break;
	default:    //如输入的不是+-*/,则执行此句
		printf("运算符输入错误");   
	}
}

编辑于 2018-11-27 11:24