基本情報科目Bサンプル問題:問2 FizzBuzz問題の解説|正解と選択肢の理由

基本情報技術者
この記事は約3分で読めます。
記事内に広告が含まれています。
広告
広告

問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でも割り切れない” を返す。

これを元に条件を整理します。

  1. 最初に「3と5で割り切れる」条件を判定する必要がある(最も厳しい条件だから)。
  2. 次に「3で割り切れる」か「5で割り切れる」を判定する。
  3. 最後にその他のケースを処理する。

各選択肢の検討

ア: 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 です。

タイトルとURLをコピーしました