• C语言之switch语句详解


    C语言之switch语句

    1 switch语句

    1.1 switch语句格式

    1 switch (expresssion)
    {
         case value1:statement;
         case value2:statement;
         default:statement;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

      注意:和if语句一样,switch(expression)后面一样不可加分号,否则一下语句则不会被执行。同时在switch语句中,casedefault语句是没用顺序之分的,只看experssion的值。不过通常情况下,一般把default语句放在最后处理。

    1.2 if语句与switch的区别

    例子:输入一个数,计算除3之后的余数

    如果用if语句实现代码:

    #include 
    int main()
    {
    	int n = 0;
    	scanf("%d", &n);
    	if (n % 3 == 0)
    		printf("整除,余数为0\n");
    	else if (n % 3 == 1)
    		printf("余数是1\n");
    	else
    		printf("余数是2\n");
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    如果用switch语句实现代码:

    #include 
    int main()
    {
    	int n = 0;
    	scanf("%d", &n);
    	switch (n % 3)
    	{
    	case 0:
    		printf("整除,余数为0\n");
    		break;
    	case 1:
    		printf("余数是1\n");
    		break;
    	case 2:
    		printf("余数是2\n");
    		break;
    	}
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    在上述代码中的注意事项:

    1. 在case需要用空格将其与数字隔开
    2. 在每个case语句中,需要用break语句,跳出switch语句,否则则会一直往下执行代码,直到遇到break或者代码结束

    例如:

    #include 
    int main()
    {
    	int n = 0;
    	scanf("%d", &n);
    	switch (n % 3)
    	{
    	case 0:
    		printf("整除,余数为0\n");
    	case 1:
    		printf("余数是1\n");
    	case 2:
    		printf("余数是2\n");
    	}
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    运行结果如下:
    在这里插入图片描述

    1.2switch中的break

      在switch语句中如果没碰到break,代码则会一直执行,那是否每个case后面都要写一个break呢,这个得根据实际情况来看了。

    题目一:输入1~7的数,判断是星期几
    输入1 则打印星期一

    #include 
    //代码一
    int main()
    {
    	int day = 0;
    	scanf("%d", &day);
    	switch (day)
    	{
    	    case 1:
    			printf("星期⼀\n");
    			break;
    		case 2:
    			printf("星期⼆\n");
    			break;
    		case 3:
    			printf("星期三\n");
    			break;
    		case 4:
    			printf("星期四\n");
    			break;
    		case 5:
    			printf("星期五\n");
    			break;
    		case 6:
    			printf("星期六\n");
    			break;
    		case 7:
    			printf("星期天\n");
    			break;
    	}
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    题目二:输入1~7的数,判断是工作日还是休息日
    输入1 则打印工作日
    输入6 则打印休息日

    #include 
    int main()
    {
    	int day = 0;
    	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;
    	}
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    在以上两个题目,我们可以发现有时不需要break可以让代码更加简洁,因此我们要更据实际情况添加break。

    1.3 switch中的default

    在switch语句中如果输入的值没有匹配的代码,这种情况要不不处理,要不在switch中添加default来应对异常情况。

    题目三:输入1~7的数,判断是星期几
    输入1 则打印休息一
    输入8 则打印输入错误

    #include 
    int main()
    {
    	int day = 0;
    	scanf("%d", &day);
    
    	switch (day)
    	{
    		case 1case 2:
    		case 3:
    		case 4:
    		case 5:
    			printf("⼯作⽇\n");
    			break;
    		case 6:
    		case 7:
    			printf("休息⽇\n");
    			break;
    		default:
    			printf("输⼊错误\n");
    			break;
    	}
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
  • 相关阅读:
    好用且免费的ChatGPT工具
    再见,Visual Basic——曾经风靡一时的编程语言
    【ESP32之旅】ESP32-S3 Jlink调试
    java实现异步回调返回给前端
    Dock的安装和使用
    C语言关于&与&&运算符
    Android APP启动优化
    Bootstrap5 网格系统
    【linux】linux开发工具的使用
    IPKISS i3.PCell 模块
  • 原文地址:https://blog.csdn.net/qq_47386786/article/details/134431191