GESP 二级 · GESP 202412 C++ 二级 第 8 题

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

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

题目

下面 C++ 代码用于输出 0-100 之前(包含 100)能被 7 整除但不能被 3 整除的数,横线处不能填入的代码是( )。

for (i=0; i<100; i++)
    if(______________)
        cout << i << endl;
答案:C

考点

循环结构

解题思维

答案C。循环补全要分析循环变量的初始值、条件和更新方式,确保能产生目标输出。

常见错误

代入法验证时注意选项之间的细微差别。循环条件中的<和<=可能导致完全不同的结果。

详细解析(节选)

【考点】循环结构|取模运算|逻辑运算

题目要求输出"能被7整除且不能被3整除"的数,核心条件就是 i%7==0 && i%3!=0。A选项直接命中题意;B选项用 !(i%7) 表示取余为0,等价于能被7整除;D选项用 !(i%3==0) 表示不能被3整除,二者逻辑完全一致。C选项写成 i%7 && i%3,在C++中只要余数非零就为真,因此它筛选的是"不能被7整除且不能被3整除"的数,恰好是题目要求的反面。

命题人把"取余"的概念偷换成"整除"的直觉:很多考生只看到"i%7"就以为是"能被7整除",忽略了取模运算的返回值是余数而非整除关系。更阴险的是,C选项在语法上完全合法,逻辑上也通顺——只是方向反了。这种"非真即假"的二值陷阱在二级考试中很常见,专门卡住那些只背条件公式而不理解运算符本质的学生。

若把题目改为"能被7或3整除",C选项会变成 i%7==0 || i%3==0,而原题的"不能被7且不能被3"对应 i%7!=0 && i%3!=0。刷到此类题先问自己:"命题人想考我取模的返回值还是整除关系?"

同考点真题

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