三天打鱼两天晒网 C语言

请问这个代码哪里错了
为什么提交之后用例只通过两个,还有两个显示结果错误

#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;

}

img

参考

#include<stdio.h>
int main()
{
    int N,m;
scanf("%d",&N);
m=N%5;
if(m==4||m==0)
{printf("Drying in day %d",N);}
if(m==1||m==2||m==3)
{printf("Fishing in day %d",N);}
    return 0;
}

if(days>days[2][month-1])//如果输入的日大于当月的最大日期 这一行是day不是days