修了試験 2016-12-11実施分 基本情報技術者試験 問8
要素番号が0から始まる配列TANGOがある。 n個の単語がTANGO[1]からTANGO[n]に入っている。 図は,n番目の単語をTANGO[1]に移動するために,TANGO[1]からTANGO[n-1]の単語を順に一つずつ後ろにずらして単語表を再構成する流れ図である。 aに入れる処理として,適切なものはどれか。

正答1
解説
正解は1です。 配列の要素を一つずつ後ろにずらし、n番目の単語を先頭のTANGO[1]に移す流れ図の空欄を埋める問題です。 流れ図では、最初にTANGO[n]の単語をTANGO[0]に退避します。 その後、ループ変数iをn-1から1ずつ減らして0まで繰り返し、その中で処理aを実行します。 【計算】 選択肢1の処理を当てはめると、i=n-1のときTANGO[n-1]の内容がTANGO[n]に移ります。 TANGO[n]の元の単語はTANGO[0]に退避済みなので、上書きしても失われません。 i=n-2のときはTANGO[n-2]の内容がTANGO[n-1]に移ります。 このように後ろから順に1つずつずらしていきます。 i=1のときTANGO[1]の内容がTANGO[2]に移ります。 最後のi=0のとき、退避していたTANGO[0]の単語がTANGO[1]に入ります。 これで、n番目の単語が先頭に来て、残りが1つずつ後ろにずれます。 【選択肢別解説】 1:○ TANGO[i]の内容をTANGO[i+1]へ移す処理です。 iを大きい方から減らしていくので、まだ移していない単語を上書きせずに後ろへずらせます。 2:× TANGO[i]の内容をTANGO[n-i]へ移すと、i=n-1のときにTANGO[1]が上書きされます。 TANGO[1]の元の単語が失われ、ずらす処理になりません。 3:× TANGO[i+1]の内容をTANGO[n-i]へ移すと、i=n-1のときにTANGO[n]の内容がTANGO[1]に入ります。 TANGO[1]の元の単語が失われ、正しく並びません。 4:× TANGO[n-i]の内容をTANGO[i]へ移すと、i=n-1のときにTANGO[1]の内容でTANGO[n-1]が上書きされます。 単語が後ろに1つずつずれる形になりません。 【ポイント】 配列の要素を後ろへずらすときは、末尾側から処理しないとデータを上書きしてしまいます。 退避用の領域(ここではTANGO[0])をどう使うかにも注目します。まとめて解く
修了試験 2016-12-11実施分を通しで解く(80問)→