トリッキーコードネット トップへ戻る   C/C++, Java, Perl, PHP, JavaScript, アルゴリズム, ショートコーディング, IOCCCコードの解説, 等々

サイト情報

トリッキーなコード

7行プログラミング

物凄いコード集

アルゴリズム

データ構造

C/C++な話題

コードサンプル

ツール/環境構築

開発ノウハウ 等

ネタ/ジョーク集

おススメ書籍/サイト

サイトTOP >> アルゴリズム >> 任意年の閏年判定アルゴリズム (C言語)

閏年(うるうどし)判定プログラミング (C言語)

さて、閏年とは「通常28日までしかない2月が、29日まである年」
・・・というのは、周知の事実です^^;)

しかし、任意の年が閏年か否かを判定するロジックは、少々ややこしく、一般的にはさほど知られていません。

閏年判定ロジックは、以下の様になっています。

---------------------------------------------------------------------

① 西暦が4で割り切れる年は閏年。
② ただし、100で割り切れる年は閏年ではない。
③ ただし、400で割り切れる年は閏年。

---------------------------------------------------------------------

地球が太陽の周りを一周するのが、丁~度ぴったり365日であれば、
上記のような面倒くさいロジックで閏年を計算しなくても良いのですが、

・・・なんと地球の公転周期は、365.242190...日と、若干ズレがあるんですね~。

その為、そのズレを補正する為に、むりやり閏年なんてものができたんだとか^^;)
(まぁ詳しくは、天文学の本を参照して下さい)



というわけで、上記アルゴリズムにのっとり、C言語で閏年判定を行うコードを書いてみたものがコチラ↓↓
/*
 年、月を指定すると、該当年月の最終日を返す。
*/
int getMonthDays(int nYear, int nMonth)
{
    int nMonthDays;

    if (nMonth == 2) {
        if (nYear % 4 == 0  &&  nYear % 100 != 0  ||  nYear % 400 == 0) {
            nMonthDays = 29;
        }
        else {
            nMonthDays = 28;
        }
    }
    else if (nMonth == 4 || nMonth == 6 || nMonth == 9 || nMonth == 11) {
        nMonthDays = 30;
    }
    else{
        nMonthDays = 31;
    }

    return nMonthDays;
}
年、月を指定すると、該当年月の最終日を返す関数です。 2月分の判定時に、冒頭の閏年判定アルゴリズムが使用してあります。 曜日判定アルゴリズムと組み合わせて、カレンダーを表示させる時に使ったりなんかします♪
ひょっとしたら参考になるかもしれないページ : 曜日判定アルゴリズム  任意の年月のカレンダーを表示
         このエントリーをはてなブックマークに追加   


作業効率化・ライフハックのオススメ記事




コンピュータ・テクノロジーのオススメ記事





恋愛・人間関係のオススメ記事




※ 当サイトは、トップページからリンクで辿る事の出来るページに限り、リンクフリーです。
※ 当サイトの閲覧/利用によって生じた如何なる損害も、当サイト管理人は責任を負いません。
※ 当サイトの内容を転載される場合は、当サイトへのリンクをお願い致します。