基本情報科目Bサンプル問題:問3 配列操作プログラム徹底解説|戻り値の計算方法と解答例

基本情報技術者
この記事は約3分で読めます。
記事内に広告が含まれています。
広告
広告

次の記述中の 【   】に入れる正しい答えを,解答群の中から選べ。ここで, 配列の要素番号は 1 から始まる。

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

〔プログラム〕
○整数型の配列: makeNewArray(整数型の配列: in)
整数型の配列: out ← {} // 要素数0の配列
整数型: i, tail
outの末尾 に in[1]の値 を追加する
for (i を 2 から inの要素数 まで 1 ずつ増やす)
tail ← out[outの要素数]
outの末尾 に (tail + in[i]) の結果を追加する
endfor
return out

解答群
ア 5      イ 6      ウ 9      エ 11      オ 12
カ 17    キ 21

 

問題解説

この問題では、プログラムの動作をシミュレーションして、makeNewArray({3, 2, 1, 6, 5, 4})を実行したときに戻り値の配列 out の要素番号 5 の値を求めます。

プログラムの動作

  1. 初期状態
    • out は空の配列として初期化される: out ← {}
    • in{3, 2, 1, 6, 5, 4}
  2. 最初の処理
    • out の末尾に in[1] の値(3)を追加: out ← {3}
  3. ループ処理
    ループは i = 2 から i = 6 まで実行されます。

    • i = 2
      • tail ← out[outの要素数]tail = 3out の末尾)。
      • out の末尾に tail + in[2] を追加: out ← {3, 3 + 2} = {3, 5}
    • i = 3
      • tail ← out[outの要素数]tail = 5
      • out の末尾に tail + in[3] を追加: out ← {3, 5, 5 + 1} = {3, 5, 6}
    • i = 4
      • tail ← out[outの要素数]tail = 6
      • out の末尾に tail + in[4] を追加: out ← {3, 5, 6, 6 + 6} = {3, 5, 6, 12}
    • i = 5
      • tail ← out[outの要素数]tail = 12
      • out の末尾に tail + in[5] を追加: out ← {3, 5, 6, 12, 12 + 5} = {3, 5, 6, 12, 17}
    • i = 6
      • tail ← out[outの要素数]tail = 17
      • out の末尾に tail + in[6] を追加: out ← {3, 5, 6, 12, 17, 17 + 4} = {3, 5, 6, 12, 17, 21}

戻り値の配列

最終的な配列 out{3, 5, 6, 12, 17, 21}


答え

戻り値の配列の要素番号 5 の値は 17 です。

正解: カ 17

タイトルとURLをコピーしました