第三天 打鱼还是晒网
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 << "晒网";
}
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号