三天打鱼两天晒网,判断打鱼还是晒网

这是题目

img

然后是我的代码

#include <stdio.h>
int main()
{
    int year,month,day,i,m,w,l,k;//l判断闰年与否,闰年为1,平年为2
    //k为加上某年到2000年总天数
    //w为总天数对5取余的余数
    //i为输入的年份
    //m为月份 
    int n=0,sum=0;//n为输入年的天数 
    int a[12]={31,0,31,30,31,30,31,31,30,31,30,31};
    scanf("%d/%d/%d",&year,&month,&day);
    for(i=year;i>=2000;i--)
    {
    if((i%4==0&&i&&100!=0)||year%400==0)
    l=1;
    else
    l=2;
    if(l==1)
        {
        a[1]=29;
        if(i==year)
            {
            for(m=1;m<month;m++)
                {
                if((i!=2000)&&(m!=1))
                n+=a[m-1];
                }
        n+=day;
        sum+=n;
            }
        if(i!=year) 
            {
        sum+=366;
            }
        }
    else if(l==2)
        {
        a[1]=28;
        if(i==year)
            {
            for(m=1;m<month;m++)
                {
                n+=a[m-1];
                }
        n+=day;
        sum+=n;
            }
        if(i!=year)
            {
        sum+=365;
            }
        }
    }
    w=sum%5;
    if(w>=1&&w<=3)
    printf("fishing");
    else if(w==4||w==0)
    printf("sleeping");
    return 0;
}

运行结果是这

img

结果应该是fishing的,不知道哪里算法错了

可以在我的基础上改一下吗,谢谢各位

修改如下,供参考:

#include <stdio.h>
int main()
{
    int year,month,day,i,m,w,l,k;//l判断闰年与否,闰年为1,平年为2
    //k为加上某年到2000年总天数
    //w为总天数对5取余的余数
    //i为输入的年份
    //m为月份
    int n=0,sum=0;//n为输入年的天数
    int a[12]={31,0,31,30,31,30,31,31,30,31,30,31};
    scanf("%d/%d/%d",&year,&month,&day);
    for(i=year;i>=2000;i--)
    {
        if((i%4==0 && i%100!=0) || (i%400==0))
        //((i%4==0&&i&&100!=0)||year%400==0)  修改
            l=1;
        else
            l=2;
        if(l==1)
        {
            a[1]=29;
            if(i==year)
            {
                for(m=1;m<month;m++)
                {
                    //if((i!=2000)&&(m!=1))  修改
                    n+=a[m-1];
                }
                n+=day;
                sum+=n;
            }
            if(i!=year)
            {
                sum+=366;
            }
        }
        else if(l==2)
        {
            a[1]=28;
            if(i==year)
            {
                for(m=1;m<month;m++)
                {
                    n+=a[m-1];
                }
                n+=day;
                sum+=n;
            }
            if(i!=year)
            {
                sum+=365;
            }
        }
    }
    w=sum%5;
    if(w>=1&&w<=3)
         printf("fishing");
    else if(w==4||w==0)
         printf("sleeping");
    return 0;
}


#include<stdio.h>
/*兔子骑士叫旺仔原创*/
main()
{
    /*year:年份 month:月份 day:号 time:时间跨度 */
    int year, month, day, time, i;
    
    /*每月的天数*/
    int each_month[12] = {31, 29, 31, 30, 31, 30 ,31, 31, 30, 31, 30, 31};
    
    scanf("%d-%d-%d", &year, &month, &day);
    
    time = 0;
    
    /*整年计算天数*/
    for(i = 1990; i < year; i++)
    {
        if((i % 400 == 0) || (i % 4 == 0) && (i % 100 != 0))
        {
            time += 366;
        }
        else
        {
            time += 365;
        }
    }
    
    /*判断闰年,闰年2月有29天,每月的天数不做更改*/
    if((year % 400 == 0) || (year % 4 == 0) && (year % 100 != 0))
    {
        /*月份大于2月,依次加上每个月的天数*/ 
        if(month > 2)
        {
            for(i = 0; i < (month - 1) ; i++)
            {
                time += each_month[i];
            }
            /*加上几号*/ 
            time += day;
        }
        /*月份小于2月,就只有1月,直接加上几号即可*/
        else if(month < 2)
        {
            time += day;
        }
        /*正好2月,加上1月份的31天和2月份的号数*/
        else
        {
            time = time + 31 + day;
        }
    }
    /*平年情况*/
    else
    {
        /*更改平年2月份天数为28天*/
        each_month[1] = 28;
        /*同闰年部分*/
        if(month > 2)
        {
            for(i = 0; i < (month - 1) ; i++)
            {
                time += each_month[i];
            }
            time += day;
        }
        else if(month < 2)
        {
            time += day;
        }
        else
        {
            time = time + 31 + day;
        }        
    }
    /*判断处于打鱼日还是晒网日*/
    if(0 < (time % 5) && (time % 5) < 4)
        printf("他在打鱼");
    else
        printf("他在晒网");
}