- ベストアンサー
夏季五輪、冬季五輪、五輪なしの計算方法
- 西暦年を入力し、その年が夏季五輪、冬季五輪、または五輪なしのどれかを計算するプログラムです。
- 年を2で割って余りで計算し、0なら夏季五輪、2で割れて余りが0でないなら冬季五輪、2で割れないなら五輪なしと指定します。
- 具体例として、2018年を入力した場合、冬季五輪と表示されます。これは例題であり、実際にその年に冬季五輪が開催されるわけではありません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
オリンピック開催年は、 夏季が西暦を4で割ってあまりが出ない年。 冬季は西暦を2で割ってあまりが出ないが、4で割るとあまりが出る年。 となっています。 もちろん有史以来ということでは、なくそれぞれ夏は、1896年第一回アテネ大会以降、冬は1994年リレハメル大会以降ですが、上記はそこまで考慮されていません。(出展 Wikipedia 夏季オリンピック、冬季オリンピックより) この例題は、この条件を記述した、%演算子の使い方や、if分のand条件などの例題(演習?)ということでしょう。 上の二つのif分は、まさに夏季、冬季の開催年の定義通りの条件式で、三番目の条件式はそれ以外(即ち奇数年)は開催なし、という条件式になっています。
その他の回答 (1)
- shuyamakawa
- ベストアンサー率67% (111/164)
> まずこれを見ると解る通り、yearに何が入るか解りませんが 具体的な年を判定すると (...省略) if ( year == 2012) printf( "冬季五輪\n" ); if ( year == 2014) printf( "夏期五輪\n" ); if ( year == 2016) printf( "冬季五輪\n" ); if ( year == 2018) printf( "夏期五輪\n" ); (省略...) などと判定文を何十行何百行と延々と羅列しなければならなくなってしまうので、 夏期五輪と冬季五輪が開催される年の法則を見つけて それを元に判定処理するのがプログラムがコンパクトになり良い方法です。 開催年の法則は(正確にいうと1994年以降の開催年ということになりますが) ・4の倍数が夏期五輪 ・2の倍数だが4の倍数でない場合冬季五輪 となります。 (冬季五輪は夏期五輪と2年ずらして4年おきに開催というほうが人間にとって わかりやすいのですが判定の書き方の都合で上のような法則とします。) 年が「○○の倍数」かどうかを区別するには「year % ○○」が0であるかどうかを 判定するようにします。 以下のようにプログラムに「year % 2」や「year % 4」の計算結果を いれて実行して値を確認するとわかりやすいかもしれません。 #include<stdio.h> int main(void) { int year; printf("西暦年を入力して下さい:"); scanf("%d", &year); printf( "year %% 4 = %d\n", year % 4 ); printf( "year %% 2 = %d\n", year % 2 ); if (year % 4 == 0) printf("夏季五輪\n"); if (year % 2 == 0 && year % 4 != 0)printf("冬季五輪\n"); if (year % 2 != 0) printf("五輪なし\n"); return 0; }
お礼
遅くなりました、ベストアンサーしてから気づきました; 回答ありがとうございました。
お礼
なるほどそうでしたか^^; 回答ありがとうございました。