問題
次の擬似言語プログラムを実行したとき、変数sumの値はいくつか。 整数型の配列: data ← {3, 1, 4, 1, 5, 9, 2, 6} 整数型: sum ← 0 整数型: prev ← data[1] 整数型: i ← 2 while (i ≦ 8) if (data[i] > prev) sum ← sum + data[i] endif prev ← data[i] i ← i + 1 endwhile
選択肢
- 1ア 9
- 2イ 15
- 3ウ 20
- 4エ 24
正解
4. エ 24
詳しい解説を見る解説を閉じる
解説
このプログラムは配列の2番目の要素から順に走査し、直前の要素prevより大きい要素だけをsumに加算する。判定の後、prevは必ず現在の要素に更新される点に注意してトレースすると、1(3より小で加算なし)、4(1より大で+4)、1(4より小で加算なし)、5(1より大で+5)、9(5より大で+9)、2(9より小で加算なし)、6(2より大で+6)となる。途中式はsum=4+5+9+6=24であり、エが正解である。ア・イ・ウは、prevを先頭要素の3に固定したまま比較したり、加算対象を取りこぼしたりした場合に生じる誤答である。頻出ポイント:直前値との比較は増加区間の検出などに使われる定番パターンで、prevの更新がif文の外で毎回行われることを見落とさないのが鍵である。
一問一答
科目A 180問+科目B 60問