第三天 打鱼还是晒网

1.问题描述
中国有句语叫“三天打鱼两天晒网”。某人从1990年1月1日起开始“三天打鱼两
天哂网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。
2.问题分析
根据题意可以将解题过程分为3步:
(1)计算从1990年1月1日开始至指定日期共有多少天。
(2)由于“打鱼”和“晒网”的周期为5天,所以将计算出的天数用5去除。
(3)根据余数判断他是在“打鱼”还是在“晒网”。
若余数为1,2,3,则他是在“打鱼”,否则是在“晒网”。
3.算法设计
该算法为数值计算算法,要利用循环求出指定日期距1990年1月1日的天数,并考
虑到循环过程中的闰年情况,闰年二月为29天,平年二月为28天。判断闰年的方法可以
用伪语句描述如下:
如果(能被4整除并且不能被100整除)或者(能被400整除)则该年是闰年:否则
不是闰年。
提示:C语言中判断能否整除可以使用求余运算符“%”。

#include<iostream>
using namespace std;

int main() {
int y, m, d;
int m1[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
int y0, m0, d0;
cin >> y0 >> m0 >> d0;
long long int i, j, k, num = 0;
for (i = 1990; i <= y0; i++) {
if (i == y0) {
if ((i % 4 == 0 && i % 100 != 0 ) || i % 400 == 0) {
m1[1] = 29;
}
else m1[1] = 28;
for (j = 0; j < m0 - 1; j++) {
num += m1[j];
}
num += d0;
break;
}
if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0) {
num += 366;
}
else num += 365;
}
if (num % 5 == 1 || num % 5 == 2 || num % 5 == 3) {
cout << "打鱼";
}
else cout << "晒网";
}

posted @ 2023-04-12 23:02  贾贾鱼  阅读(67)  评论(0)    收藏  举报