第54問 2つの値を入れかえる(席のこうかん)
AさんとBさんの席をこうかんします。いま seki_a には 3、seki_b には 8 が入っています。これを入れかえて、Aさんが8番、Bさんが3番になるようにしよう。いきなり seki_a = seki_b としてしまうと、もとの 3 が上書きされて消えてしまうので、先に temp という別の箱にどけておきます。2か所の空らんにあてはまる変数を選ぼう
難易度:★★☆☆☆(2/やさしい)。単元:変数と代入。共通テスト「情報I」で使われるDNCL(共通テスト用プログラム表記)の穴埋め問題です。JavaScriptを有効にすると、このページでプログラムを組み立てて実行しながら解けます。
プログラム
seki_a = 3
seki_b = 8
temp = [A]
seki_a = seki_b
seki_b = [B]
表示する("Aさんの席は" + seki_a + "番")
表示する("Bさんの席は" + seki_b + "番")
空欄 [A]・[B] に当てはまるものを、次の選択肢から選びます。
選択肢
ヒント
入れかえは3段階です。①temp = seki_a で 3 を temp にどける ②seki_a = seki_b で seki_a を 8 にする(ここで seki_a のもとの 3 は消える)③seki_b = temp で、どけておいた 3 を seki_b に入れる。②のあとに seki_a を使っても、もう 3 は残っていないことに注意しよう
解答
- 空欄 [A] …
seki_a
- 空欄 [B] …
temp
よくある間違い
- [A]
seki_a [B]seki_a … temp に 3 をどけたところまでは正解です。でも seki_b = seki_a を実行する時点では、その1つ前の行で seki_a が 8 に書きかわっています。だから seki_b にも 8 が入り、2人とも8番になってしまいます。使うのは、どけておいた temp です
- [A]
seki_a [B]seki_b … seki_b = seki_b は「自分に自分を入れる」ので、seki_b は 8 のまま何も変わりません。seki_a も 8 になっているので2人とも8番です。3 が入っているのは temp なので、temp を入れましょう
- [A]
seki_b [B]temp … どけておきたいのは、これから上書きされてしまう seki_a の 3 のほうです。temp = seki_b にすると temp は 8 になり、最後に seki_b = temp としても 8 が戻るだけ。3 はどこにも残らず消えてしまいます
- [A]
seki_b [B]seki_a … temp に 8 をどけても、seki_a = seki_b で 3 は上書きされて消えます。そのあと seki_b = seki_a とすると 8 が入り、2人とも8番です。消える前の 3 を temp にどけておくのがコツです
- [A]
seki_b [B]seki_b … temp を使わずに素通りしている形です。seki_a は 8 になり、seki_b は 8 のまま。2人とも8番になってしまいます。先に temp = seki_a として 3 を守っておきましょう
- [A]
temp [B]temp … 1つ目の temp = temp は、まだ何も入っていない箱を自分に入れているだけで、意味がありません。ここでは、これから消えてしまう seki_a の 3 を temp にどけます
- [A]
temp [B]seki_a … temp = temp では 3 をどけられません。さらに seki_b = seki_a としても、seki_a はすでに 8 になっているので2人とも8番です。1つ目は seki_a、2つ目は temp にしましょう
- [A]
temp [B]seki_b … どちらの行も値が動いていません。seki_a だけが 8 に上書きされて、2人とも8番になります。入れかえには「①どける ②上書き ③どけた値を戻す」の3段階が必要です
この単元の解説動画
ほかの問題