switch语句

110 阅读2分钟

switch语句 是一种多分支选择结构,常用于根据表达式的值执行不同的代码块。它可以简化多重 if-else 的逻辑,提升代码的可读性。 break的作用:跳出 switch case default的执行流程 如果匹配成功,就执行对应的代码,直到遇到break为止

例题1

#include<stdio.h>

int main(){
    //printf("switch");
	//考试分数
	int score = 90;
	
	//case的值要与表达式的值完全一样 ,才是匹配成功 
	//if(score>=60 && score <=70) 
	switch(score){
		case  60:
			printf("额外做一张试卷");
			break;
		case  70:
			printf("额外做半张试卷");
			break;
		case  90:
			printf("出去玩");
			break;
		default:
			printf("你考的分数不在处理范围");
			break;
	} 
}

例题2

#include<stdio.h>
int main(){
	//写程序,汇报我的工作日常 
	//提示用户输入1-7的数字,分别获取我的周一到周日的工作 
    int day = 1;
    printf("输入1-7的数字,获取我的工作日历");
    scanf("%d",&day);
	
	
	switch(day){
		case 1:
			printf("上6节课");
			break;
		case 2:
			printf("上6节课");
			break;
		case 3:
			printf("上6节课");
			break;
		case 4:
			printf("上3节课");
			break;
		case 5:
			printf("上6节课");
			break;
		case 6:
			printf("睡觉");
			break;
		case 7:
			printf("写作业");
			break;
		default:
			printf("输入有误,没有这个日历");
			break;
	}
}

注意

  • case后的值必须是常量表达式,且不能重复。
  • 如果没有break,程序会继续执行后续的所有分支(称为“贯穿”)。
  • default分支是可选的,用于处理所有未匹配的情况。
  • 嵌套使用时需注意代码可读性

作业

image.png

#include<stdio.h>
int main(){
	int mouth,year,days;

	printf("请输入月份:");
	scanf("%d",&mouth); 
		
switch(mouth){
	case 1:
	case 3:
	case 5: 
	case 7:
	case 8:
	case 10:
	case 12:
	  days=31;
	  break;
	case 4:
	case 6:
	case 9: 
	case 11:
	  days=30;
	  break;
	case 2:
	  printf("请输入年份:");
	  scanf("%d",&year);
	  if((year%4==0&&year%100!=0)||(year%400!=0)){
	  	days=29;
	  }else{
	  	days=28;
	  }
      break;
    default:
    	printf("输入有误,月份应该在1-12之间。\n");
    	break;
      }
      printf("%d月有%d天\n",mouth,days);
}