引出
C语言虽然没有控制if else 分支数量,但分支过多的时候就会使用上的不方便,以下给大家举一个例子。
例子程序
#include <stdio.h>
int main()
{
int day;
printf("Input integer number:");
scanf("%d",&day);
if(day==1)
{
printf("MONDAY");
}
else if(day==2)
{
printf("TUESDAY");
}
else if(day==3)
{
printf("WEDNESDAY");
}
else if(day==4)
{
printf("THURSDAY");
}
else if(day==5)
{
printf("FRIDAY");
}
else if(day==6)
{
printf("SATURDAY");
}
else if(day==7)
{
printf("SUNDAY");
}
}
在开发中,遇到这种情况,就可以有请switch语句了。
用switch编写,第一次:
咋回事?
没有加break吗?
修改之后。
#include <stdio.h>
int main()
{
int day;
printf("Input integer number:");
scanf("%d",&day);
switch(day)
{
case 1:
{
printf("MONDAY");
break;
}
case 2:
{
printf("TUESDAY");
break;
}
case 3:
{
printf("WEDNESDAY");
break;
}
case 4:
{
printf("THURSDAY");
break;
}
case 5:
{
printf("FRIDAY");
break;
}
case 6:
{
printf("SATURDAY");
break;
}
case 7:
{
printf("SUNDAY");
break;
}
default:
{
printf("error");
break;//default也需要加,结束这个switch
}
return 0;
}
}
运行结果:
所以switch是什么?
switch是一种更简单的一种用来代替具有多分支结构if、if else的语句。
需要重点强调的是,当和某个整型数值匹配成功后,会执行该分支以及后面所有分支的语句。//很奇怪的设定,如果一个通了关,后面关卡就失效了,直接取里面的东西的意思。
简而言之:就是如果不在case:的语句中加入break,那么case就像失效了一样。
也会遇到这么一种情况,你在某一个case中加了,实际就在加了break中跳出,switch
所以一定要加什么?一定要在case:结束的时候加入break.
其中,default是最后的一个分支,有default那么,如果没有case匹配的话,肯定会匹配到default中,带来了两个事,一个是default中的break实际可以不写,第二个就是,如果不需要default实际可以不写的,不写的话,case不匹配就掠过switch语句了。
还有一个需要注意!
case 之后一定是一个整数,或者是一个整数的表达式。
case 2://对
case 'a'+2://对,因为字符和整数可以转换
case a://不对,因为a是变量
总结需要注意:
1.default不是一定有写
2.default位置放在哪都不影响输出结果和case一样
3.case之后一定要是整数和整数表达式
4.switch做相等性检测,不能像
if
语句那样做关系表达式或逻辑表达式计算,进行逻辑真假判断。
2.其他应用类问题:
2.1 我遇到case1:case2:运行相同的语句了怎么办?
#include <stdio.h>
int main()
{
int day;
printf("Input integer number:");
scanf("%d",&day);
switch(day)
{
case 7:case 1:case 2:case 3:case 4:case 5:case 6:
{
printf("SUNDAY");
break;
}
return 0;
}
}
case 1: case2://这样就可以了。
参考总结 :