問題
次の擬似言語プログラムを実行したとき、aとbの最終的な値はどれか。 整数型: a ← 5 整数型: b ← 8 整数型: temp temp ← a a ← b b ← temp
選択肢
- 1ア a=5, b=8
- 2イ a=8, b=5
- 3ウ a=5, b=5
- 4エ a=8, b=8
正解
2. イ a=8, b=5
詳しい解説を見る解説を閉じる
解説
一時変数tempを使って2つの変数の値を交換する、定番のスワップ処理である。順にトレースすると、①temp ← a でtemp=5(aの元の値を退避)、②a ← b でa=8、③b ← temp でb=5となり、最終的にa=8、b=5と交換が完成する。よってイが正解である。アは交換が行われなかったと誤読した場合の初期値である。tempを使わずに a ← b、b ← a と書くと、最初の代入でaの元の値5が失われ、両方とも8になってしまう(エの状態)。これを防ぐために元の値を一時退避するのがtempの役割である。スワップはバブルソートや選択ソートなど整列アルゴリズムの内部で必ず登場する基本操作であり、3行の代入の順序と各時点の変数値を正確に追えるようにしておくことが重要である。
一問一答
科目A 180問+科目B 60問