#include
int main()
{
int year = 2008;
int month = 8;
int day = 8;
int sum,num;
switch(month)
{
case 1;sum=0;break;
case 2;sun=0+28;break;
case 3;sum=0+28+31;break;
case 4;sum=0+28+31+30;break;
case 5;sum=0+28+31+30+31;break;
case 6;sum=0+28+31+30+31+30;break;
case 7;sum=0+28+31+30+31+30+31;break;
case 8;sum=0+28+31+30+31+30+31+31;break;
case 9;sum=0+28+31+30+31+30+31+31+30;break;
case 10;sum=0+28+31+30+31+30+31+31+30+31;break;
case 11;sum=0+28+31+30+31+30+31+31+30+31+30;break;
case 12;sum=0+28+31+30+31+30+31+31+30+31+30+31;break;
default:printf("还有12个以上的月份?");
}
sun=sun+day;
if(year%4=0)
{
num=1;
}
else
{
num=0;
}
if(num==1)
{
sum+1;
printf("2008年8月8日是该年中第%d\n",sum);
}
return 0;
}
先说逻辑上的:
switch语句中,每个case后的是该月前面所有月份的天数总和。
所以 case 1 时,sum是一月份前所有日子的和,一月份之前可视为没有天数,所以sum是0。这没问题。
可是 case 2 时,sum应该是前一月的天数,也就是一月份的天数,那为什么你写28?
所以 case 2 及之后case中的天数都错了。
还有,有的地方手滑把 sum打成 sun 了。
后面 if 语句判断是否为闰年的条件也写错了。 闰年的条件是“四年一闰,百年不闰,四百年再闰”,并不是简单的被4整除就算闰年。