ITパスポート 過去問
令和7年度
問78 (テクノロジ系 問23)

このページは閲覧用ページです。
履歴を残すには、 「新しく出題する(ここをクリック)」 をご利用ください。

問題

ITパスポート試験 令和7年度 問78(テクノロジ系 問23) (訂正依頼・報告はこちら)

手続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

次の問題へ

正解!素晴らしいです

残念...

この過去問の解説 (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 となります。

選択肢1. 2

2の値を出力することはないため、本選択肢は不正解です。

選択肢2. 3

totalValueの値が3になることは起こりますが、i=7まで処理を継続するため、最終的に出力する値は3にはなりません。

そのため本選択肢は不正解です。

選択肢3. 7

7の値を出力することはないため、本選択肢は不正解です。

選択肢4. 9

先に解説したように出力する値は、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」の処理をトレースしていきましょう。

プログラムの処理をトレースするときは、次のようなトレース表を書くとわかりやすいです。

 

処理iの値totalValueの値
totalValueを0で初期化 0
iに1を代入10
1÷3の余り・・・割れないので不成立10
2÷3の余り・・・割れないので不成立20
3÷3の余り・・・0「3の倍数」フラグ30
totalValue←0+3=3「3の倍数」合計発動33
4÷3の余り・・・143
5÷3の余り・・・253
6÷3の余り・・・0「3の倍数」フラグ63
totalValue←3+6=9「3の倍数」合計発動69
7÷3の余り・・・179
i=7なので処理を終了79
totalValueの値である「9」を出力79

 

よって、答えは9となります。

参考になった数1

03

このプログラムは、iが1~7までの間で、i÷3のあまりが0、

つまり3で割り切れる値の際に、totalValueにiを加算します。

3で割り切れるiは、3と6になり、totalValueの初期値は0のため、

0+3+6の9になります。

選択肢1. 2

これは不正解です。

選択肢2. 3

これは不正解です。

選択肢3. 7

これは不正解です。

選択肢4. 9

これが正解です。

参考になった数1