三天打鱼两天晒网

题目:中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。用C或C++语言/java/python实现程序解决问题。
解决思路:

根据题意可以将解题过程分为三步:

1)计算从2010年1月1日开始至指定日期共有多少天;

2)由于“打鱼”和“晒网”的周期为5天,所以将计算出的天数用5去除;

3)根据余数判断他是在“打鱼”还是在“晒网”;
若 余数为1,2,3,则他是在“打鱼”
否则 是在“晒网”
在这三步中,关键是第一步。求从2010年1月1日至指定日期有多少天,要判断经历年份中是否有闰年,二月为29天,平年为28天。闰年的方法可以用伪语句描述如下:
如果 ((年能被4除尽 且 不能被100除尽)或 能被400除尽) 则 该年是闰年;
否则 不是闰年。

#include<iostream>
using namespace std;
class Time{
private:
    int year; //定义年
    int month; //定义月
    int day; //定义日
    int days; //定义除5所剩的余数
    int sum; //距2010年1月1日的总天数
    int str[12]; //平年每月的天数
public :
	 int jisuan();//通过判断闰年平年进行总天数的计算
	int panduan();//判断这天是打鱼还是晒网
};
int Time::jisuan () //判断平闰年函数
{ 
	sum=0;
	int str[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    int YEAR=2010; //定义初始变量2010
    for (YEAR;YEAR<year;YEAR++) //计算到本年为止前几年的天数
    {
        if((YEAR%400==0)||(YEAR%4==0&&YEAR%100!=0)) //当前年份为闰年,总天数加366天
        {
            sum+=366;
        }
        else//为平年,总天数加365天
        {
            sum+=365; 
        }
    }
    for(int i=1;i<month;i++)
    {
        sum+=str[i-1]; //加当前月份的天数
        /* 如果是二月,则判断年份是闰年还是平年,闰年二月天数加1*/
        if(month==2&&(year%400==0)||(year%4==0&&year%100!=0))
        {
            sum+=1;
        }
    }
    sum+=day; //计算出到输入日期的总天数
    days=sum%5;//除5取余
    return days;
}
int Time::panduan()
{
	int str[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    
    cout<<"请输入年月日"<<endl;//进行年月日的输出
    cin>>year;
    cin >>month;
    cin>>day;
    
    if (year<2010) //判断年是否符合事实
    {
        cout<<"年份输入错误,请重新输入"<<endl;
        cin>>year;
    } 
     if(month<=0||month>12) //判断月是否符合事实
    {
        cout<<"月份输入错误,请重新输入("<<endl;
        cin>>month;
    }
     if(day<=0||day>str[month-1]) //判断日是否符合事实
    {
        cout<<"天数输入错误,请重新输入"<<endl;
        cin>>day;
    }
    jisuan();
    if (days>0&&days<4)//当余数为1,2,3时,这天在打鱼

        cout<<"该天在打鱼"<<endl;
    else//否则在晒网
        cout<<"该天在晒网"<<endl;
    return days;
}

int main()//主函数
{
    Time today;//定义一个时间类的对象
   
       today.panduan();//调用类中判断打鱼还是晒网
   
    return 0;
}

三天打鱼两天晒网