GESP 一级 · GESP 202403 C++ 一级 第 8 题

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

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

题目

下面 C++ 代码执行后的输出是( )。

int tnt = 0;

for(int i=0; i<10; i++)
    if(i%3 && i%7)
        tnt += i;
cout << tnt << endl;
答案:D

考点

循环结构

解题思维

别被&&唬住,它等价于'既不是3的倍数也不是7的倍数'。0~9里满足条件的数只有1,2,4,5,8,直接加一波就出答案了,千万别漏掉0或者把7算进去。

常见错误

最容易栽在两个坑上:一是把&&看错成||,导致把6、9、3这些数也加进去,结果变成45或者更大;二是死板地逐行模拟,把0%3&&0%7当成真,或者把7看漏,最后算出18这种‘差一个’的错误答案。记住,0取模是0,逻辑与立刻为假,7是3的倍数,取模也是0,都不满足条件。

详细解析(节选)

这道题考查的是循环结构、条件语句以及取模运算在逻辑与中的组合使用,属于GESP一级《循环控制》模块的经典题型。命题人喜欢拿取模运算嵌套逻辑与,专门卡住那些对&&和||混用不熟练的考生。看到i%3 && i%7,别慌,翻译成大白话就是:i既不是3的倍数也不是7的倍数。用0~9逐一校验:1,2,4,5,8满足条件,累加1+2+4+5+8=20。

具体模拟一遍:i=0时,0%3=0,逻辑与为假,不累加;i=1时,1%3=1,1%7=1,都为真,累加1,tnt=1;i=2时,2%3=2,2%7=2,都为真,累加2,tnt=3;i=3时,3%3=0,假;i=4时,4%3=1,4%7=4,真,累加4,tnt=7;i=5时,5%3=2,5%7=5,真,累加5,tnt=12;i=6时,6%3=0,假;i=7时,7%3=1,7%7=0,假;i=8时,8%3=2,8%7=1,真,累加8,tnt=20;i=9时,9%3=0,假。循环结束,输出20。

陷阱方面,选项C的18是只加了1,2,4,5,7或1,2,3,4,5,7这种漏算一个的常见漏算;选项B的7是把条件误看成i%7==0或类似取模陷阱;A的0最阴险——有人以为0%3&&0%7成立,其实0%3是0,逻辑与立刻为假。如果改成i%3 || i%7,0~9里除了4以外全是真,和会跳到45,这就是命题人想考察的条件分支逻辑。

从考频趋势看,基础语法在题库中占比最大,共考过1295题,覆盖11个考试级别,逐年分布显示2025年401题、2024年413题、2026年109题,说明这类题型近年来热度持续攀升;控制结构考过429题,循环结构考过609题,其中GESP一级在循环结构中占比139题,在控制结构中占比133题,GESP一级是这类题目的高频考点。基于数据,未来GESP一级和二级在循环控制与条件判断结合的题目仍将保持高频,命题人可能会继续用取模运算嵌套逻辑与或逻辑或来考察学生对条件分支的理解,难度不会太大,但细节陷阱(如0的取模、逻辑与的短路特性)依然是必考重点。

同考点真题

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