格式
说起来switch就想起某游戏机。。。
switch语句也是分支语句的一种,同
if……else if……else……
类似,他的格式如下
switch (整形表达式)
{
语句项;
}
语句项的格式为
case 整形常量表达式;
语句;
要按照输入的星期数来输出对应的星期数。
emmmmmmmm,好像有点拗口的亚子,假如输入1,那就输出“星期一”这三个字,输入2,就输出“星期二”这三个字……输入5,就给你蹦个野人粗来(无端联想)
听起来仿佛很简单的亚子(实事也确实很简单)
第一种方式:
if……else if……else……
没错就是他,无敌重复大法
#include <stdio.h>
int main()
{
int weekday;
scanf("%d",&weekday);
if (weekday == 1)
printf("星期一\n");
else if (weekday == 2)
printf("星期二\n");
else if (weekday == 3)
printf("星期三\n");
else if (weekday == 4)
printf("星期四\n");
else if (weekday == 5)
printf("星期五\n");
else if (weekday == 6)
printf("星期六\n");
else if (weekday == 7)
printf("星期日\n");//有一说一差点打成了星期七
else
printf("这个不可以有\n");
return 0;
}
感觉这个似乎有点复杂,重复的复,打杂的杂,看起来就不怎么高端的亚子,那就换种法子吧
方法二:
switch
#include <stdio.h>
int main()
{
int weekday;
scanf("%d",&weekday);//看起来是不是很熟悉,
//没错我复制粘贴的
switch(weekday)
{
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;
default:
printf("没这号日子\n")
}
return 0; //有一说一完全没看出来高端到哪去
}
那么问题来了,我现在不想输出星期了,我想输出周内还是周末,那咋整咧?
其实也差不多,look
#include <stdio.h>
int main()
{
int weekday;
scanf("%d",&weekday);
switch(weekday)
{
case 1: //哎嘿,我后边可以不跟东西,想不到吧
case 2:
case 3:
case 4:
case 5:
printf("周内\n");
break;
case 6:
case 7:
printf("周末\n");
break;
default:
printf("没这号日子\n")
}
return 0;
}
当然,这个用if语句也是可以的,switch语句的所有代码都能用if实现
但是 switch 和 if……else if……else…… 还是有区别的
switch是匹配跳转,在case后边的哪个值符合就跳转到相应的case;
而 if 则是判断,即 0 为假,非 0 为真,再进入到对应的 else 中
又有一个问题
int main()
{
int n = 1;
int m = 2;
switch (n)
{
case 1:
m++;
case 2:
n++;
case 3: //这个是可以嵌套的哟
switch (n)
{
case 1:
n++;
case 2:
n++;
m++;
break;
}
case 4:
m++;
break;
default:
break;
}
printf("m = %d , n = %d\n", m, n);
return 0;
}
那么这个程序的结果是什么呢?