GESP 二级 · GESP 202309 C++ 二级 第 6 题

选择题 · 答案 C · 考点:循环控制

← 整套速查表 GESP 二级 全部真题

题目

以下 C++ 代码实现从大到小的顺序输出 $N$ 的所有因子。例如,输入 N = 18 时输出 18 9 6 3 2 1,横线处应填入( )。

int N = 0;
cin >> N;
for (________) // 此处填写代码
    if (!(N % i))
        cout << i << ' ';
答案:C

考点

循环控制

解题思维

这题考循环控制与因子枚举。拿到题先想:因子是从1到N,但题目要倒着输出,所以循环初值必须设成N,步长用i--递减,条件要能扫到1,这样N%i==0时才能按从大到小打印出来。

常见错误

最容易栽跟头的地方是循环条件写错。比如把i>0写成i>=0,那i会跑到0去,N%0直接除零错误,程序崩;或者写成i>=1,虽然不会崩,但漏掉了因子1,输出就不完整了。还有人选i<N,结果连1都跑不到,输出空行。代入法验证时别只试N=18,再试个N=1这种边界,就能一眼看出条件是不是写对了。

详细解析(节选)

【考点】循环控制|因子遍历|降序输出

1. 命题视角与考纲定位

GESP二级C++模块二(循环结构)的核心就是让你会写for循环的三个部分:初值、条件、步长。命题人选"从大到小输出因子"这道题,目的很明确:卡住的是70%考生的两个致命弱点——一是循环初值条件判断写反,二是漏掉因子1这个边界。看似简单实则精准打击顺序思维与完整性意识。它不是考你求和、考你排序,而是考你"枚举顺序"和"循环终止条件"这两个基本功。

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断