测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A49770. 闰年分为普通闰年和世纪闰年

填空题 困难

题目描述

闰年分为普通闰年和世纪闰年

题目描述

普通闰年:公历年份是 4 的倍数,且不是 100 的倍数,为普通闰年。(如 2004 年就是普通闰年)。

世纪闰年:公历年份是整百数的,必须是 400 的倍数才是世纪闰年(如 1900 年不是世纪闰年,2000 年是世纪闰年)。

所以有人将此规则总结为:四年一闰,百年不闰,四百年再闰。

闰年的一年为 366 天,闰年的二月份为 29 天。平年一年为 365 天,平年的二 月为 28 天。

每年的 1、3、5、7、8、10、12 月份为 31 天,4、6、9、11 月份为 30 天。

**编程实现:**算天数。

用户输入未来的某一天,输入格式为如 2021 6 1,编程计算这一天和今天相差多少天?(例如:今天和明天是相差一天)星期几?(注意:输出格式为 星期的数字值并在其前加“*”)。

样例输入

2021 6 1

样例输出

183
*2

参考答案

#include <iostream> using namespace std; bool isLeap(int y) { return y % 4 == 0 && y % 100 != 0 || y % 400 == 0; } int main() { const int Y = 2021, M = 1, D = 14, W = 4; // 今日日期 int days[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; days[2] = 28 + (int)isLeap(Y); int y, m, d; cin >> y >> m >> d; int i = Y, j = M, k = D, w = W, cnt = 0; while (!(i == y && j == m && k == d)) { cnt++; w++; if (w > 7) { w = 1; } k++; if (k > days[j]) { k = 1; j++; if (j > 12) { j = 1; i++; days[2] = 28 + (int)isLeap(i); } } } cout << cnt << endl << '*' << w << endl; return 0; }
上一题 下一题