問題
temp変数を使ったスワップ(a=5,b=8)後の値は何か。
選択肢
- 1a=8,b=5
- 2a=5,b=8
- 3a=5,b=5
- 4a=8,b=8
正解
1. a=8,b=5
詳しい解説を見る解説を閉じる
解説
一時変数tempを使った交換処理を順にトレースする。初期値a=5、b=8に対し、①temp←aでtemp=5、②a←bでa=8、③b←tempでb=5となり、a=8、b=5に交換されて正解である。a=5、b=8は交換が行われなかった場合の値である。a=8、b=8やa=5、b=5は、tempを使わずa←b; b←aのように直接代入した場合に起きる誤りで、先の代入で元の値が上書きされて失われ、両方が同じ値になってしまう。頻出ポイントは「なぜtempが必要か」であり、片方の値を退避してから上書きしないと元の値が消えるためである。交換処理はバブルソートや選択ソートの内部で必ず使われる基本操作であり、3行の代入順序を空欄にして問う出題も多いため、手順ごと暗記しておきたい。
一問一答
科目A 180問+科目B 60問