令和8年度試験問題 科目B 問1
問1解説へ
次のプログラム中の に入れる正しい答えを,解答群の中から選べ。ここで,配列の要素番号は1から始まる。
次のプログラムは,整数型の配列 data の末尾の要素の値を先頭の要素に移動する。この際,末尾以外の各要素の値は,一つずつ後ろの要素に移動する。
〔プログラム〕
次のプログラムは,整数型の配列 data の末尾の要素の値を先頭の要素に移動する。この際,末尾以外の各要素の値は,一つずつ後ろの要素に移動する。
〔プログラム〕

- 2からlen-1まで1ずつ増やす
- 2からlenまで1ずつ増やす
- len-1から2まで1ずつ減らす
- lenから2まで1ずつ減らす
正解 エ問題へ
分野:アルゴリズムとプログラミング
細目:データ構造及びアルゴリズム
細目:データ構造及びアルゴリズム
広告
解説
設問中のデータ {1, 2, 3, 4, 5, 6, 7, 8, 9} を例にして考えます。この処理では、末尾の要素を先頭の要素に移動し、それ以外の要素を一つずつ後ろにずらすとありますから、処理後のあるべきデータは以下になります。
{9, 1, 2, 3, 4, 5, 6, 7, 8}
まず処理の開始時(top ← data[len])には、変数 top にデータの末尾の要素、すなわち 9 を退避させています。
ここから、繰返し処理により要素を一つずつ後ろに移動していくわけですが、ここで注意すべき点は、移動を先頭から順に行うと、後ろの要素が前の要素で上書きされてしまい、移動がうまくいかないということです。このため、要素の移動は後ろの要素から順に行う必要があります。
実際の置き換え処理を見てみると、data[i] に data[i-1] の値を代入することになっており、ループ変数 i は移動先の要素番号を示していることがわかります。このため、設問の配列で言えば、i は末尾の要素番号である 9 から始まり、先頭の一つ前の要素番号である 2 までを対象とする必要があります。
これをループ変数として表現すると、iを len から2まで1ずつ減らすとなります。したがって「エ」が正解です。
最後に先頭要素の1を top に退避させておいた9で置き換えれば、並び替えは完了します。
{9, 1, 2, 3, 4, 5, 6, 7, 8}
まず処理の開始時(top ← data[len])には、変数 top にデータの末尾の要素、すなわち 9 を退避させています。
ここから、繰返し処理により要素を一つずつ後ろに移動していくわけですが、ここで注意すべき点は、移動を先頭から順に行うと、後ろの要素が前の要素で上書きされてしまい、移動がうまくいかないということです。このため、要素の移動は後ろの要素から順に行う必要があります。

これをループ変数として表現すると、iを len から2まで1ずつ減らすとなります。したがって「エ」が正解です。
最後に先頭要素の1を top に退避させておいた9で置き換えれば、並び替えは完了します。
- 先頭の要素から順に移動を行っているため誤りです。実行結果は以下となります。{9, 1, 1, 1, 1, 1, 1, 1, 9}
- 先頭の要素から順に移動を行っているため誤りです。実行結果は以下となります。{9, 1, 1, 1, 1, 1, 1, 1, 1}
- 初期値が1つずれているため誤りです。実行結果は以下のように、9が2つとなり、8が消えるものとなります。{9, 1, 2, 3, 4, 5, 6, 7, 9}
- 正しい。
広告