プログラミングの基礎(擬似言語のトレース)

配列 a の要素を逆順に並べ替えるつもりで、次のプログラムを書いた。配列の要素番号は1から始まる。実行した後の a の内容はどれか。

整数型の配列: a ← {1, 2, 3, 4, 5, 6}
整数型: n ← 6, t
for (i を 1 から n まで 1 ずつ増やす)
  t ← a[i]
  a[i] ← a[n − i + 1]
  a[n − i + 1] ← t
endfor
  1. A{6, 5, 4, 3, 2, 1}
  2. B{6, 5, 4, 4, 5, 6}
  3. C{1, 2, 3, 4, 5, 6}
答えと解説を見る

正解:C. {1, 2, 3, 4, 5, 6}

繰返しの中の3行は、a[i] と a[n − i + 1] の値を入れ替えます。i = 1〜3 で前半と後半が入れ替わり、いったん {6, 5, 4, 3, 2, 1} になります。ところが終値が n なので、i = 4〜6 でも a[4] と a[3]、a[5] と a[2]、a[6] と a[1] をもう一度入れ替え、元の並びに戻ってしまいます。逆順にするには、終値を n ÷ 2(n = 6 なら3)にして、各組を1回だけ入れ替えます。

  • A. i = 3 で止めた場合の結果です。i = 4〜6 で同じ組をもう一度入れ替えます。
  • B. t を使わずに a[i] ← a[n − i + 1] だけを行った場合の結果です。
  • C. 正しい。各組を2回ずつ入れ替えるので、元の並びに戻ります。
この分野を解く 分野ページへ

関連する計算ツール

プログラミングの基礎(擬似言語のトレース)の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

プログラミングの基礎(擬似言語のトレース)のほかの問題

  1. 配列の要素番号は1から始まる。次のプログラムを実行した後の配列 a の内容はどれか。
  2. 配列の要素番号は1から始まる。隣り合う要素を比べる次のプログラムを実行した後の c の値はどれか。
  3. m[i, j] は二次元配列 m の i 行目 j 列目の要素を表し、要素番号は1から始まる。次のプログラムを実行した後の s の値はどれか。
  4. 4行5列の二次元配列 m の要素を、次のプログラムで要素数20の配列 b に移す。m[i, j] は i 行目 j 列目の要素を表し、要素番号は1から始まる。m[3, 2] が代入される b の要素番号はどれか。
  5. 配列の要素番号は1から始まり、+ は文字列を連結する。次のプログラムを実行した後の r の値はどれか。