問題
次の擬似言語プログラムを実行したとき、変数maxの値はいくつか。 整数型の配列: data ← {12, 7, 23, 18, 5, 30, 15} 整数型: max ← data[1] 整数型: i ← 2 while (i ≦ 7) if (data[i] > max) max ← data[i] endif i ← i + 1 endwhile
選択肢
- 1ア 12
- 2イ 23
- 3ウ 30
- 4エ 5
正解
3. ウ 30
詳しい解説を見る解説を閉じる
解説
配列の最大値を求める定石アルゴリズムである。maxを先頭要素data[1]=12で初期化し、2番目以降の要素と順に比較して、現在のmaxより大きい値が現れるたびにmaxを更新する。トレースすると、7(12のまま)→23(max=23に更新)→18(そのまま)→5(そのまま)→30(max=30に更新)→15(そのまま)となり、最終的なmaxは30でウが正解である。アの12は初期値のまま更新を見落とした値、イの23は途中経過の値、エの5はむしろ最小値であり、いずれもトレースの不徹底を狙った選択肢である。比較演算子を < に変えるだけで最小値探索になる点も理解しておくと、空欄補充型の出題にも対応できる。最大値・最小値探索は科目Bで最も基本的な頻出パターンである。
一問一答
科目A 180問+科目B 60問