通用形式:
switch (测试表达式)
{
case 常量1:
语句(可选)
break;(可选)
case 常量2:
语句(可选)
break;(可选)
default:(可选)
语句(可选)
break;(可选)
}
代码示例:
#include<stdio.h>
int main(void)
{
int a;
printf("Enter a integer number (1 - 7), <=0 to quit:");
while (scanf("%d", &a) > 0 && a > 0 && a < 8)
{
switch (a)
{
case 1:
printf("Monthday.\n");
printf("Enter a integer number (1 - 7), <=0 to quit:");
break;
case 2:
printf("Tuseday.\n");
printf("Enter a integer number (1 - 7), <=0 to quit:");
break;
case 3:
printf("Wednesday.\n");
printf("Enter a integer number (1 - 7), <=0 to quit:");
break;
case 4:
printf("Thurthday.\n");
printf("Enter a integer number (1 - 7), <=0 to quit:");
break;
case 5:
printf("Friday.\n");
printf("Enter a integer number (1 - 7), <=0 to quit:");
break;
case 6:
printf("Saturday.\n");
printf("Enter a integer number (1 - 7), <=0 to quit:");
break;
case 7:
printf("Sunday.\n");
printf("Enter a integer number (1 - 7), <=0 to quit:");
break;
}
}
printf("Bye!\n");
return 0;
}
结果:
Enter a integer number (1 - 7), <=0 to quit:1
Monthday.
Enter a integer number (1 - 7), <=0 to quit:2
Tuseday.
Enter a integer number (1 - 7), <=0 to quit:6
Saturday.
Enter a integer number (1 - 7), <=0 to quit:7
Sunday.
Enter a integer number (1 - 7), <=0 to quit:8
Bye!
代码示例:
#include<stdio.h>
int main(void)
{
int a;
printf("Enter a integer number (1 - 7), <=0 to quit:");
while (scanf("%d", &a) > 0 && a > 0 && a < 8)
{
switch (a)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("Workday.\n");
printf("Enter a integer number (1 - 7), <=0 to quit:");
break;
case 6:
case 7:
printf("Weekend.\n");
printf("Enter a integer number (1 - 7), <=0 to quit:");
break;
}
}
printf("Bye!\n");
return 0;
}
结果:
Enter a integer number (1 - 7), <=0 to quit:1
Workday.
Enter a integer number (1 - 7), <=0 to quit:2
Workday.
Enter a integer number (1 - 7), <=0 to quit:4
Workday.
Enter a integer number (1 - 7), <=0 to quit:5
Workday.
Enter a integer number (1 - 7), <=0 to quit:6
Weekend.
Enter a integer number (1 - 7), <=0 to quit:7
Weekend.
Enter a integer number (1 - 7), <=0 to quit:8
Bye!
若 case 后面没有 break, 则会跳过标签而执行标签内的语句, 包括 default 标签内的语句.
代码示例:
#include<stdio.h>
int func(int a);
int main(void)
{
int a = 1;
func(a);
return 0;
}
int func(int a)
{
int b = 0;
switch (a)
{
case 1:b = 10;
case 2: b = 20;
case 3: b = 30;
default:b = 40;
}
printf("%d\n", b);
}
结果:
40
程序示例:
#include<stdio.h>
int main(void)
{
int a;
printf("Enter a integer number (1 - 7), q to quit:");
while (scanf("%d", &a) > 0)
{
switch (a)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("Workday.\n");
printf("Enter a integer number (1 - 7), q to quit:");
break;
case 6:
case 7:
printf("Weekend.\n");
printf("Enter a integer number (1 - 7), q to quit:");
break;
default:
printf("Input error.\n");
printf("Enter a integer number (1 - 7), q to quit:");
}
}
printf("Bye!\n");
return 0;
}
结果:
Enter a integer number (1 - 7), q to quit:0
Input error.
Enter a integer number (1 - 7), q to quit:1
Workday.
Enter a integer number (1 - 7), q to quit:7
Weekend.
Enter a integer number (1 - 7), q to quit:8
Input error.
Enter a integer number (1 - 7), q to quit:q
Bye!
case 标签必须是整型常量表达式, 如字符类型, 1+0 等.
case 一般都只能指定一个值, 不能使用一个范围.
switch 的圆括号的测试表达式必须是整数类型, 包括字符类型.
default 和 case 的先后顺序无关, 可以在前或后.
switch 允许嵌套使用.
程序示例:
#include<stdio.h>
int main(void)
{
int n = 1;
int m = 2;
switch (n)
{
case 1:m++;
case 2:n++;
case 3:
switch (n)
{
case 1:n++;
case 2:m++; n++; break;
}
case 4:m++;
break;
default:
break;
}
printf("m = %d, n = %d\n", m, n);
return 0;
}
结果:
m = 5, n = 3