杭电acm 给定一个日期,输出这个日期是该年的第几天。该如何处理

杭电acm 给定一个日期,输出这个日期是该年的第几天。

#include<stdio.h>
 int main()
 {
    int day,k,year,sum;
    while((scanf("%d/%d/%d",&year,&k,&day))!=EOF)
  {
     if(year%4==0)
   {
         if(k<=2)
     {
           sum=(k-1)*31+day;
           printf("%d\n",sum);
     }
         else if(k>=3 &&k <=7)
      {
           sum=60+(k-3)/2*30+day+(k-2)/2*31;
           printf("%d\n",sum);
      }
      else if(k==8)
      {
       sum=213+day;
        printf("%d\n",sum);
      }
      else if(k>8  && k<=12)
      {
       sum=244+(k-8)/2*30+day+(k-9)/2*31;
        printf("%d\n",sum);
      }
   }
        else
         {
        if(k<=2)
          {
           sum=(k-1)*31+day;
           printf("%d\n",sum);
          }
             else if(k>=3 && k<=7)
      {
           sum=59+(k-3)/2*30+day+(k-2)/2*31;
           printf("%d\n",sum);
      }
      else if(k==8)
      {
       sum=212+day;
        printf("%d\n",sum);
      }
      else if(8<k && k<=12 )
      {
       sum=243+(k-8)/2*30+day+(k-9)/2*31;
        printf("%d\n",sum);
      }
        }
}
return 0;
}
试了很多数据都感觉没问题,但就是通不过审批
------解决方案--------------------
首先,判断是否闰年不是那么简单,你百度一下(关键)。
再次,你试试用switch(月份),来求日期,这种方式执行速度更快。
------解决方案--------------------
判断是否闰年的条件不对,应该是“能被4整除却不能被100整除 或 能被400整除的年份是闰年”,还有代码风格真风骚啊,乱。。。