サンプル問題 [科目B]問3

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
 次の記述中の に入れる正しい答えを,解答群の中から選べ。ここで,配列の要素番号は1から始まる。

 関数 makeNewArray は,要素数2以上の整数型の配列を引数にとり,整数型の配列を返す関数である。関数 makeNewArray を makeNewArray({3,2,1,6,5,4})として呼び出したとき,戻り値の配列の要素番号5の値は となる。

〔プログラム〕
b03_1.gif

  • 5
  • 6
  • 9
  • 11
  • 12
  • 17
  • 21
正解 問題へ
分野:アルゴリズムとプログラミング
カテゴリ:プログラムの基本要素
解説
プログラムをトレースしていきます。

out の末尾 に in[1] の値 を追加する
配列の要素番号は1から始まるという条件があるので in[1] の値は 3、outに3を追加します。
⇒out = {3}

for文による繰返し処理に入ります。inの要素数は 6 なので、iの値を 2 から 6 まで1ずつ増やしながら5回繰り返します。
i = 2
tail ← out[outの要素数] = out[1] = 3
⇒tail = 3
outの末尾に tail + in[i] = 3 + 2 = 5 を追加する
⇒out = {3, 5}
i = 3
tail ← out[outの要素数] = out[2] = 5
⇒tail = 5
outの末尾に tail + in[i] = 5 + 1 = 6 を追加する
⇒out = {3, 5, 6}
i = 4
tail ← out[outの要素数] = out[3] = 6
⇒tail = 6
outの末尾に tail + in[i] = 6 + 6 = 12 を追加する
⇒out = {3, 5, 6, 12}
i = 5
tail ← out[outの要素数] = out[4] = 12
⇒tail = 12
outの末尾に tail + in[i] = 12 + 5 = 17 を追加する
⇒out = {3, 5, 6, 12, 17}
i = 6
tail ← out[outの要素数] = out[5] = 17
⇒tail = 17
outの末尾に tail + in[i] = 17 + 4 = 21 を追加する
⇒out = {3, 5, 6, 12, 17, 21}
戻り値として返される配列 out の要素番号5の値は 17 です。したがって「カ」が正解となります。

【別解】
outの末尾に追加される値は、
out[1] = in[1] = 3
out[2] = in[1] + in[2] = 3 + 2 = 5
out[3] = in[1] + in[2] + in[3] = 3 + 2 + 1 = 6

という関係になっているので、
out[5] = in[1] + in[2] + in[3] + in[4] + in[5] = 3 + 2 + 1 + 6 + 5 = 17

Pagetop