c++打卡第八天

一、问题描述。

     我国古代有一种说话叫三天打鱼两天晒网,如果一个人从1990年1月1日开始,开始三天打鱼两天晒网,问输入一个年月日,此时他是在打鱼还是晒网。

二、设计思路。

①、我们可以通过计算从输入日期到1990年1月1日总共有多少天,总天数除余周期五,如果结果为1.2.3则此人此时正在打鱼,如果结果为4.5,那么此人正在晒网。

②、我们可以通过定义函数来求输入的日期到目标日期的总数。

③、由于涉及到闰年问题,则需要定义函数来判断是否为闰年。

④、当加算到本年的时候,我们可以定义月份数组,并且注意闰年二月是29天,平年二月28天。

⑤、加到本月的时候,加入本月的日期天数即可。

三、流程图实现。

五、代码实现。

#include<iostream>
using namespace std;
int run(int ye)
{
    if((ye%4==0&&ye%100!=0)||(ye%400==0))
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
int to(int y,int m,int d )
{
    int mo[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    int sum=0;
    for(int i=1990;i<y;i++)
    {
        if(run(i))
        {
            sum=sum+366;
        }
        else
        {
            sum=sum+365;
        }
    }
    if(run(y))
    {
        mo[2]=mo[2]+1;
    }
        for(int j=1;j<m;j++)
        {
                 sum=sum+mo[j];
        }
        sum=sum+d;
        return sum;
}
int main()
{
    int year,month,day;
    cin>>year;
    cin>>month;
    cin>>day;
    int total=0;
    total=to(year,month,day);
    cout<<"总天数为:"<<total<<endl; 
    int result=total%5;
    if((result==1)||(result==2)||(result==3))
    {
        cout<<"此人在打鱼"<<endl; 
    }
    else 
    {
        cout<<"此人在晒网"<<endl; 
    }
    return 0;
}

五、结果实现。

 

posted @ 2023-04-18 19:58  七安。  阅读(16)  评论(0编辑  收藏  举报