基本情報技術者試験「配列/ループ」の問題
次の擬似言語で表される手続 sumOdd を、引数として要素数 5 の整数型の配列 {12, 125, 1008, 231, 14} を与えて実行したとき、戻り値として返される値はどれか。配列の添字は 1 から始まる。
○整数型: sumOdd(整数型の配列: arr)
整数型: total ← 0
整数型: i
for (i を 1 から arrの要素数 まで 1 ずつ増やす)
if (arr[i] mod 2 が 1 と等しい)
total ← total + arr[i]
endif
endfor
return totalア356
イ1034
ウ26
エ1390
正解
ア.356
arr の各要素について arr[i] mod 2 が 1(奇数)のものだけを total に加える。奇数は 125 と 231 のみであり、total = 125 + 231 = 356 となるため アが正しい。
?選択肢ごとの解説
ア ○arr の各要素について arr[i] mod 2 が 1(奇数)のものだけを total に加える。奇数は 125 と 231 のみであり、total = 125 + 231 = 356 となるため アが正しい。
イ ×偶数要素 12, 1008, 14 を合計した 1034 であり、条件 mod 2 = 1 を mod 2 = 0 と取り違えた誤りである。
ウ ×両端の小さな偶数 12 と 14 だけを足した 26 であり、加算対象を偶数かつ小さい値に限定した誤りである。
エ ×全要素の総和 12+125+1008+231+14=1390 であり、奇数判定の if を一切適用していない誤りである。
✎くわしく
mod 演算による偶奇判定は頻出パターンである。条件が 1 と等しいか 0 と等しいかでまったく逆の集合を選ぶことになるため、条件式の右辺を必ず確認する必要がある。
✓本番での押さえどころ
試験のコツ
mod の条件は『余りが何のとき』を声に出して確認し、対象要素を丸で囲んでから合計するとよい。
覚え方
『mod 2 が 1 → 奇数』とペアで暗記する。1 は奇数の代表値と覚える。
よくある誤り
mod 2 = 1 を「偶数」と誤読して偶数和 1034 を選ぶミスが最も多い。
アルゴリズムとプログラミングの他の問題
この問題を、AIの8-ways解説つきで。
無料ではじめる →基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。
ukamiru 過去問 · 基本情報技術者試験 · fe-b-algo-0001