問2 次のプログラム中の 【a】 ~ 【c】 に入れる正しい答えの組合せを, 解答群の中から選べ。
関数 fizzBuzz は,引数で与えられた値が,3 で割り切れて 5 で割り切れない場合
は“3 で割り切れる”を,5 で割り切れて 3 で割り切れない場合は“5 で割り切れ
る”を,3 と 5 で割り切れる場合は“3 と 5 で割り切れる”を返す。それ以外の場合
は“3 でも 5 でも割り切れない”を返す。
〔プログラム〕
○文字列型: fizzBuzz(整数型: num)
文字列型: result
if (num が 【a】 で割り切れる)
result ← ” 【a】 で割り切れる”
elseif (num が 【b】 で割り切れる)
result ← ” 【b】 で割り切れる”
elseif (num が 【c】 で割り切れる)
result ← ” 【c】 で割り切れる”
else
result ← “3 でも 5 でも割り切れない”
endif
return result
問題解説
この問題では、fizzBuzz
関数の条件に適したa~c
の値を選択する必要があります。プログラムの要件に従い、各条件に合うように正しい組み合わせを検討します。
問題要件の整理
- 3で割り切れて5で割り切れない場合 → “3で割り切れる” を返す。
- 5で割り切れて3で割り切れない場合 → “5で割り切れる” を返す。
- 3と5で割り切れる場合 → “3と5で割り切れる” を返す。
- それ以外の場合 → “3でも5でも割り切れない” を返す。
これを元に条件を整理します。
- 最初に「3と5で割り切れる」条件を判定する必要がある(最も厳しい条件だから)。
- 次に「3で割り切れる」か「5で割り切れる」を判定する。
- 最後にその他のケースを処理する。
各選択肢の検討
ア: a=3, b=3と5, c=5
- 最初に「3で割り切れる」を判定しているが、「3と5で割り切れる」を判定する前に終了する可能性があり、要件を満たさない。
イ: a=3, b=5, c=3と5
- 「3で割り切れる」→「5で割り切れる」→「3と5で割り切れる」の順で判定している。
- この順序では、「3と5で割り切れる」場合に正しく動作しない(「3で割り切れる」と判定されてしまう)。
ウ: a=3と5, b=3, c=5
- 「3と5で割り切れる」→「3で割り切れる」→「5で割り切れる」の順で判定。
- 要件に完全に一致しており、正しい動作をする。
エ: a=5, b=3, c=3と5
- 最初に「5で割り切れる」を判定しているが、「3と5で割り切れる」を判定する前に終了する可能性があり、要件を満たさない。
オ: a=5, b=3と5, c=3
- 「5で割り切れる」→「3と5で割り切れる」→「3で割り切れる」の順で判定。
- この順序では、「3と5で割り切れる」場合に正しく動作しない(「5で割り切れる」と判定されてしまう)。
正解
正しい選択肢は ウ: a=3と5, b=3, c=5 です。