一道第几天的C编程问题
某道题的题目是这样的Problem Description
给定一个日期,输出这个日期是该年的第几天。
Input
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。
Sample Input
1985/1/20
2006/3/12
Sample Output
20
71
我的代码:
#include<stdio.h>
int main()
{
int year,month,day;
int s=0,sum=0,i;
while(scanf("%d/%d/%d",&year,&month,&day)!=EOF)
{
if(!((year%4==0&&year%100!=0)||year%400==0))
{
for(i=0;i<month;i++)
{
switch(i)
{
case 12: s=31;break;
case 11: s=30;break;
case 10: s=31;break;
case 9: s=30;break;
case 8: s=31;break;
case 7: s=31;break;
case 6: s=30;break;
case 5: s=31;break;
case 4: s=30;break;
case 3: s=31;break;
case 2: s=28;break;
case 1: s=31;break;
default :break;
}
sum+=s;
}
printf("%d\n",sum+day);
}
else
{
for(i=0;i<month;i++)
{
switch(i)
{
case 12: s=31;break;
case 11: s=30;break;
case 10: s=31;break;
case 9: s=30;break;
case 8: s=31;break;
case 7: s=31;break;
case 6: s=30;break;
case 5: s=31;break;
case 4: s=30;break;
case 3: s=31;break;
case 2: s=29;break;
case 1: s=31;break;
default :break;
}
sum+=s;
}
printf("%d\n",sum+day);
}
}
}
为什么答案是错误的。。 = =好郁闷啊...在一个hdu上做的,还有 能不能简化一下