アルゴリズムとプログラミング|令和7年度 ITパスポート試験 問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
解説
一から七までのうち、三で割り切れる数だけを足し合わせます。
この手続は、変数に零を入れてから、一から七まで一ずつ増やしながら七回繰り返します。繰り返しの中では、その時のiを三で割った余りが零かどうかを調べ、零のときだけiを変数に足します。三で割った余りが零になるのは、三で割り切れる数です。一から七までの中では、三と六の二つが当てはまります。足すのはこの二つだけなので、三に六を足して九になります。繰り返しが終わったあとに変数の値を出力するので、出力は九です。割った商ではなく余りを見ている点が読み違えやすいところです。条件に合わない回は何も足さず、次の回へ進みます。
ほかの選択肢はなぜ違うのか
- 二としています。三で割り切れる数の個数、つまり三と六の二つという個数を答えた形です。足すのは個数ではなく、その数そのものです。何を足しているかを取り違えています。
- 三としています。最初に条件を満たしたiの値だけを答えた形です。繰り返しは七まで続くので、六のときにも条件を満たして足されます。途中で止めて読むとこの値になります。
- 七としています。繰り返しの終わりの値をそのまま答えた形です。七は三で割り切れないので足される側にすら入りません。変数に入るのは、条件を満たした数の合計です。
この問題に関係する言葉
- 擬似言語
- 変数
- 反復
出典:令和7年度 ITパスポート試験 問78(改変:原典の図表をテキストに書き起こした)
同じ単元をまとめて解くならアルゴリズムとプログラミングへ。
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)