FizzBuzz問題の条件分岐

■ 解き方の方針 if~elseifは上から判定し、最初に真になった分岐だけを実行します。そのため、複数の条件に当てはまる値をどの順に判定するかが重要です。 ■ 最初に判定する条件 15のように3でも5でも割り切れる値は、「3で割り切れる」と「5で割り切れる」にも該当します。最初に3だけを判定すると、15に対して「3で割り切れる」を返してしまいます。 そこで、最も限定された条件である 3と5で割り切れる を最初に置きます。よってaは「3と5」です。 num 3で割り切れる 5で割り切れる 返すべき文字列 9 ○ × 3で割り切れる 10 × ○ 5で割り切れる 15 ○ ○ 3と5で割り切れる(最初に判定しないと「3で割り切れる」になる) 7 × × 3でも5でも割り切れない ■ 残りの分岐 最初の条件が偽なら、3と5の両方で割り切れる場合は既に除外されています。その後は3、5の順で個別に判定すればよいので、bは「3」、cは「5」です。 ■ 正解と誤答の見分け方 したがって、正解は ウ です。 共通条件より先に個別条件を置く選択肢では、15などが最初の個別条件に吸収され、求める文字列を返せません。

次のプログラム中の 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

出典令和4年度 基本情報技術者試験 科目B サンプル問題 問2

a

b

c

ア

3

3と5

5

イ

3

5

3と5

ウ

3と5

3

5

エ

5

3

3と5

オ

5

3と5

3