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

正答1
解説
正解は1です。 流れ図は、まずTANGO[n]をTANGO[0]に退避します。 次に、変数iをn-1から1ずつ減らして0まで繰り返し、その中で処理aを行います。 目的は、TANGO[1]〜TANGO[n-1]を一つずつ後ろへずらし、退避した単語をTANGO[1]に入れることです。 【選択肢別解説】 1:○ TANGO[i]をTANGO[i+1]に移す処理です。 i=n-1のときTANGO[n-1]がTANGO[n]に移り、i=1のときTANGO[1]がTANGO[2]に移ります。 最後のi=0で、退避しておいたTANGO[0]の単語がTANGO[1]に入り、目的どおりになります。 2:× TANGO[i]をTANGO[n-i]に移すと、i=n-1のときTANGO[n-1]がTANGO[1]に入ってしまいます。 一つずつ後ろにずらす処理になりません。 3:× TANGO[i+1]をTANGO[n-i]に移すと、i=n-1のときTANGO[n]がTANGO[1]に入ります。 ほかの単語が上書きされて失われ、正しくずれません。 4:× TANGO[n-i]をTANGO[i]に移すと、i=n-1のときTANGO[1]がTANGO[n-1]を上書きします。 配列の前後を入れ替えるような動きになり、目的と異なります。 【ポイント】 配列を後ろへずらすときは、後ろの要素から順に移すと、未処理の値を上書きせずに済みます。 退避用の領域(ここではTANGO[0])を使う手法もよく出題されます。まとめて解く
修了試験 2014-06-22実施分を通しで解く(80問)→