switch 是“开关”的意思,它也是一种“选择”语句,但它的用法非常简单。
switch 是多分支选择语句。说得通俗点,多分支就是多个 if。

首先我们要了解到switch语句的格式:

switch( t )//表达式,注意此处必须是整数类型int/char/整数/字符常量
{
case 1 ://此处1为常数,也可以是常量表达式
printf("Hello World");//语句1
   break;
case 2 :
printf("你好啊");//语句2
   break;
default:
printf("没有对应的情况");//如果没有在前面找到对应的值就会跳转到这里
}

switch语句可以看作是一种基于计算的跳转 计算控制表达式的值后程序会跳转到相匹配的case(分支标号)处
执行完分支中的最后一条语句后如果后面没有break
就会顺序执行到下面的case里去直到遇到下一个break/switch结束为止

那么,如果我们在每个 case 常量表达式 : 语句 后面没有添加break用来终止循环语句它就会自动读取到最后一种情况,直至结束。那么我们是否可以运用这一特性用于进行一些数据量较少的,但难于计算的情况呢?

答案当然是可以的,下面我们来举个例子:
这道题的题目是:输入年月日,然后根据这给出的年月日计算出这一天是对应这一年中的第几天。

#include<stdio.h>
int main() {
	int a, b, c = 0;
	printf("O.O请依次输入年月日:\n");
	scanf_s("%d %d %d", &a, &b ,&c);
	//数据年月日的输入
	//a对应年,b对应月,c对应日
	int j = 0;
	switch(b) {
	case 12: j += 31;
	case 11: j += 30;
	case 10: j += 31;
	case 9: j += 30;
	case 8: j += 31;
	case 7: j += 31;
	case 6: j += 30;
	case 5: j += 31;
	case 4: j += 30;
	case 3: j += 31;
	case 2: j += 28;
	case 1: j += c;
		break;
	}//这一段switch语句用于列举一年中的每一个月的情况(每一个月有多少天)
	//当b=1时需要加上的是当月的天数
	//如果考虑到会胡乱输入的话可以加上'default :'
	int i = a % 4;
	//考虑到有闰年的存在,4年一闰年,年份能整除4的为闰年
	//但后续条件需要加入不能被100整除,但能被400整除
	if (b >= 3 &&i == 0 &&a % 100 != 0 || a % 400 == 0 ) {
	//限定条件月份大于3且为闰年(b恰巧为2时依旧是不影响)
	//不能被100整除,但能被400整除
		printf("%d年是闰年\n", a);
		int x = j++;
		printf("这一天是在%d年的第%d日\n", a,x);
	}
	else {
		printf("这一天是在%d年的第%d日\n",a,j);
	}
	return 0;
}

上面我们可以看到switch语句中没有’break’来中断这一段循环语句,它带来的的是,当你输入月份后(也就是给b赋值后)他会跳转到到b的值所对应的那种情况,然后一直运行一直给j重新赋值(一直做加法),直至‘{}’中的语句结束为止。这样就达到了叠加的效果。

执行:

android switch开关动态 switch开关语句怎么用_switch语句

最后:
1.switch语句最好用于数据比较少的情况。(个人理解)
2.对于初学者来说这是解决这种题目比较好的方法,到后面还会学到其他的语句,去更好的方法来解决这类问题。
3.做这个的话是考虑到很多老师都不会讲到这里,不会去教学生怎样去合理的运用这种错误去合理的运用。
4.我也是c语言的一枚小菜,这也是我的第一篇文章,不喜勿喷,请及时告知我的错误也会虚心听取的。