修了試験 2018-06-10実施分 基本情報技術者試験 問7
要素番号が0から始まる配列TANGOがある。 n個の単語がTANGO[1]からTANGO[n]に入っている。 図は,n番目の単語をTANGO[1]に移動するために,TANGO[1]からTANGO[n-1]の単語を順に一つずつ後ろにずらして単語表を再構成する流れ図である。 aに入れる処理として,適切なものはどれか。 (注)ループにおける条件は,変数名:初期値,増分,終値を示す。

正答2
解説
正解は2です。 流れ図では、まずTANGO[0]←TANGO[n]でn番目の単語を要素0に退避します。 次に、変数iをn-1から1ずつ減らして0までループし、その中で処理aを行います。 TANGO[1]〜TANGO[n-1]を一つずつ後ろにずらし、最後に退避した単語をTANGO[1]に入れる処理が必要です。 【計算】 aをTANGO[i+1]←TANGO[i]とした場合をたどります。 i=n-1のとき、TANGO[n]←TANGO[n-1]となり、n-1番目の単語がn番目に移ります。 i=n-2のとき、TANGO[n-1]←TANGO[n-2]となります。 同様に続き、i=1のとき、TANGO[2]←TANGO[1]となります。 i=0のとき、TANGO[1]←TANGO[0]となり、退避しておいた元のn番目の単語が先頭に入ります。 【選択肢別解説】 1:× i=n-1のときTANGO[n-1]←TANGO[1]となり、後ろにずらすべき単語が上書きされて失われます。 2:○ 後ろの要素から順に一つずつ後ろへコピーするので上書きによる消失がなく、最後にi=0で退避した単語がTANGO[1]に入ります。 3:× i=n-1のときTANGO[1]←TANGO[n-1]となり、単語を後ろにずらす処理になりません。 4:× i=n-1のときTANGO[1]←TANGO[n]となり、TANGO[1]の単語が移動前に上書きされて失われます。 【ポイント】 配列の要素を後ろへずらすときは、上書きを防ぐために末尾側から処理します。 逆に前へ詰めるときは先頭側から処理するのが原則です。まとめて解く
修了試験 2018-06-10実施分を通しで解く(80問)→