納得C言語!
演習問題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ならうるう年でないと表示させて終了となります。