問64
頻出度★★☆
関数 sigma は, 正の整数を引数 max で受け取り, 1から max までの整数の総和を戻り値とする。プログラム中の a に入れる字句として, 適切なものはどれか。 〔プログラム〕 ○整数型: sigma(整数型: max) 整数型: calcX ← 0 整数型: n for (n を 1 から max まで 1 ずつ増やす) a endfor return calcX
这道题的解析和你的作答记录。
関数 sigma は, 正の整数を引数 max で受け取り, 1から max までの整数の総和を戻り値とする。プログラム中の a に入れる字句として, 適切なものはどれか。 〔プログラム〕 ○整数型: sigma(整数型: max) 整数型: calcX ← 0 整数型: n for (n を 1 から max まで 1 ずつ増やす) a endfor return calcX
「calcX ← calcX × n」是乘法。由于 calcX 的初始值为 0,无论乘多少次 calcX 都仍为 0,得不到总和(若要求乘积,则需把初始值设为 1)。错误。
「calcX ← calcX + 1」每次只加 1。只是按循环次数累加 1,所以结果是 max(循环次数),得不到 1+2+…+max 的总和。错误。
正解 函数 sigma 返回从 1 到 max 的整数总和。calcX 初始值设为 0,for 循环将 n 从 1 到 max 每次增加 1 地反复执行。要求总和,只需在每次循环中把当前的 n 累加到累积变量 calcX 上即可。在 a 处填入「calcX ← calcX + n」后,calcX 依次变为 0 →1 →1+2 →1+2+3 →…,循环结束时即为 1+2+…+max 的总和。因此正确答案是ウ。
「calcX ← n」不是加法而是赋值。每次都用 n 覆盖 calcX,所以循环结束时只剩下最后的值 max,得不到总和。错误。