switch语句每个csse后面可以跟多个值吗

如果今天是星期三,后天就是星期五;如果今天是星期六,后天就是星期一。我们用数字1到7对应星期一到星期日。给定某一天,请你输出那天的“后天”是星期几。

输入格式:

输入第一行给出一个正整数D(1 ≤ D ≤ 7),代表星期里的某一天。

输入样例:

3

输出样例:

5

以此题为例,我想到了能不能一个case后面跟多个值例如这样的写法:

#include
int main()
{
	int d;
	scanf("%d", &d);
	switch(d)
	{
		case 1||2||3||4||5:printf("%d", d+2);break;
		case 6:printf("1");break;
		case 7:printf("2");break;
	}
	return 0;
}

但运行结果和我预期的不一样,当输入1,6,7都能正常输出,而输入2,3,4,5时却什么都没输出(这个我不能理解,请教各位大佬),就像这样:

switch语句每个csse后面可以跟多个值吗_第1张图片

 当然也有解决办法,就是利用case语句的穿透效果:

#include
int main()
{
	int d;
	scanf("%d", &d);
	switch(d)
	{
		case 1:
		case 2:
		case 3:
		case 4:
		case 5:printf("%d", d+2);break;
		case 6:printf("1");break;
		case 7:printf("2");break;
	}
	return 0;
}

你可能感兴趣的:(初出茅庐(C语言),c语言,swift)