CO-S32|情報Ⅰ 対策問題
次のプログラムを実行したとき、表示される値はどれか。 (1) kazu = 1 (2) kaisu = 0 (3) kazu < 100 の間繰り返す: (4) | kazu = kazu × 2 (5) ⎿ kaisu = kaisu + 1 (6) 表示する(kaisu)
解答・解説を見る
正解: 1
正答
1
この問題のポイント
倍々に増える反復のトレース を問う問題です。最後の1回(64→128)を数え忘れないことがカギです。
解説
「kazu < 100 の間繰り返す」は、毎回ループの先頭で条件を確かめ、真なら実行、偽なら終了するwhile型の繰り返しです。kazuは毎回2倍になるので、1, 2, 4, 8, … と2のべき乗の列をたどります。
kazuとkaisuを1回ずつ追います。
- 開始: kazu=1、kaisu=0。1<100は真 → 実行
- 1回目: kazu=2、kaisu=1。2<100は真
- 2回目: kazu=4、kaisu=2。4<100は真
- 3回目: kazu=8、kaisu=3。8<100は真
- 4回目: kazu=16、kaisu=4。16<100は真
- 5回目: kazu=32、kaisu=5。32<100は真
- 6回目: kazu=64、kaisu=6。64<100はまだ真 → もう1回実行
- 7回目: kazu=128、kaisu=7。128<100は偽 → 終了
- 表示: kaisu=7
最大の落とし穴は6回目の後です。kazu=64はまだ100未満なので、ループはもう1回実行されます。「64で止めて6回」と答えるのが典型的なミスで、条件判定はkazuを更新した後の値で行われる点に注意してください。
2倍ずつの増加は2のべき乗そのもので、2⁷=128が初めて100を超えます。「何回で100を超えるか」は対数の感覚(log₂100≒6.6、切り上げて7)につながり、二分探索が「何回半分にすれば1になるか」の裏返しです。共通テストの回数を問う問題は、この表を書く方法で確実に得点できます。
選択肢の確認
1.○ 2⁷=128で初めて100以上になるので7回。
2.× 2⁶=64はまだ100未満なので、ループはもう1回まわる。
3.× 100は条件式に書かれた値そのもので回数ではない。
4.× 128は終了時のkazuの値で、回数ではない。
ここだけは覚えよう
倍々の反復は2のべき乗の列 — 「条件がまだ真か」を毎回確認し、最後の1回を数え忘れない。