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; }
五、结果实现。