if(Y%4==0&&Y%100!=0||Y%400==0)这一句,必须在M大于等于2时才会执行,如果只是1月份,干嘛还加1啊,还有,如果是我,我就switch……case……里从12开始写,倒着走,这样不用在每个case后写break,而且每次加上月天数即可,不易出错,你这里是否加对了我没有验证
我写的话就是这样了:
#include
int main(void)
{
int Y,M,D,S;
while(scanf("%d%d%d",&Y,&M,&D)!=EOF)
{
switch(M)
{
case 12:S=D+30;
case 11:S=D+31;
case 10:S=D+30;
case 9:S=D+31;
case 8:S=D+31;
case 7:S=D+30;
case 6:S=D+31;
case 5:S=D+30;
case 4:S=D+31;
case 3:S=D+28;
case 2:S=D+31;
case 1:S=D;
}
if(M>=2&&Y%4==0&&Y%100!=0||Y%400==0)
S=S+1;
printf("%d\n",S);
}
return 0;
}
有多余的输出。。。
或者进入死循环