在C语言中,`switch`语句是一种多路选择结构,它根据一个表达式的值来选择执行不同的代码块。下面是一个基本的`switch`语句的使用示例:
```c
include
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;
default:
printf("输入错误\n");
break;
}
return 0;
}
```
在这个例子中,`switch`语句根据变量`day`的值来选择执行不同的代码块。如果`day`的值是1到5之间的整数,程序将输出“工作日”。如果`day`的值是6或7,程序将输出“休息日”。如果`day`的值不是1到7之间的整数,程序将输出“输入错误”。
switch语句的语法
`switch`语句的基本语法如下:
```c
switch (expression) {
case constant1:
statement1;
break;
case constant2:
statement2;
break;
/* 可选的 */
default:
statementN;
}
```
`expression`:一个表达式,其结果用于与各个`case`标签的常量值进行比较。
`case constant1:`:一个`case`标签,后面跟一个常量表达式和一个冒号。
`statement1;`:与`case`标签对应的代码块。
`break;`:可选的语句,用于跳出`switch`语句。
`default:`:可选的`case`标签,用于处理所有未匹配的表达式值。
注意事项
每个case后面必须有break语句:
如果不使用`break`,程序将继续执行下一个`case`的代码块,直到遇到`break`或`switch`语句结束。这称为“fall-through”行为。
表达式类型:
`switch`语句的表达式可以是整型、枚举类型或类类型,但`case`标签的常量表达式必须是整型或枚举类型。
default分支:
如果没有匹配的`case`,且存在`default`分支,则执行`default`分支的代码块。
示例
```c
include
int main() {
int day = 0;
int month = 0;
int year = 0;
printf("请输入日期(格式:dd mm yyyy):");
scanf("%d %d %d", &day, &month, &year);
switch(month) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
printf("%d年%d月%d日是工作日\n", year, month, day);
break;
case 4: case 6: case 9: case 11:
printf("%d年%d月%d日是工作日\n", year, month, day);
break;
case 2:
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
printf("%d年%d月%d日是工作日\n", year, month, day);
} else {
printf("%d年%d月%d日是休息日\n", year, month, day);
}
break;
default:
printf("输入错误\n");
break;
}
return 0;
}
```
在这个示例中,`switch`语句根据月份来判断日期是工作日还是休息日,并考虑了闰年的情况。