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

正答2
解説
正解は2です。 配列の要素を一つずつ後ろへずらす流れ図の、空欄aを埋める問題です。 図の流れ図では、最初にTANGO[0]←TANGO[n]を実行します。 これで、n番目の単語を空いている要素番号0へ退避します。 次に、変数iをn-1から1ずつ減らしながら0まで繰り返し、その中でaを実行します。 【処理の流れ】 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=0のとき、TANGO[1]←TANGO[0]となります。 TANGO[0]には最初に退避したn番目の単語が入っているので、それがTANGO[1]に入ります。 これで目的の並べ替えが完成します。 【選択肢別解説】 1:× TANGO[i]←TANGO[n-i]では、i=n-1のときTANGO[n-1]←TANGO[1]となり、n-1番目の単語が上書きで失われます。 一つずつ後ろへずらす処理になりません。 2:○ 後ろの要素から順にTANGO[i]をTANGO[i+1]へ移すので、単語を失わずに一つずつ後ろへずらせます。 最後にi=0で、退避した単語がTANGO[1]に入ります。 3:× TANGO[n-i]←TANGO[i]では、i=n-1のときTANGO[1]←TANGO[n-1]となり、1番目の単語が失われます。 前後をまたいだ代入になり、一つ後ろへずらす処理になりません。 4:× TANGO[n-i]←TANGO[i+1]では、i=n-1のときTANGO[1]←TANGO[n]となります。 その後も前後をまたいだ代入が続き、一つずつ後ろへずらす処理になりません。 【ポイント】 配列を後ろへずらすときは、上書きで値を失わないように末尾側から処理します。 前へずらすときは、逆に先頭側から処理します。まとめて解く
修了試験 2020-07-26実施分を通しで解く(80問)→