C switch 语句
switch 语句是一种有限制的控制流语句,它用于根据表达式的值执行不同的代码块。
一个 switch 语句允许测试一个变量等于多个值时的情况,每个值称为一个 case,且被测试的变量会对每个 switch case 进行检查。
语法
C 语言中 switch 语句的语法:
switch 语句说明:
- switch 后面的表达式的值将会与每个 case 后面的常量值进行比较,直到找到匹配的值或者执行到 default(如果存在)。
- 如果找到匹配的值,将执行相应 case 后面的代码块,然后跳出 switch 语句。
- 如果没有匹配的值,并且有 default,则执行 default 后面的代码块。
- 如果没有匹配的值,并且没有 default,则跳过整个 switch 语句直到结束。
switch 语句必须遵循下面的规则:
switch 表达式的类型: switch 语句中的表达式必须是整数类型(char、short、int或枚举),或者是能够隐式转换为整数类型的表达式。
case 标签的唯一性: 在 switch 语句中,每个 case 标签必须是唯一的,不能有重复的值。
默认情况的可选性: switch 语句中的 default 标签是可选的。如果没有匹配的 case 标签,则会执行 default 标签下的代码块(如果存在)。
case 标签中的常量值: case 标签后面的值必须是一个常量表达式,这意味着它的值在编译时就能确定。
case 标签的顺序: switch 语句中的 case 标签的顺序并不重要,它们可以按照任意顺序编写。程序会按照 case 标签出现的顺序依次匹配。
break 语句的使用: 在每个 case 标签的代码块结束处通常需要使用 break 语句来终止 switch 语句的执行。如果没有 break 语句,程序将会继续执行下一个 case 标签中的代码,直到遇到 break 语句或 switch 语句结束。
switch 语句的嵌套: switch 语句可以嵌套在其他 switch 语句中,但是需要注意代码的可读性和复杂性。
case 标签和表达式的范围: switch 语句的 case 标签可以是整数常量表达式,但不能是浮点数或字符串。
流程图
实例
当上面的代码被编译和执行时,它会产生下列结果:
做得好 您的成绩是 B
C 判断
Helen
QQ9***13813@163.com
参考地址
使用 switch 语句编程,根据输入的年份判断是否为闰年,根据输入的月份判断这月有多少天。
闰年的定义:
#include <stdio.h> int main() { int year, month, flag = 0; printf("请输入年份和月份,以空格间隔:!\n"); scanf("%d %d", &year, &month); if( ( year % 4 ==0 && year % 100 != 0 ) || year % 400 ==0) { flag = 1; printf("您所输入的年份是闰年\n"); } else { flag = 0; printf("您所输入的年龄是平年!!\n"); } switch(month) { case 1: printf("您所输入的是一月共31天\n"); break; case 2: if(flag == 1) printf("您所输入的是二月共29天\n"); else printf("您所输入的是二月共28天\n"); break; case 3: printf("您所输入的是三月共31天\n"); break; case 4: printf("您所输入的是四月共30天\n"); break; case 5: printf("您所输入的是五月共31天\n"); break; case 6: printf("您所输入的是六月共30天\n"); break; case 7: printf("您所输入的是七月共31天\n"); break; case 8: printf("您所输入的是八月共31天\n"); break; case 9: printf("您所输入的是九月共30天\n"); break; case 10: printf("您所输入的是十月共31天\n"); break; case 11: printf("您所输入的是十一月共30天\n"); break; case 12: printf("您所输入的是十二月共31天\n"); break; } return 0; }Helen
QQ9***13813@163.com
参考地址
影鹰
323***0161@qq.com
使用 switch 语句编程,根据输入的年份判断是否为闰年,根据输入的月份判断这月有多少天。
#include<stdio.h> int main() { int year, month, ex; printf("请输入年份及月份(空格分隔):"); scanf("%d %d", &year, &month); if(month < 1 || month > 12) { printf("输入有误!!"); } else { if((year%4 == 0 && year%100 != 0) || year%400 == 0) { ex = 1; printf("%d年为闰年。\n", year); } else { ex = 0; printf("%d年不为闰年。\n", year); } switch(month) { case 4: case 6: case 9: case 11: printf("%d月有%d天。", month, 30); break; case 2: printf("%d月有%d天。", month, 27+ex); break; default: printf("%d月有%d天。", month, 31); } } }影鹰
323***0161@qq.com
Dirac
193***5608@qq.com
将实例中的代码改为以下代码会更好:
#include<stdio.h> int main() { char grade; printf("Please enter the grade:"); scanf("%c",&grade); switch(grade) { case 'A': printf("很棒!\n"); break; case 'B': case 'C': printf("做得好!\n"); break; case 'D': printf("您通过了!\n"); break; case 'E': printf("最好再试一下\n"); break; default: printf("无效的成绩\n"); } return 0; }Dirac
193***5608@qq.com