GESP 一级 · GESP 202309 C++ 一级 第 13 题

选择题 · 答案 D

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

题目

下面 C++ 代码用于求正整数的所有因数,即输出所有能整除一个正整数的数。如,输入 10,则输出为 1、2、5、10;输入 12,则输出为 1、2、3、4、6、12;输入 17,则输出为 1、17。在横线处应填入代码是( )。

int n = 0; cout << "请输入一个正整数:"; cin >> n;

for (__________________) // 此处填写代码 if (n % i == 0) cout << i << endl;

答案:D

解题思维

这道题核心就是看 for 循环的边界和步长。先想清楚:因数要跑到 n 本身,所以循环条件必须能取到 n,即 i < n + 1;再看步长,i + 1 只是表达式,i 永远不变,会死循环,只能选带 i++ 的选项,这样一排除就锁定 D 了。

常见错误

学生最容易掉进两个坑:一是以为 i < n 就能覆盖到 n,其实 i 最大只能到 n-1,漏掉 n 这个因数;二是分不清 i + 1 和 i++,把 i + 1 当成自增,结果 i 永远停在 1,程序直接死循环。还有少数人会纠结 n=1 的情况,觉得 n+1 多余,但题目说的是正整数,n 最小为 1,此时 i < 2 刚好让 i 取到 1,逻辑完全自洽,不用特判。

详细解析(节选)

这道题考查什么?

这是一道典型的"程序填空"题,核心考点落在for 循环的语法结构、循环变量的递增方式以及边界条件的设定。命题人特意把"n 本身"这个因数藏在循环条件里,就是要考察你是否真正理解循环变量的取值范围。

知识点拆解(用大白话讲明白)

1. for 循环的三要素:初始化、条件判断、步进。只有当条件为真时,循环体才会执行;步进决定了下一次循环时 i 变成多少。 2. i++ vs i + 1:这是新手最容易混淆的。i++是后置自增,执行完整个表达式后 i 会加 1;而i + 1只是把 i 加 1 的结果用掉,i 本身纹丝不动,就像你算出下一站是 2,但没买票上车,永远停在原地。 3. 边界条件:题目要求输出所有因数,包括 n 本身。如果循环条件是i < n,那么 i 最大只能取到 n-1,n 永远进不来;必须写成i < n + 1,这样 i 才能合法地取到 n。

命题人怎么挖坑?

这道题的坑就藏在两个细节里:

命题人特意把这两个坑组合在一起,让你必须在四个选项里精准识别出唯一正确的写法。

拿到题先想什么?从哪入手?

拿到题,别急着看答案,先顺着代码逻辑走一遍: 1. 看目标:题目说"输出所有因数",那 i 必须从 1 开始,一直走到 n,中间只要n % i == 0就输出。 2. 看条件:要走到 n,循环条件必须允许 i 取到 n。i < n不行,i < n + 1才行。 3. 看步进:i 每次要加 1,必须用i++,不能用i + 1。 4. 看初始化:i 从 1 开始,没问题。

一步步推演(代入法验证)

我们把四个选项一个个代进去,看看会发生什么:

所以,答案只能是 D。

避坑指南

考频与趋势

从题库数据看,"for 循环语法"是 GESP 一级的高频考点。基础语法类题目在 2023 年考了 287 题,2024 年 413 题,2025 年 401 题,呈现逐年上升的强劲势头,说明一级考试越来越重视对基本语法的精准掌握。运算符与表达式类题目在 2023 年考了 91 题,2024 年 41 题,2025 年 61 题,虽然波动较大,但整体仍占重要位置。结合 GESP 一级 332 题的分布,这类"循环 + 条件"的混合题在一级考试中占比很高,是命题人的"拿手好戏"。

预测

基于 2023-2025 年的数据,基础语法题在一级考试中持续保持高位,且"循环"与"运算符"的交叉点(如本题)是命题人最爱挖坑的地方。未来一级考试中,类似"for 循环条件与步进"的题目大概率仍会高频出现,甚至可能出现更复杂的嵌套循环或结合数组下标的变体。暂无足够依据预测具体题型变化,但可以肯定:对循环边界的敏感度、对自增运算符的理解,仍是 GESP 一级考生的"生死线"。

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