#include <stdio.h>
int main()
{
/* 定义需要计算的日期 */
int date = 0;
int year = 2008;
int month = 8;
int day = 8;
switch(month)
{
case 12:date+=30;
case 11:date+=31;
case 10:date+=30;
case 9:date+=31;
case 8:date+=31;
case 7:date+=30;
case 6:date+=31;
case 5:date+=30;
case 4:date+=31;
case 3:
if((year%4==0&&year%100!=0)||year%400==0)
{
date+=29;
}
else
{
date+=28;
}
case 2:
date+=31;
case 1:
date+=day;
printf("%d年%d月%d日是该年的第%d天",year,month,day,date);
break;
default:
printf("error");
break;
}
return 0;
}
可不可以解释一下这段代码,没看懂,就那个switch语句后面月份那些代码,谢谢
统计2008年8月8日是该年的第几天,按当月即8月的上一个月(7月份)开始统计,从case 8 开始,因为case 后面没有break,所以从8 开始一直往下加,分别统计 7月 6月 5月 ....1月 每个月的天数累加。当统计到2月份时,闰年判断,是闰年就多加1天。到 case 1时,统计的就是当月即8月8日 的天数 8天。
swich...case...里面的就是算各自月份的天数,如果是闰年2月份就29天,否则28天。
实质就是累加,把前几个月的加起来。