4.19 1.3

一、问题描述

从1990年1月1日开始三天打鱼两天晒网,以后的某一天是打鱼还是晒网?

二、分析

1、计算1.1到指定天数有几天

2、周期为5天,用天数除以5

3、用余数判断是打鱼还是晒网

1 2 3 都为打鱼,4 0为晒网

先利用循环求出1.1到指定天数有几天,还要考虑闰年情况(闰年二月29天,平年二月28天)。

用year%4==0&&year%100!=0||year%400==0来判断是否为闰年

 三、代码

#include<iostream>
using namespace std;
typedef struct date{
int year,month,day;
}DATE;
int runyear(int);
int countDay(DATE);//定义
void main()
{
DATE today;//指定日期
int totalDay;//指定日期到1990.1.1的天数
int result;//余数
cout<<"请输出指定日期"<<endl;
cin>>today.year>>today.month>>today.day;
totalDay=countDay(today);
result=totalDay%5;
if(result>0&&result<4)
{cout<<"今天打渔";}
else
{cout<<"今天晒网";}
}
//接下来判断是否为闰年
int runYear(int year)
{
if((year%4==0&&year%100!=0)||(year%400==0))//闰年
{return 1;}
else
{return 0;}//平年
}
//计算天数
int countDay(DATE currentDay)
{
int perMonth[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//每月的天数数组
int totalDay=0,year,i;
for(year=1990;year<currentDay.year;year++)
//求指定日期前每年的天数累加
{
if(runYear(year))
totalDay=totalDay+366;
else
totalDay=totalDay+365;
}
if(runYear(currentDay.month))
perMonth[2]+=1;//将本年的月的天数加进去
for(i=0;i<currentDay.month;i++)
totalDay+=perMonth[i];//将本月的天数加进去
totalDay+=currentDay.day;
return totalDay;//返回
}

 四、结果

 

posted @     阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示