历法规则的来由
若一年按365天5h48'46''(此时86400年也是闰年)计算:
(1) 一年日数必须是整数,不便将零时数计入,所以取365天为一年,则余5时48分46秒;
(2) 积至4年约满一日,所以4年一“闰日”,谓之“闰年”,无“闰日”之年为平年,即平年365天,闰年366天。但到4年之时,仅有23时15分4秒闰一日,欠缺44分56秒;
(3) 积至100年(25闰)时就欠缺18时43分20秒,约合3 / 4日,所以满100年不闰。此时又余5时16分40秒;
(4) 积至400年余21时6分40秒又闰。又欠缺2时53分20秒;
(5) 积至3200年计欠缺23时6分40秒,所以满3200年不闰。此时又余53分20秒;
(6) 积至86400年刚好24 时又一闰,这时不余不欠,需重计算。
所以按阳历计算就有上面的闰年规则。
判断是否闰年的计算规则
能被4整除,且不能被100整除;或者能被400整除,且不能被3200整除;或者能被86400整除。
口诀:四年一闰,百年不闰,四百年再闰 (此口诀忽略了3200年和86400年的部分,但对于2015年的现在,3200年太遥远,86400年更遥远...所以非严格来说此口诀也正确)
计算过程描述
1. 获取用户输入部分
判断是否合法输入(此处我们假设合法输入指的是大于0的正整数):若是则继续下一步:若否则给出错误提示,并要求用户重新输入。
2. 判断闰平年核心逻辑部分
假如用户输入的年份是year,则:
(1) 计算 yushu = year % 4 ( % 为取余操作符,用来计算除法余数的,比如 2016 % 4 = 0, 2015 % 4 = 3)
如果yushu不等于0,则表示year不能被4整除,程序返回平年;
如果yushu等于0,则表示year能被4整除,继续下一步;
(2) 计算 yushu = year % 100,
如果yushu不等于0,则表示year不能被100整除,程序返回闰年;
如果yushu等于0,则表示year能被100整除,继续下一步;
(3) 计算 yushu = year % 400,
如果yushu不等于0,则表示year不能被400整除,程序返回平年;
如果yushu等于0,则表示year能被400整除,继续下一步;[很多程序计算到这里就返回闰年结束计算,正如“四年一闰,百年不闰,四百年再闰”所述,但为了使程序结果更加准确,我们还需要进行额外的判断]
(4) 计算 yushu = year % 3200,
如果yushu不等于0,则表示year不能被3200整除,程序返回闰年;
如果yushu等于0,则表示year能被3200整除,继续下一步;
(5) 计算 yushu = year % 86400,
如果yushu不等于0,则表示year不能被86400整除,程序返回平年;
如果yushu等于0,则表示year能被86400整除,程序返回闰年;
至此计算结束。