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

配列 a のすべての要素の合計を求めるつもりで、次のプログラムを書いた。配列の要素番号は1から始まる。実行した後の s の値はどれか。

整数型の配列: a ← {4, 7, 1, 9, 3}
整数型: s ← 0
for (i を 1 から aの要素数 − 1 まで 1 ずつ増やす)
  s ← s + a[i]
endfor
  1. A20
  2. B21
  3. C24
答えと解説を見る

正解:B. 21

aの要素数は5なので、i は1から4まで動き、s = 4 + 7 + 1 + 9 = 21 になります。最後の要素 a[5] = 3 が足されないので、正しい合計24より3小さくなります。要素番号が0から始まる言語での書き方(0から要素数 − 1 まで)を、1から始まる配列にそのまま当てはめると、このような1つずれた誤り(オフバイワンエラー)が起こります。

  • A. a[2]〜a[5] を足した値です。i は1から始まるので、a[1] = 4 は足され、a[5] が足されません。
  • B. 正しい。a[1]〜a[4] の 4 + 7 + 1 + 9 = 21 です。
  • C. すべての要素の合計で、意図した値です。終値が要素数 − 1 なので a[5] は足されません。
この分野を解く 分野ページへ

関連する計算ツール

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

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

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

  1. 配列の要素番号は1から始まる。最大の要素を探す次のプログラムを実行した後の m の値はどれか。
  2. 配列 a の要素を逆順に並べ替えるつもりで、次のプログラムを書いた。配列の要素番号は1から始まる。実行した後の a の内容はどれか。
  3. 配列の要素番号は1から始まる。次のプログラムを実行した後の配列 a の内容はどれか。
  4. 配列の要素番号は1から始まる。隣り合う要素を比べる次のプログラムを実行した後の c の値はどれか。
  5. m[i, j] は二次元配列 m の i 行目 j 列目の要素を表し、要素番号は1から始まる。次のプログラムを実行した後の s の値はどれか。