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;//返回
}
四、结果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统