【日付セット】閏年の判定 (paizaランク D 相当) 解答例 – PHP編【paiza】


【日付セット】 > 閏年の判定 (paizaランク D 相当)
※リンク先へ移動する為には「paiza」へのログインが必要です。

Dランク問題と侮ることなかれ。「if」文で条件分岐を作る問題ですが、引っ掛け問題でもあるので注意しましょう。

解答例

解答方針

この問題で重要なのは条件分岐の順番です。今回の閏年判定の条件は次の通りです。

閏年の条件・西暦が4で割り切れる年は閏年
・ただし、100で割り切れる年は平年
・ただし、400で割り切れる年は閏年
・西暦が4で割り切れない年は平年

この条件を見てみると、「100で割り切れる年は平年」、「400で割り切れる年は閏年」と条件が被っています。例えば「400年」は「400でも100でも4」でも割り切れます。その為「if」文の条件の作り方を間違えると間違った処理が返ってきます。例えば次の例、

間違った解答例

「4で割り切れる」、「4で割った余りが0以外」といった、広い条件が上位にあると、それ以降の処理が行われません。例えば「100年」を検査した時、4で割り切れた瞬間以降の処理が行われないので、100で割りきれる時に平年という処理が行われず、条件通りの処理が行えません。
「if」文構築をするときは、条件分岐の優先順位を間違えないようにしないといけませんね。

エッグ

シェアする