C语言——switch语句

switch语句

一个switch语句允许测试一个变量同时与多个值进行比较判断的情况。

每个值称为一个case,且被测试的变量会对每个switch case进行检查(没有break)


一、格式

switch(expression)
{
    case constant-expression1:
       statement(s);
       break; 
    case constant-expression2:
       statement(s);
       break; 
    ....
    default:
       statement(s);
       break}

二、流程图

请添加图片描述

三、注意事项

  1. 表达式必须是个值(intbyteshortcharenum)
  2. 一个switch中可有任意数量的case语句,每个case后跟你一个要比较的值和一个冒号。
  3. case的常量与switch的表达式必须是同一类型
  4. case只要匹配上,后面其他的case不再匹配,顺序执行代码,直到遇到break语句或}停止
  5. default一般用在结尾,用于上面所有case都不为真时执行。
  6. default的break不是必需的。default也不是必需的。
  7. 在有break的情况下,各个case和default出现次序不影响结果。
  8. case后跟的值必须互不相同。
  9. switch不支持字符串,浮点数

四、经典例题

  1. 分数转换
    #include<stdio.h>
    int main()
    {
        char score;
        scanf("%c",&score);
        switch(score)
        {
           case 'A':
           		printf("90分以上\n");
           		break;
           case 'B':
           		printf("80到90分\n");
           		break;
           case 'C':
           		printf("70到80分\n");
           		break;
           case 'D':
           		printf("60到70分\n");
           		break;
           case 'E':
           		printf("60分以下\n");
           		break;
           default:
           		printf("输入错误\n");
         }
         return 0;
    }
    
  2. 从键盘上输入2020年的“month”和“day”,要求通过程序输出输入的日期为2020年的第几天
    #include <stdio.h>
    	
    	int main()
    	{
    		int month, day;
    		printf("请输入月份:");
    		scanf("%d", &month);
    		printf("\n请输入当前月第几天:");
    		scanf("%d", &day);
    		if(day<=31 && day>=0 && month>=1 && month<=12)
    		{
    			switch(month)
    			{
    				case 1:
    					printf("输入的日期为2020的第%d天",day);
    					break;
    				case 2:
    					printf("输入的日期为2020的第%d天",day+31);
    					break;
    				case 3:
    					printf("输入的日期为2020的第%d天",day+60);
    					break;
    				case 4:
    					printf("输入的日期为2020的第%d天",day+91);
    					break;
    				case 5:
    					printf("输入的日期为2020的第%d天",day+121);
    					break;
    				case 6:
    					printf("输入的日期为2020的第%d天",day+152);
    					break;
    				case 7:
    					printf("输入的日期为2020的第%d天",day+182);
    					break;
    				case 8:
    					printf("输入的日期为2020的第%d天",day+213);
    					break;
    				case 9:
    					printf("输入的日期为2020的第%d天",day+243);
    					break;
    				case 10:
    					printf("输入的日期为2020的第%d天",day+274);
    					break;
    				case 11:
    					printf("输入的日期为2020的第%d天",day+304);
    					break;
    				case 12:
    					printf("输入的日期为2020的第%d天",day+334);
    					break;
    				default:
    					printf("您的输入有误!");
    					break;
    			}
    		}
    		else
    		{
    			printf("您的输入有误!");
    		}
    		return 0;
    	} 
    

嵌套switch语句

可以在一个 switch 语句内使用另一个 switch 语句。

内部和外部 switch 的 case 常量可以包含共同的值。


一、格式

switch(ch1) {
   case 'A':
      printf("这个 A 是外部 switch 的一部分" );
      switch(ch2) {
         case 'A':
            printf("这个 A 是内部 switch 的一部分" );
            break;
         case 'B': /* 内部 B case 代码 */
      }
      break;
   case 'B': /* 外部 B case 代码 */
}

二、例题

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
     int a=1,b=0;
     switch(a)
     {
         case 1:switch(b)
                {
                     case 0:printf("***");break;
                     case 1:printf("@@@");break;
                }
         case 2:printf("$$$\n");break;
         default:printf("###");
     }
     return 0;
}

三、注意事项

内部switch匹配成功,执行完语句通过break跳出内部switch后,不会再进行外部switch的匹配,顺序执行代码。

例:

#include <stdio.h>
int main()
{
   int a=1,b=0;
   switch (a)
   {  
     case  1:
            switch (b)
            {   
               case  0: printf("**0**");break;
               case  1: printf("**1**");break;
            }
    case  2: printf("**2**");break;
   }
  return 0;
}

上述代码可抽象为下列代码
在这里插入图片描述

结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言中的switch语句是一种多分支语句,用于根据表达式的值选择不同的代码块进行执行。通过switch语句,可以简洁地处理多个可能的情况。使用switch语句时,需要在括号中指定一个表达式,然后根据不同的情况使用case关键字来匹配特定的值。每个case后面是一个代码块,用于处理对应的情况。 在switch语句中,如果没有使用break语句,那么程序将会继续执行下一个case语句,直到遇到break语句或者switch语句的结束大括号。这样可以实现多个情况的处理逻辑。 比如,我们可以使用switch语句来实现一个根据输入的数字输出对应的星期几的功能。通过输入的数字,程序会在相应的case语句中执行对应的代码块,输出相应的星期几。 ```c #include <stdio.h> int main() { int a; scanf("%d", &a); switch (a) { 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; } } ``` 在上面的例子中,通过输入不同的数字,程序会输出对应的星期几。如果输入1,那么程序会输出"周一";如果输入2,那么程序会输出"周二",以此类推。 需要注意的是,为了避免执行多余的代码,我们在每个case语句的末尾都加上了break语句。这样当匹配到对应的case后,程序会执行相应的代码块,并且跳出switch语句。 总结起来,C语言中的switch语句可以让我们根据表达式的值选择不同的代码块执行。通过使用case关键字,我们可以匹配特定的值,并在对应的代码块中处理相应的情况。使用break语句可以避免执行多余的代码。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【C语言】细品分支结构——switch语句](https://blog.csdn.net/apple_61439616/article/details/125639443)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值