問題
次のプログラムは、配列arrの中の最大値を求める関数である。空欄[ ]に入る正しい条件式はどれか。 ○ 整数型: findMax(整数型の配列: arr) 整数型: max ← arr[0] for (i を 1 から arr の要素数−1 まで 1 ずつ増やす) if ([ ]) max ← arr[i] endif endfor return max
選択肢
- 1ア arr[i] = max
- 2イ arr[i] < max
- 3ウ arr[i] > max
- 4エ arr[i] ≠ max
正解
3. ウ arr[i] > max
詳しい解説を見る解説を閉じる
解説
最大値探索では、先頭要素arr[0]をmaxの初期値とし、2番目以降の要素を順にmaxと比較して、より大きい要素が見つかったときだけmaxを更新する。したがって空欄はウのarr[i] > maxが正解である。例えば{3,7,5}でトレースすると、max=3から始まり、arr[1]=7は3より大きいので更新(max=7)、arr[2]=5は7より小さいので更新されず、最終的に7が返る。誤答肢のイarr[i] < maxでは小さい要素のたびに更新されるため最小値を求める処理になってしまう。アの等号やエの不等号(≠)では大小を判定できず、最大値は求められない。比較演算子の向きを1つ変えるだけで最大値と最小値の処理が入れ替わる点が典型的な出題ポイントであり、初期値をarr[0]とすることで比較がi=1から始まる構造も頻出である。
一問一答
科目A 180問+科目B 60問