ITパスポート試験
令和5年 第60問
正解
解答
問60
手続printArrayは、配列integerArrayの要素を並べ替えて出力する。手続printArrayを呼び出したときの出力はどれか。ここで、配列の要素番号は1から始まる。
[プログラム]
○printArray()
整数型: n, m
整数型の配列: integerArray ←{2, 4, 1, 3}
for(nを1から(integerArrayの要素数 − 1)まで1ずつ増やす)
for(mを1から(integerArrayの要素数 − n)まで1ずつ増やす)
if(integerArray[m] > integerArray[m + 1])
integerArray[m]とintegerArray[m + 1]の値を入れ替える
endif
endfor
endfor
integerArrayの全ての要素を先頭から順にコンマ区切りで出力する
1, 2, 3, 4 ←正解! | |
1, 3, 2, 4 | |
3, 1, 4, 2 | |
4, 3, 2, 1 |
(令和5年 ITパスポート試験 第60問 テクノロジ系/アルゴリズムとプログラミング)
解説
この問題の正解率:28.4%(やや低い)
integerArray = {2, 4, 1, 3}
integerArrayの要素数 = 4
for(nを1からintegerArrayの要素数-1まで1ずつ増やす) → nを1から3まで繰り返す。
・n = 1 のループ処理
for(mを1から integerArrayの要素数-nまで1ずつ増やす) → mを1から3まで繰り返す。
integerArray[1] の要素は2,integerArray[2] の要素は4
2 > 4 false
integerArray[2] の要素は4,integerArray[3] の要素は1
4 > 1 true
2つの位置を入れ替える。 → integerArray = {2, 1, 4, 3}
integerArray[3] の要素は4,integerArray[4] の要素は3
4 > 3 true
2つの位置を入れ替える。 → integerArray = {2, 1, 3, 4}
・n = 2 のループ処理
for(mを1から integerArrayの要素数-nまで1ずつ増やす) → mを1から2まで繰り返す。
integerArray[1] の要素は2,integerArray[2] の要素は1
2 > 1 true
2つの位置を入れ替える。 → integerArray = {1, 2, 3, 4}
integerArray[2] の要素は2,integerArray[3] の要素は3
2 > 3 false
・n = 3 のループ処理
for(mを1から integerArrayの要素数-nまで1ずつ増やす) → mを1から1まで繰り返す。
integerArray[1] の要素は1,integerArray[2] の要素は2
1 > 2 false
配列 integerArray の要素は {1, 2, 3, 4}となる。
上記のプログラムを実行した結果を導き出す問題です。