科目B
基本情報技術者試験 科目B サンプル問題セット(2022年12月公表) 問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
答えを選ぶ
出典:基本情報技術者試験 科目B サンプル問題セット(2022年12月公表) 問2(問題文は IPA の公開問題。図・数式・下線などはテキストに直して掲載。解説は当サイト作成)
解説に誤りを見つけたら、解説の誤りを報告してください。
答えと解説を見る
正解:ウ
覚える知識
条件分岐の判定順序(範囲の狭い条件を先に)
多分岐では上から順に判定し、最初に真になった分岐だけを実行する。包含関係がある条件は、範囲の狭いもの(両方を満たす場合)を先に書く。
この問題で必要なこと
if〜elseif は最初に当てはまった分岐だけを実行する。「3で割り切れる」を先に判定すると、15 のような 3と5 の両方で割り切れる数がそこで止まってしまう。なので一番狭い条件「3と5」を a に置き、その後に 3、5 と並べるウが正解。
ひっかけ
説明文の順(3→5→3と5)のまま並べると、15 が「3で割り切れる」と判定され、「3と5」の分岐に永久に届かない(ア・イ・エ・オ)。