C言語関係掲示板

過去ログ

No682 閏年の判定

[戻る] [ホームページ]
No.7792

閏年の判定
投稿者---・・・(2003/06/26 10:01:17)


キーボードで西暦を入力し
・西暦の年が4で割り切れ100で割り切れない
・400では割り切れる
時に閏年と判定するプログラムを教えてください!
#include <stdio.h>
int main(void)
{
int i;
printf("西暦年を入力してください!");
scanf("%d",&i);
if ()
printf("入力した年は閏年です。\n");
else
printf("入力した年は閏年ではありません。\n");
return 0;
}
ここまでは書けたけど、ifの中に入るのがいまいち分からないので・・・

No.7793

Re:閏年の判定
投稿者---nop(2003/06/26 10:14:03)


>キーボードで西暦を入力し
>・西暦の年が4で割り切れ100で割り切れない
>・400では割り切れる
>時に閏年と判定するプログラムを教えてください!

そこまで仕様がはっきりしているのなら、
西暦年を引数で渡し、結果を戻り値で返す関数を作成すれば良いと思いますが?

以下、関数化の一例です。

/* ************************************************************
    関数名【 leap() 】
        閏年判定関数
    処理概要
        渡された西暦年が閏年かどうかを判定する
    引数
        1) yaer = 西暦年
    戻り値
        判定結果
************************************************************ */
int  leap( int yaer )
{
    /* ***** 内部変数定義 ***** */
    int ret;

    /* **********************************************************************
        閏年の判定
        (閏年:4 で割り切れ、100 で割り切れない場合は閏年になる。
            但し、400で割り切れない場合は閏年にならない)
    ********************************************************************** */
    ret = (((yaer%4)==0) && ((yaer%100)!=0) || ((yaer%400)==0));

    return ret;
} /* ***** leap() ***** */


No.7794

Re:閏年の判定
投稿者---・・・(2003/06/26 10:20:15)


ありがとうございます。
助かりました!!

No.7795

Re:閏年の判定
投稿者---nop(2003/06/26 10:45:03)


>ありがとうございます。
>助かりました!!

ところで、掲示板に投稿する前に、少しは自分で調べるべきでは?
Yahoo で検索したらすぐに見つかったよ?


ちなみに、以下のような変則例でも閏年が判定できます。(笑)
以上、mktime() の変則的な使用方法でした。
int leap( int yaer )
{
    /* ***** 内部変数定義 ***** */
    struct tm    iTmp1 = {0};

    /* ***** 仮にその年の 2 月 29 日を設定 ***** */
    iTmp1.tm_year = yaer - 1900;
    iTmp1.tm_mon  = 1;
    iTmp1.tm_mday = 29;

    /* ***** 設定日付を変換 ***** */
    mktime( &iTmp1 );    /* この時、 2 月 29 日が存在しなければ内容が変わる */

    return (iTmp1.tm_mday==29);
}