ITパスポート試験
令和4年 第96問
不正解
解答
問96
関数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】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ずつ増やす ←正解! |
(令和4年 ITパスポート試験 第96問 テクノロジ系/アルゴリズムとプログラミング)
解説
この問題の正解率:28.6%(やや低い)
空欄aについて。
[2×num+i]の場合
i=1だと、2×1+1=3 → num
i=2だと、2×3+2=8 → num
i=3だと、2×8+3=19 → num
[num+2×i]の場合
i=1だと、1+2×1=3 → num
i=2だと、3+2×2=7 → num
i=3だと、7+2×3=13 → num
したがって、空欄aは「num + 2 × i」が適切ということになります。
空欄bについて。
[iを1から7まで3ずつ増やす]の場合
i=1だと、1+2×1=3 → num
i=4だと、3+2×4=11 → num
i=7だと、11+2×7=25 → num
[iを2から6まで2ずつ増やす]の場合
i=2だと、1+2×2=5 → num
i=4だと、5+2×4=13 → num
i=6だと、13+2×6=25 → num
したがって、空欄bは「iを2から6まで2ずつ増やす」が適切です。
プログラムの問題が苦手な人は、試験では後回しにして別の問題を優先した方が良いかもしれません。