ITパスポート 2025年 問78
問題文
手続calcMod3を呼び出したときの出力はどれか。
〔プログラム〕
○calcMod3()
整数型: totalValue, i
totalValue ← 0
for (iを1から7まで1ずつ増やす)
if (i ÷ 3の余りが0と等しい)
totalValue ← totalValue + i
endif
endfor
totalValueを出力する
選択肢
ア:2
イ:3
ウ:7
エ:9(正解)
🔒 解説は解答すると表示されます
手続calcMod3の出力【ITパスポート 解説】
正解の理由
プログラムは「1から7までの数を順に見て、3で割ったときの余りが0の数だけを足す」処理を行っています。ここで「整数型(整数を扱うデータ型)」と「for文(繰り返し処理)」は問題文の通りです。また「余り(剰余、英語では modulo または mod)」が0ということは「その数が3で割り切れる」という意味です。1〜7のうち3で割り切れる数は3と6で、その合計は9になります。したがって答えは エ(9)です。
解法ステップ
- totalValue を 0 に初期化する(合計を入れる箱を0から始める)。
- i を 1 から 7 まで順に取り出す(for文)。
- 各 i について「i ÷ 3 の余りが 0(つまり i % 3 == 0)」かチェックする。
- 条件が真なら totalValue に i を足す。
- ループ終了後、totalValue を出力する。
各ステップの値の変化(簡単な追跡)
- i = 1 → 1 % 3 = 1 → 足さない → totalValue = 0
- i = 2 → 2 % 3 = 2 → 足さない → totalValue = 0
- i = 3 → 3 % 3 = 0 → 足す → totalValue = 3
- i = 4 → 4 % 3 = 1 → 足さない → totalValue = 3
- i = 5 → 5 % 3 = 2 → 足さない → totalValue = 3
- i = 6 → 6 % 3 = 0 → 足す → totalValue = 9
- i = 7 → 7 % 3 = 1 → 足さない → totalValue = 9
最終的に出力されるのは 9 です。
(参考の実行例:Python)
totalValue = 0
for i in range(1, 8): # 1から7まで
if i % 3 == 0: # 余りが0か
totalValue += i
print(totalValue) # 9
選択肢別の誤答解説
-
ア: 2
誤りの典型例は「3で割り切れる数が2個だから答えは2」と数の個数を答えてしまう間違いです。問題は「合計」を求めるので、個数ではありません。 -
イ: 3
「3だけ足した結果」としてしまうミスです。i=6 も条件を満たすため、3だけで終わりません。 -
ウ: 7
どのようにして7になるかを考えると、(例)1+6 や 7 自身という誤解が考えられます。実際には条件に合うのは 3 と 6 だけで、これらの合計は 9 です。 -
エ: 9
正しい選択肢です。3 と 6 を足した合計が 9 になるため、これが出力されます。
よくある誤解
- 「余り」と「商(割った結果の整数部分)」を混同する。余りが0かを見るのが条件で、これは「割り切れるか」を判定しているだけです。
- ループの開始や終了を誤解する(1から7か、0から7か等)。今回の問題は1から7までなので、0は含まれません。もし0が含まれていても0を足しても合計は変わりませんが、範囲の理解は重要です。
- 条件を満たす数の「個数」と「合計」を混同する(個数=2、合計=9 など)。
補足コラム
- 剰余(じょうよ)演算はプログラミングで非常に頻繁に使います。記号は言語によって異なりますが、多くは
%(例: i % 3)で表します。英語では "modulo" や "mod" と呼びます。 - 「整数型(integer)」は小数を含まない数を扱うデータ型です。プログラムで合計を扱うときは、合計用の変数が整数型なら小数は出ません。
- 範囲指定に関する注意:プログラミング言語によって for の終端が「含む」か「含まない」かが異なります。問題文のように自然言語で「1から7まで」と書かれている場合は通常「1,2,...,7」の7つを指します。
FAQ
Q: 「i ÷ 3 の余りが0」とはどういう意味ですか?
A: その数 i を3で割ったときに余りが0になる、つまり「3で割り切れる」という意味です。プログラムでは i % 3 == 0 のように書きます。
A: その数 i を3で割ったときに余りが0になる、つまり「3で割り切れる」という意味です。プログラムでは i % 3 == 0 のように書きます。
Q: もしループが 0 から 7 までだったら答えは変わりますか?
A: 0 は 3 で割り切れるので条件を満たしますが、0 を足しても合計は変わらないため結果は同じで 9 です。
A: 0 は 3 で割り切れるので条件を満たしますが、0 を足しても合計は変わらないため結果は同じで 9 です。
Q: どうして答えをすぐに見つけられないときは?
A: 小さな範囲(今回は1〜7)なら、実際に1つずつ余りを計算して該当する数をピックアップして合計すると確実です。問題文を数列にして手で追う訓練が有効です。
A: 小さな範囲(今回は1〜7)なら、実際に1つずつ余りを計算して該当する数をピックアップして合計すると確実です。問題文を数列にして手で追う訓練が有効です。
関連キーワード: アルゴリズム、ループ、剰余(余り)、mod演算、for文、整数型、プログラム読解

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

