GESP 一级 · GESP 202512 C++ 一级 第 14 题

选择题 · 答案 C · 考点:循环结构

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

题目

如果正整数 $N$ 的所有奇因数(即能将 $N$ 整除的正奇数)的和是 $27$ 的倍数,则称 $N$ 是 $27$ 的神秘数。下面的 C++ 代码用于判断输入的 $N$ 是否为 $27$ 的神秘数。如输入 $53$,它有两个奇因数 $1$ 和 $53$,则将输出 Y。( )。

int i, N, cnt = 0;
cin >> N;
for (i=1; i <=N; i++){
    if (_____________)
        cnt += i;
}
if(cnt % 27 == 0)
    cout << 'Y';
答案:C

考点

循环结构

解题思维

答案C。逐行追踪代码:从main开始,记录每个变量的值变化。注意循环的起止条件和累加过程。

常见错误

逐行模拟时建议画表格记录变量值的变化过程,特别是循环体中的变化。

详细解析(节选)

【考点】循环结构|取模运算|奇偶性判断

🎯 考纲定位 本题考查 GESP 一级"循环与条件判断"模块最基础的组合应用。命题人专门卡住考生对 C++ 逻辑表达式"非零即真"的误读——i % 2 在代码里就是"i 为奇数",而 i % 2 == 0 才是"i 为偶数"。

🧠 解题思维 "奇因数"是复合概念:既要能整除 N,又要自身是奇数。因此循环里必须同时满足两个条件:N % i == 0(整除)和 i 为奇数(i % 2 非零)。符合的数才加到 cnt 里,最后判断 cnt % 27 == 0 即可。

🪤 陷阱拆解 选项 A 和 D 都用了 N % i 而非 N % i == 0,逻辑非会把"能整除"变成"不能整除",直接筛掉所有因数;选项 B 和 D 里出现了 i % 2 == 0,这是偶数条件,与题目要求的"奇数因数"完全相反。只有 C 选项把"整除"与"奇数"两个条件正确组合。

🔄 反命题思维 若把 27 换成 3 或 9,只要奇因数之和仍是 3 的倍数即可,答案会变;若改成求偶因数,条件应改为 i % 2 == 0。刷到类似题时先问"命题人想考我理解哪个细节",而不是死记结论。

同考点真题

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