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

正答2
解説
正解は2です。 流れ図の空欄aに入る処理を、ループの向きと退避処理から考える問題です。 図では、最初にTANGO[0]←TANGO[n]でn番目の単語をTANGO[0]に退避しています。 ループはiをn-1から始めて1ずつ減らし、0まで繰り返します。 【選択肢別解説】 1:× TANGO[i]←TANGO[n-i]では、i=n-1のときTANGO[n-1]←TANGO[1]となり、前後の単語を入れ替えるような動きになります。 1つずつ後ろへずらす処理にはなりません。 2:○ i=n-1のときTANGO[n]←TANGO[n-1]となり、末尾から順に1つずつ後ろへずれます。 最後のi=0のときTANGO[1]←TANGO[0]となり、退避したn番目の単語が先頭に入ります。 3:× TANGO[n-i]←TANGO[i]では、i=n-1のときTANGO[1]←TANGO[n-1]となります。 TANGO[1]の単語が上書きで失われ、後ろへずらす処理になりません。 4:× TANGO[n-i]←TANGO[i+1]では、i=n-1のときTANGO[1]←TANGO[n]となります。 i=0のときもTANGO[n]←TANGO[1]となり、単語を順にずらす処理になりません。 【ポイント】 配列を後ろへずらすときは、上書きを防ぐために末尾側から処理します。 先に退避したTANGO[0]の値が、ループの最後に先頭へ入る仕組みを確認しておきましょう。まとめて解く
修了試験 2021-12-12実施分を通しで解く(80問)→