今天做的题:三天打鱼两天晒网(数组,循环,函数)

/*

中国有句俗语叫“三天打鱼两天晒网”,某人从90年1月1日起开始“三天打鱼两天晒网”。问这个人在以后的某一天中是在“打渔”,还是在“晒网”.

*/


#include <stdio.h>
int panDuanRunNian ( int year);
int main(int argc, const char * argv[])
{
    printf("Enter year/month/day:");
    int year, b, c;
    scanf("%d%d%d",&year,&b,&c);
    int d = 0;
    int a = panDuanRunNian(year);
    int arr[2][12]=
    {{31,29,31,30,31,30,31,31,30,31,30,31},
        {31,28,31,30,31,30,31,31,30,31,30,31}};
    for (int i = 1900; i < year - 1900; i++) {
        if (panDuanRunNian(i)==1)    d+=366;
        else  d+=365;
    }
    for (int i = 1; i < b; i++) {
        if (a == 1)  d+=arr[0][i-1];
        else d+=arr[1][i-1];
    }
    if ((d+c)%5 == 0||(d+c)%5 == 4)   printf("He is sleeping.\n");
    else
        printf("He is fishing.\n");
    return 0;
}
int panDuanRunNian ( int year)
{
    return (year%400==0||(year%4==0&&year%100!=0));
}

下面是之前的解法,忘记什么时候了

#include <stdio.h>
int main()
{
    int y,m,d;//年月日年月日年月日
    scanf("%4d-%2d-%2d",&y,&m,&d);
    int arr[2][12] = {
        {31,29,31,30,31,30,31,31,30,31,30,31},
         {31,28,31,30,31,30,31,31,30,31,30,31}
    };
    //不满足条件的日期先去掉
    if(y < 1990||m>12||d>31)
    {
        printf("Invalid input");
        return 0;
    }
    int days = 0;
    //year
   for(int i = 1990; i< y;i++){
    if((i%400 == 0) || ((i%4 == 0 )&&(i%100 != 0)) )//闰年366
    {
        days += 366;
    }
    else
    {
    days += 365;
    }
   }
   //month
   if(y%400 == 0 || ((y%4 == 0 )&&(y%100 == 0)) )
   for(int i = 0;i < m-1;i++) days+=arr[0][i];
   else
   for(int i = 0;i < m-1;i++) days+=arr[1][i];
   //day
   days += d;
   if(days % 5 <= 3 && days % 5 != 0 )
   printf("He is working");
   else
   printf("He is having a rest");
   return 0;
}

发布了18 篇原创文章 · 获赞 0 · 访问量 199

猜你喜欢

转载自blog.csdn.net/weixin_46456339/article/details/105282944