请问这个代码哪里错了
为什么提交之后用例只通过两个,还有两个显示结果错误
#include <stdio.h>
#include <stdlib.h>
#define MONTHS 12
int main()
{
int days[2][MONTHS]={{31,28,31,30,31,30,31,31,30,31,30,31},//平年每月天数
{31,29,31,30,31,30,31,31,30,31,30,31}};//闰年每月天数
int x,y,z,sum=0;//sum为总天数
int year,month,day;
scanf("%4d-%2d-%2d",&year,&month,&day);//输入日期
int i,a;
if(year<1990||month<=0||month>12||day<=0)
{printf("Invalid input");
exit(0);}
{if((year%4==0)&&(year%100!=0)||(year%400==0))//如果是闰年
{
if(days>days[2][month-1])//如果输入的日大于当月的最大日期
{printf("Invalid input");
exit(0);}
}
else
{
if(day>days[1][month-1])
{
printf("Invalid input");
exit(0);
}
}
}
x=year-1990;//年差
sum+=x*365;
int count=0;//记数,记从1990到输入的年份之前的闰年数
for(a=1990;a<year;a++)
{
if((a%4==0)&&(a%100!=0)||(a%400==0))
count++;
}
sum+=count;//补上闰年2月多出的一天
y=month-1;
for(i=0;i<y;i++)
{
if((year%4==0)&&(year%100!=0)||(year%400==0))
sum+=days[2][i];
else
sum+=days[1][i];
}
z=day;
sum+=z;
if(sum%5==1||sum%5==2||sum%5==3)//余数判断工作还是休息
printf("He is working");
else
printf("He is having a rest");
return 0;
}