闰年)
②、世纪年能被 400 整除的是闰年。(如 2000 年是闰年,1900 年不是闰年)
③、对于数值很大的年份,这年如果能整除 3200,并且能整除 172800 则是闰年。如
172800 年是闰年,86400 年不是闰年(因为虽然能整除 3200,但不能整除 172800)(此按一
回归年 365 天 5h48'45.5''计算)。
此外,如依照现有太阳年的长度与上述闰年规则,每 8000 年又约差一日,因此约翰·
赫歇尔提议每逢 4000 的倍数不闰,如西元 4000 年。但距此一年份来临尚有约二千年之遥,
因此还未曾真正纳入规则或实施过。又由于地球公转速率的不稳定与众多影响因素,届时
是否需要纳入此规则仍有疑问。
原因:若一年按 365 天 5h48'46''(此时 86400 年也是闰年)计算,一年日数必须是整数,
不便将零时数计入,所以取 365 天为一年,则余 5 时 48 分 46 秒,积至 4 年约满一 日,所
以 4 年一“闰日”,谓之“闰年”,无“闰日”之年为平年,即平年 365 天,闰年 366 天。但到 4
年之时,仅有 23 时 15 分 4 秒闰一日,欠缺 44 分 56 秒;积至 100 年(25 闰)时就欠缺 18
时 43 分 20 秒,约合 3 / 4 日,所以满 100 年不闰;此时又余 5 时 16 分 40 秒,积至 400 年余
21 时 6 分 40 秒又闰;又欠缺 2 时 53 分 20 秒,积至 3200 年计欠缺 23 时 6 分 40 秒,所以满
3200 年不闰;此时又余 53 分 20 秒,积至 86400 年刚好 24 时又一闰,这是不余不欠,需重
计算,所以按阳历计算就有上面的闰年规则。
按 一 回 归 年 365 天 5h48'45.5'' 计 算 : 3200 年 多 出 16000 小 时 153600 分 145600 秒
=18600 小时 26 分 40 秒,共 32*24+8=136 个闰年=776*24=18624 小时 >18600 小时,所以只
能算到 775 个闰年,3200 不是闰年,于是 775*24=18600,多出了 26 分 40 秒怎么办需要多
少个周期弥补?答案是 54 个周期,为 172800 年,因为 172800/3200=54 个周期 54*26 分 40
秒=1404 分 2160 秒=24 小时。
公元前闰年规则
1,非整百年:年数除以 4 余数为 1 是闰年,即公元前 1、5、9……年;
2,整百年:年数除以 400 余数为 1 是闰年,年数除以 3200 余数为 1,不是闰年,年数
除以 172800 余 1 又为闰年,即公元前 401、801……年。
其中,判断输入年份是否为闰年根据个人的思考习惯可以有不同的判定顺序。
参考解法一:分段排除:如果 a % 4 ! = 0,则 a 不是闰年;否则如果 a % 100 == 0 &&
a % 400 != 0 ,则 a 不是闰年;否则 a 是闰年。
参考解法二:列出所有闰年的可能条件,满足条件则为闰年,否则判为非闰年:如果
(a % 400 == 0 || (a % 4 == 0 && a % 100 != 0)), 则 a 是闰年;否则 a 不是闰年。
参考程序 1:
#include <stdio.h>
int main()
{
int a;
scanf("%d",&a);
if(a%4 != 0)
printf("N\n");
else if(a%100 ==0 && a%400 != 0 )
评论0
最新资源