C C 如何判斷閏年,對判斷閏年條件的疑惑解答

2021-08-17 11:49:50 字數 1251 閱讀 7858

當你看到這條部落格時,想必跟我當時一樣也是對閏年的判斷條件感到疑惑吧,而我們都知道(小學老師教的)閏年就是年份除以4,除的盡的就為閏年。可我們萬萬沒想到閏年的判斷條件竟是(year % 4 == 0 && year % 100 !=0)||(year % 400 ==0 ),而不是 year % 4 == 0 !!!

為什麼會這樣呢?

產生的原因:

通常的解釋是說一年有多少天多少小時多少分,取整數365還有多餘的,累積達到一天24小時後,就多加一天的年是閏年。

最根本的原因是:

地球繞太陽執行週期為365天5小時48分46秒(合365.24219天)即一回歸年(tropical year)。公曆的平年只有365日,比回歸年短約0.2422 日,所餘下的時間約為每四年累計一天,故第四年於2月末加1天,使當年的歷年長度為366日,這一年就為閏年。現行公曆中每400年有97個閏年。按照每四年乙個閏年計算,平均每年就要多算出0.0078天,這樣經過四百年就會多算出大約3天來。因此每四百年中要減少三個閏年。所以公曆規定:年份是整百數時,必須是400的倍數才是閏年;不是400的倍數的世紀年,即使是4的倍數也不是閏年。

這就是通常所說的:四年一閏,百年不閏,四百年再閏。 例如,2023年是閏年,2023年則是平年。

如果不好理解,請看下面推算:

一回歸年:365.24219日

公曆平年:365日

一年相差:0.2422 日

四年相差:0.9688日(約為一天)這時2月日數需加一。然而卻多算了(1-0.9688)=0.0312日

如果將這誤差放大:

若四百年(100個閏年):(0.0312*100=3.12

),則算多了3天。此時要減去三個閏年(即每四百年,需減去3個閏年)。

故,年份是整百數時,必須是400的倍數才是閏年;不是400的倍數的世紀年,即使是4的倍數也不是閏年。

請記住一句話:四年一閏,百年不閏,四百年再閏。

**:

#include 

using

namespace

std;

int main()

看懂之後,是不是覺得自己發現了新大陸了呢,在他人還侷限於小學的知識時,自己卻早一步發現了真諦所在。就好像我們初中學的物理一樣,路程=速度x時間。結果到了高中,卻發現這是錯誤的。應該是: 位移(s)=速度(v)*時間(t)。

oracle 閏年判斷

閏年最直接的判斷是 能被4整除且不能被100整除,或者能被400整除的年份 create or replace procedure pro leap year year in in number as v mod1 number 4 mod year in,4 v mod2 number 4 mod...

判斷閏年(七)

閏年的乙個基本規則是 四年一閏,百年不閏,四百年再閏。通俗一點就是 能夠被4整除,但同時不能被100整除卻能被400整除的年份就叫閏年。這裡面最關鍵的一句 就是 if year 4 0 year 100 0 year 400 0 示例 include include using namespace ...

2883 閏年判斷

time limit 1 sec memory limit 128 mb submit 124 solved 68 submit status web board 定義乙個函式leapyear,函式宣告如下 int leapyear int n 函式宣告,如果引數n是閏年返回1,不是閏年返回0 在下...