ほぷしぃ

納得C言語!

[第12回]演習問題V 第1問の解答

演習問題V 第1問の解答


1 うるう年判定プログラム

解答プログラム

#include <stdio.h>

//グローバル変数cの宣言と初期化
int c = 0;

//関数のプロトタイプ宣言
void uru();

int main()
{
    printf("うるう年か判定します\n");
    printf("西暦を入力してください");
    scanf("%d",&c);

    //関数呼び出し
    uru();

    // c = 0 のときうるう年 1のときは平年
    if(c == 0){
        printf("うるう年です\n");
    } else {
        printf("うるう年ではありません\n");
    }

    return 0;
}

//うるう年判別関数
//グローバル変数を書き換える
void uru()
{
    //cが4で割り切れ
    //かつcが100で割り切れないか
    //400で割り切れるときうるう年
    if(c%4==0 && c%100!=0 || c%400==0){
        c = 0;
    } else {
        c = 1;
    }
}

解説

さて、西暦を入力するところまでは大丈夫ですね?
このときグローバル変数cに入力された西暦が格納されます。
グローバル変数はmain関数やここではuru関数で読み出すことが可能となります。
uru関数の中身ですが、入力された西暦が4で割り切れ、かつ100で割り切れないか、400で割り切れる時がうるう年となります。
うるう年ならグローバル変数cを0に、そうでなければ1に書き換えます。
main関数に戻り、cの値が0ならうるう年と、1ならうるう年でないと表示させて終了となります。


ヒント ページのトップ 第2問