C语言——打鱼晒网问题

一、实例说明

如果一个渔夫从 2011 年 1 月 1 日开始每三天打一次渔,两天晒一次网,编程实现当输入 2011 年1月1日以后的任意一天, 输出该渔夫是在打渔还是在晒网。

二、实现代码

#include<stdio.h>
int main()
{
    int year,month,day;
    int y=2010;
    int sum=0;
    int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//建立一个有平年各月份天数的数组
    printf("请按照年月日的顺序输入日期,中间用空格隔开\n");
    scanf("%d""%d""%d",&year,&month,&day);//输入日期
    while((year<2010)||(month<1||month>12)||(month==2&&(year%4!=0||year%400!=0)&&day>=29)||(day>a[month]))
    {
        printf("输入日期错误,请重新输入\n");
        printf("请按照年月日的顺序重新输入日期,中间用空格隔开\n");
        scanf("%d""%d""%d",&year,&month,&day);
    }
    //判断输入日期是否正确
    for(y;y<year;y++)//用此循环加上相差年份所隔的天数。 
    {
        if((y%400==0)||(y%4==0&&y%100!=0))//判断此年份是否是闰年 
        {
            sum+=366;
        }//是闰年,则总天数加上366. 
        else
        {
            sum+=365;
        }//是平年,总天数加上365 
    }
    for(int m=1;m<month;m++)//用此循环加上所隔月份的总天数 
    {
        sum+=a[m];
        if(m==2&&((year%400==0)||(year%4==0&&year%100!=0))) 
        {
            sum+=1;
        }//判断月份是否为闰年2月,若是2月,则总天数加一。
    }
    sum+=day;//总天数加上日 
    if((sum%5==1)||(sum%5==2)||(sum%5==3))//用相隔总天数除以周期5,若余数为1,2,3,则此人打鱼。 
    {
    printf("这个人今天打鱼\n");
    }
    else//否则,这个人晒网
    {
    printf("这个人今天晒网\n"); 
    }
    return 0;
}
三、实现结果

C语言——打鱼晒网问题

 


 

上一篇:CodeForces 1555E Boring Segments


下一篇:JAVA学习笔记(七)-机票的计算