令和4年度 問96
関数の繰返し処理の穴埋め
出典: 令和4年度 ITパスポート試験 公開問題 問96 (IPA)
関数 calcX と関数 calcY は,引数 inData を用いて計算を行い,その結果を戻り値とする。関数 calcX を calcX(1) として呼び出すと,関数 calcX の変数 num の値が,1→3→7→13 と変化し,戻り値は 13 となった。関数 calcY を calcY(1) として呼び出すと,関数 calcY の変数 num の値が,1→5→13→25 と変化し,戻り値は 25 となった。プログラム中の a,b に入れる字句の適切な組合せはどれか。
〔プログラム 1〕
○整数型: calcX(整数型: inData)
整数型: num, i
num ← inData
for (i を 1 から 3 まで 1 ずつ増やす)
num ← [ a ]
endfor
return num
〔プログラム 2〕
○整数型: calcY(整数型: inData)
整数型: num, i
num ← inData
for ( [ b ] )
num ← [ a ]
endfor
return num
| a | b | |
|---|---|---|
| ア | 2 × num + i | i を 1 から 7 まで 3 ずつ増やす |
| イ | 2 × num + i | i を 2 から 6 まで 2 ずつ増やす |
| ウ | num + 2 × i | i を 1 から 7 まで 3 ずつ増やす |
| エ | num + 2 × i | i を 2 から 6 まで 2 ずつ増やす |
- ア a: 2 × num + i,b: i を 1 から 7 まで 3 ずつ増やす
- イ a: 2 × num + i,b: i を 2 から 6 まで 2 ずつ増やす
- ウ a: num + 2 × i,b: i を 1 から 7 まで 3 ずつ増やす
- エ a: num + 2 × i,b: i を 2 から 6 まで 2 ずつ増やす
正解と解説を見る
正解: エ
- ア: a が 2 × num + i だと、3 → 7 にならず誤りです。
- イ: a が 2 × num + i だと、1 → 3 → 8 となり、誤りです。
- ウ: b が i を 1、4、7 と動かすと、差が 2、8、14 になり、誤りです。
- エ: a が num + 2 × i、b が i を 2、4、6 と動かすので、正しい答えです。
ポイント
a の式(calcX で調べる): i が 1, 2, 3 のとき、num は 1 → 3 → 7 → 13 です。
- 1 → 3: 差は 2 = 2 × 1
- 3 → 7: 差は 4 = 2 × 2
- 7 → 13: 差は 6 = 2 × 3
よって a は num + 2 × i です。
b の範囲(calcY で調べる): num は 1 → 5 → 13 → 25 で、差は 4、8、12 = 2 × i なので、i は 2、4、6 です。
よって b は i を 2 から 6 まで 2 ずつ増やすです。
広告
「アルゴリズムとプログラミング」をこのサイトで解く (記録・間違えた問題の解き直し・AI教師への質問)
広告