C语言switch分支
要努力丫! 人气:01、了解switch分支语句
switch语句也是一种分支语句,常常用于多分支的情况。
比如:
输入1,就会输出星期一
输入2,就会输出星期二
…
输入7,就会输出星期七
对于这样的代码需求,如果用if 、else if、else的形式就会显得太复杂。如何用switch语句实现该功能呢?switch语句的结构又是怎样的呢?
switch(整型表达式)
{
语句项;
}
其中,整型表达式必须为整型,且为常量(字符也可以,因为字符也属于是整型的一种,因为字符存储的时候用的是字符的ASCII码值);语句项是一些case语句。
case 整型常量表达式;
语句;
代码实现:
int main() { int day = 0; scanf("%d",&day); switch (day) { case 1: printf("星期一\n"); case 2: printf("星期二\n"); case 3: printf("星期三\n"); case 4: printf("星期四\n"); case 5: printf("星期五\n"); case 6: printf("星期六\n"); case 7: printf("星期日\n"); } return 0; }
运行该代码,发现运行之后得到的结果如下:
1
星期一
星期二
星期三
星期四
星期五
星期六
星期日
显然,这样的结果是不对的。因为执行完case 1 之后,没有东西阻止它,它就会一直case 2、case 3…地执行下去。若在程序运行的时候,输入的是6,就会输出 星期六星期日。switch后面的表达式(day)是几,它就会从case 几进去,决定入口的是表达式day的值以及case后面的值。
修改程序:在每个case后面加上break,以此来跳出case。
case决定的是入口,而break决定的是出口,这才实现了真正的分支。
2、示例
输入1-5就输出工作日,输入6-7就输出休息日。
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; }
测试运行结果如下:
5
工作日
break语句的实际效果是把语句列表划分为不同的部分。
有一个编程好习惯:在最后一个case语句的后面也加上一条break语句。万一之后要在原先程序的基础上再加上一些其它case语句,不至于出现上面的输入1,一下子星期一到星期天全部打印出来的情况。
3、default子句
如果表达的值与所有的case标签的值都不匹配怎么办?其实也没什么,结果就是所有的语句都被跳过而已,程序并不会终止,也不会报错。因为这种情况在C语言中并不认为是错误,但是,如果并不想忽略不匹配所有标签的表达式怎么办?这时候就可以在语句列表中增加一句default子句,将其写在任何一个case标签可以出现的位置。
当switch表达式的值并不匹配所有case标签的值时,这个default子句后面的语句就会执行。注意:每个switch语句中只能出现一条default子句。
int main() { int day = 0; scanf("%d",&day); switch (day) { default: printf("输入错误\n"); break; 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; }
测试结果:
9
输入错误
4、练习
看程序运行的结果是多少?
int main() { int n = 1; int m = 2; switch (n) { case 1 : m++; case 2: n++; case 3: switch (n) //switch可以嵌套使用 { case 1: n++; case 2: m++; n++; break; } case 4: m++; break; default: break; } printf("m=%d,n=%d\n",m,n); return 0; }
主要就是考察switch里面的break的作用。
最终的运行结果如下:
m=5,n=3
加载全部内容