打鱼还是晒网

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

首先输入判断的年份和日期,根据输入的年份和日期计算出距离1990年1月1日的天数,由于打鱼和晒网的天数一个周期为五天,用计算的天数除以5余数,若余数为1,2,3则为打鱼,否则为晒网。

 

 

#include<iostream>
using namespace std;
struct Date//“创建一个日期结构体 ”
{
int year;//“定义结构体变量年份 ”
int month;//“定义结构体变量月 ”
int day;//“定义结构体变量日 ”
};
int runYear(int year)//“判断是否为闰年的函数 ”
{
if((year%4==0&&year%100!=0)||(year%400==0))
{
return 1;//“是闰年返回值1”
}else{
return 0;//“不是闰年返回值0”
}
}
int countDay(struct Date d)//“计算x的值的函数 ”
{
int perMonth[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//“创建12个月每个月对应天数的数组”
int x=0;
for(int year=1990;year<d.year;year++)//“求日期之前每一年的天数加和”
{
if(runYear(d.year))
{
x=x+366;
}else{
x=x+365;
}
}
if(runYear(d.year))
{
perMonth[2]=perMonth[2]+1;//闰年2月有29天
}
for(int i=0;i<d.month;i++)
{
x=x+perMonth[i];//将当年内的天数加和
}
x=x+d.day;//将本月的天数加上
return x;//返回x的值
}
int main()
{
struct Date d;
int x;//"x表示输入日起到1990年1月1日的天数 ”
int y;//“x除以5取余数的结果 ”
cout<<"请输入年份日期:"<<endl;
cin>>d.year>>d.month>>d.day;//“输入年份日期 ”
x=countDay(d);//“调用函数求出x的值”
y=x%5;//“求出y的值 ”
if(y>0&&y<4)
{
cout<<"今天要打鱼"<<endl; //“y的值为1,2,3 则输出打鱼”
}else{
cout<<"今天要晒网"<<endl; //“否则则输出晒网 ”
}
return 0;
}

测试结果之一如下:

 

posted @ 2023-04-12 17:21  为20岁努力  阅读(24)  评论(0编辑  收藏  举报