ITパスポート 過去問
令和7年度
問78 (テクノロジ系 問23)
問題文
[プログラム]
◯calcMod3()
整数型:totalValue、i
totalValue←0
for(iを1から7まで1ずつ増やす)
if(i÷3の余りが0と等しい)
totalValue←totalValue+i
endif
endfor
totalValueを出力する
このページは閲覧用ページです。
履歴を残すには、 「新しく出題する(ここをクリック)」 をご利用ください。
問題
ITパスポート試験 令和7年度 問78(テクノロジ系 問23) (訂正依頼・報告はこちら)
[プログラム]
◯calcMod3()
整数型:totalValue、i
totalValue←0
for(iを1から7まで1ずつ増やす)
if(i÷3の余りが0と等しい)
totalValue←totalValue+i
endif
endfor
totalValueを出力する
- 2
- 3
- 7
- 9
正解!素晴らしいです
残念...
この過去問の解説 (3件)
01
本問はプログラムの処理内容を読み解いて、ループ処理と条件分岐が組み合わさった場合の実行結果を正確に導き出す能力を問うものです。一見複雑でとっつきにくそうですが、一つ一つの処理を順番に行えば、正解できます。
まず、for文はループ処理を行い、if文は条件分岐をします。
forはiを1から7まで1ずつ増やす、というループ処理をします。
ifの条件が、i÷3の余りが0と等しいとなっているので、iの値が3で割り切れる値になったら、totalValueにそれを入れます。
プログラムを実行したらどうなるのかを実際に説明します。
初期状態: totalValueは0から始まります。
ループ処理開始: iは1から7まで、1ずつ増えながら処理を繰り返します。
i = 1 3で割り切れないため、何も足されず、totalValueは0のままです。
i = 2 3で割り切れないため、何も足されず、totalValueは0のままです。
i = 3 3で割り切れるため、totalValueにiの値である3を足します。
totalValue 0 + 3 = 3
i = 4 3で割り切れないため、何も足されず、totalValueは3のままです。
i = 5 3で割り切れないため、何も足されず、totalValueは3のままです。
i = 6 3で割り切れるため、totalValueにiの値である6を足します。
totalValue 3 + 6 = 9
i = 7 3で割り切れないため、何も足されず、totalValueは9のままです。
ループ処理終了: iが7になったので、繰り返し処理が終わります。
出力: 最後にtotalValueの値として9が出力されます。
正解は 9 となります。
2の値を出力することはないため、本選択肢は不正解です。
totalValueの値が3になることは起こりますが、i=7まで処理を継続するため、最終的に出力する値は3にはなりません。
そのため本選択肢は不正解です。
7の値を出力することはないため、本選択肢は不正解です。
先に解説したように出力する値は、9であるため本選択肢が正解です。
本問のようにプログラムの実行結果を問うような問題が出題された場合は、まず落ち着いてわかる範囲からプログラムの内容を読み解きます。
次に、実行結果を確認するときは書き出して、確認しながら行えば勘違いや、計算間違いを防止できます。
参考になった数16
この解説の修正を提案する
02
このようなプログラムの問題では、コードを順に追っていきながら値を代入し、変数の内容を確かめていくトレースという作業で解きます。
問題を解く前に、コードの意味を押さえておきましょう。
ここで押さえておくべきは「for文」と「if文」です。
【for文】
これは「処理を繰り返す」という意味です。
問題文にある
for(iを1から7まで1ずつ増やす)
というのは、言い換えると
for(変数iの値を1から1ずつ足し、合計が7になるまで、次のコードを実行する)
という意味になります。
【if文】
これは「条件分岐」といって、指定された条件を満たすか否かで次に実行されるコードが異なるというものです。
では、その条件を確認してみましょう。
問題文では
if(i÷3の余りが0と等しい)
とあります。
3で割ってあまりが0というのは「3で割り切れる数字」ということですので、
if(変数iの値が3の倍数である)
と捉えていいでしょう。
そして、3の倍数であったときには、
totalValue←totalValue+i
とあります。
変数totalValueは最初、0で初期化されていますが、そこにiを足しています。
つまり、このプログラムは「3の倍数だけを合計している」ということになります。
ここまでを整理し、手続「calcMod3」の処理をトレースしていきましょう。
プログラムの処理をトレースするときは、次のようなトレース表を書くとわかりやすいです。
よって、答えは9となります。
参考になった数1
この解説の修正を提案する
03
このプログラムは、iが1~7までの間で、i÷3のあまりが0、
つまり3で割り切れる値の際に、totalValueにiを加算します。
3で割り切れるiは、3と6になり、totalValueの初期値は0のため、
0+3+6の9になります。
これは不正解です。
これは不正解です。
これは不正解です。
これが正解です。
参考になった数1
この解説の修正を提案する
前の問題(問77)へ
令和7年度 問題一覧
次の問題(問79)へ