20221204基本情報技術者試験 サンプル問題2


こちらは素人です。ただのメモです。間違いありかも。
著作権など問題あればすぐに削除します。

2023年度からの基本情報技術者試験のサンプル問題(公開)があった。
(c2022 独立行政法人情報処理推進機構)2023年度から試験内容が変更されるらしい(疑似言語など)。

 

***************************************************
① プログラムの基本要素
問2 次のプログラム中の と に入れる正しい答えの組合せを,解答群
の中から選べ。ここで,配列の要素番号は 1 から始まる。
次のプログラムは,整数型の配列arrayの要素の並びを逆順にする。
〔プログラム〕
整数型の配列: array ← {1, 2, 3, 4, 5}
整数型: right, left
整数型: tmp
for (left を 1 から (arrayの要素数 ÷ 2 の商) まで 1 ずつ増やす)
    right ← [a]
     tmp ← array[right]
    array[right] ← array[left]
    [b] ← tmp
endfor

 

解答群
    a             b
ア array の要素数 - left     array[left]
イ array の要素数 - left     array[right]
ウ array の要素数 - left + 1     array[left]
エ array の要素数 - left + 1     array[right]
*************************************************

 

きちんと読まなかったので最初分からなかった。

 

要旨は単純に、「{1, 2, 3, 4, 5}を逆順にする」ということだった。

 

プログラムで確認しようと思ったが、pythonは久々で、インストールなど面倒なので、paiza IOのサイトでやってみた。
(どうもpaizaは、ステップ実行ができないみたい。)

 

解法1
array = [0,1,2,3,4,5]
for left in array[1: (len(array) - 1) // 2 +1]:
    right = len(array) - 1 - left + 1
    tmp = array[right]
    array[right] = array[left]
    array[left]  = tmp
print(array)
#[0,5,4,3,2,1]

 

選択肢だと、こんな感じ。


上記は配列は0から入れた。

 

0でない場合は、下記の感じか

 

解法2
array = [1,2,3,4,5]
for left in array[0: len(array) // 2 ]:
    right = len(array) - left 
    tmp = array[right] 
    array[right] = array[left - 1]
    array[left - 1]  = tmp
print(array)
#[5,4,3,2,1]


でも選択肢にない。

ヤフー知恵袋C言語で解いていたのを参考にしたが、配列そのものは0始まりで考えた方がいいかも。
でも、この問題は、「考え方」を聞いているので、問題の意味さえ分かれば、プログラムすることはない。

 

「{1, 2, 3, 4, 5}を逆順にする」
→5,4,3,2,1になるような選択肢を選べばいい。

自分のような愚鈍な人間には合わない問題かも。

 

ちなみにpytonならtmpとか変数でなく、
array = [1,2,3,4,5]
array.reverse()
print(array)
#[5,4,3,2,1]
これでいい。

 

最初にこんなことでつまづいて嫌になる人が多いんだろうなあ。

メモ書きは許されるとしても、ディスプレイで考えるのは、結構面倒か(CBT)。
受けたことがないので分かりませんが。