プログラミングの基礎(擬似言語のトレース)
配列の要素番号は1から始まる。最大の要素を探す次のプログラムを実行した後の m の値はどれか。
整数型の配列: a ← {3, 8, 2, 8, 5}
整数型: m ← 1
for (i を 2 から 5 まで 1 ずつ増やす)
if (a[i] > a[m])
m ← i
endif
endfor
- A2
- B4
- C8
答えと解説を見る
正解:A. 2
m は、それまでに見た中で最大の要素の要素番号です。i = 2 で a[2] = 8 > a[1] = 3 なので m = 2 になります。i = 4 の a[4] = 8 は a[2] = 8 と等しく、> は成り立たないので m は変わりません。そのため最大値が複数あるときは、最初に現れた要素番号2が残ります。条件を ≧ にすると、最後に現れた要素番号4になります。
- A. 正しい。等しい値では m を更新しないので、最初の最大値の要素番号2が残ります。
- B. 条件を a[i] ≧ a[m] にした場合の結果です。
- C. 最大値そのものです。m には要素番号を代入しています。