首先介绍switch语句的语法格式:
switch(表达式)
{
case:常量表达式1:语句系列1
case:常量表达式2:语句系列2
case:常量表达式3:语句系列3
case:常量表达式4:语句系列4
case:常量表达式5:语句系列5
case:常量表达式6:语句系列6
.........
case:常量表达式n:语句系列n
[default: 语句系列n+1]
}
有关switch语句的说明:
- switch后面的表达式可以为整型、字符型或者枚举型,但不允许是实型。
- case后面必须为常量,且类型应与switch中的表达式的类型相同。
- switch语句的执行过程是:首先先计算switch后面表达式的值,然后与各case分支的常量进行匹配,与哪个常量相等,就从该分支的语句序列开始执行,直至遇到break或者switch语句块的右大括号。
- default分支主要处理switch表达式和各case常量都不匹配的情况。她在语法上可以省略,但推荐使用。
例题:年月日的计算
#include<stdio.h>
int main()
{
int y,m,d;
printf("请输入年份和月份:");
scanf("%d%d",&y,&m);
switch(m) //表达式为字符型
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
d=31;
break;//执行停止
case 4:
case 6:
case 9:
case 11:
d=30;
break;
case 2:
if((year%400==0)||(year%4==0&&year%100!=0)) d=29;//闰年
else
d=28;
}
printf("%d.%d has %d days.\n",y,m,d);
return 0;
}