嚴Sir算法說 持續更新! 算法的學習過程,會對人的思維模式産生影響,會讓人在分析問題、提出方案、嘗試解決、不斷修正、解決問題的思維閉環中得到能力的提升。
這是算法說的第04篇教程。
快速導讀:本篇教程将與大家讨論程序設計中判斷閏年條件的由來,徹底弄清閏年的概念。
01 什麼是閏年?看到這個問題,估計有小夥伴會說了:嚴Sir,你秀逗了嗎?什麼是閏年,這個問題在小學階段就講過了!
那到底什麼是閏年呢?每4年就有1閏年,閏年2月共有29天。
如果你的認知裡也是這樣的,那麼嚴Sir,你隻弄清楚了一半。
(一)為什麼會有閏年?
閏年是公曆曆法進行自我修正産生的結果。
衆所周知,地球會自轉,自轉一次24小時。同時,地球會圍繞太陽公轉,公轉一圈是一年,需要365.24219天。人們為了計數方便,将公轉一圈簡要記為365天,這也是一年365天的由來。
但是問題來了:原本公轉一圈,是365.24219天,現在記為365天,于是1年少記了0.24219天,4年就會少記0.96876天,近1天了,這樣就會造成明顯的問題。于是為了解決這個問題,人們就人為設定,每4年,就增加1天,使得該年為366天,也就是2月為29天。
估計很多小夥伴的認知就到這裡了。這造成對閏年的認知隻弄清楚了一半。
注意,重點來了:請問0.96876天=1天嗎?當然不相等,它們之間隻能記為0.96876天≈1天。
這有什麼問題嗎?每4年,我們把0.96876天當作1天,多記了(1-0.96876)=0.03124天。
1個4年,我們就會多記0.03124天,這似于微不足道,但是100個4年呢?我們就會多記0.03124×100=3.124天。也就是400年,我們就會因為這個問題多記3天!多記3天!多記3天!
這對于一個曆法來講是嚴重問題。怎麼辦呢?400年多3天,于是就要減去3天,也就是說400年内,按照4年1閏年标記的情況,要減去其中3個标記為閏年的年份,也就是說這3個年份不能當作閏年。
舉個例子。1-400年之間,按每4年1閏年方法來标記,那麼就有如下圖所示的閏年:
這麼多年份,把哪3年排除在閏年之外呢?曆法學家就開會讨論,最終通過人為約定的方式決定:将這些年份當中滿整百,但不是400倍數的年份給排除掉。于是例子1-400年之間的100、200、300這3年就被排除在閏年之外了。
(二)閏年滿足的條件
通過上面的描述,我們知道了,閏年應該滿足兩個條件之一:
第一,這個年份是400的整數倍,就一定是閏年。如400、800、1200、1600、2000年等。
第二,這個年份是4的整數倍,但是不能是100的整數倍,就一定是閏年。如4、96、104、2104年
02 程序設計當中閏年的判斷條件有了上面的分析後,在程序設計當中去構建閏年的判斷條件相對就簡單了,隻需要用到整除運算就可以完成。
為了方便表述,我們把年份用變量year表示。在C程序當中,year使得下列表達式為真,就一定是閏年。
year@0==0||year%4==0&&year0!=0
03 C程序當中判斷年份是否為閏年的代碼
#include<stdio.h> main() { int year; printf("請輸入年份:"); scanf("%d",&year); if(year@0==0||year%4==0&&year0!=0) printf("該年是閏年"); else printf("該年是平年"); }
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!