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;
}
上一题
下一题