GESP 三级 · GESP 202312 C++ 三级 第 20 题

判断题 · 答案 B · 考点:循环控制

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

题目

执行 C++ 代码将输出 $0$ $5$,$5$ 之后还有一个空格。()

int list[10]={1,2,3,4,5,6,7,8,9,10};
for(int i=0;i<10;i++)
{
    if(i%5==0)
    {
        cout<<list[i]<<" ";
    }
}
答案:B

考点

循环控制

解题思维

这道题考数组下标与值的对应关系,以及循环条件 i%5==0 的匹配逻辑。拿到题先别急着算,先确认数组初始化:list[0] 存的是 1,list[5] 存的是 6,不是 0 和 5。再想循环里 i 从 0 到 9,只有 i=0 和 i=5 满足条件,输出就是 list[0] 和 list[5] 各带个空格,即"1 6 ",题干说的"0 5"完全对不上,所以选 B。

常见错误

学生最容易犯的错误是把数组下标当成值,以为 list[0] 就是 0,list[5] 就是 5,这是初学者对数组初始化机制的致命误解。另一个坑是看到 i%5==0 就下意识想"每 5 个输出一次",结果漏掉了 i=0 这个起始点,或者误以为会输出 5 个元素。题干故意用"5 之后还有一个空格"这种看似合理的描述来诱导你往"只输出一回"的方向想,其实两个输出项后面都有空格。如果数组初始化改成 list[10]={0,1,2,3,4,5,6,7,8,9},那输出才是"0 5 ",题干才成立,这类变形题专门用来检验你是否真懂下标和值的错位关系。

详细解析(节选)

【考点】数组索引与初始化、循环控制条件匹配、输出格式细节

这道题是 GESP 三级 C++ 数组与循环模块的典型陷阱题。命题人卡住的是初学者对数组下标从 0 开始的认知偏差,以及循环条件 i%5==0 的匹配逻辑理解不足,再加上输出格式里"空格"这个容易被忽略的细节。

先确认数组初始化:题目里写的是 int list[10]={1,2,3,4,5,6,7,8,9,10}; 这意味着 list[0]=1, list[1]=2, …, list[5]=6。很多同学看到 list[0] 就下意识想"下标 0 对应值 0",这是最致命的直觉错误。数组下标永远从 0 开始,但初始化列表里的第一个元素对应的是 list[0],它的值是 1,不是 0。同理,list[5] 对应的是初始化列表里的第 6 个元素,即 6,不是 5。这个错位是题干输出"0 5"的根源——题干描述的是"下标"而不是"值",或者题干本身就在误导你。

再看循环条件:for(int i=0;i<10;i++) 里,i 从 0 到 9。条件 if(i%5==0) 满足的只有 i=0 和 i=5 两个时刻。i=0 时输出 list[0] 即 1,后面跟个空格;i=5 时输出 list[5] 即 6,后面再跟个空格。所以实际输出是"1 6 ",而题干说输出"0 5"且"5 之后还有一个空格",这完全对不上。

A 选项的陷阱在于混淆了数组下标与值的关系,误以为 list[0] 对应值 0;同时忽略循环实际执行次数(仅两次),将 i%5==0 错误理解为"每 5 个元素输出一次"而非"下标为 0 或 5 时输出"。题干"5 之后还有一个空格"的表述极具误导性,实则两个输出项后均带空格,考生易被"5"这个数字诱入错误联想,误以为只输出一次。

若数组改为 list[10]={0,1,2,3,4,5,6,7,8,9},则输出恰为"0 5 ",题干即成立。此类变形题常用来检验考生是否真正理解数组初始化与下标对应关系,而非死记"下标 0 对应值 0"的直觉。刷到类似题,先问自己"下标与值是否错位"和"循环条件是否覆盖所有目标位置"。

【考频与趋势】 数组基础语法在题库中高频出现,2023 年 287 题、2024 年 413 题、2025 年 401 题,说明近年对数组与循环结合的题目持续加码。循环控制条件(如 i%5==0)属于"循环控制"子类,题库共 5 题,2023 年占 2 题,占比 40%,可见命题人喜欢在循环里埋下模运算的坑。结合考频看,这类题未来仍会保持较高频率,尤其 GESP 三级、四级阶段。

【预测】 基于数据,未来 GESP 三级、四级仍会高频出现数组初始化与循环条件结合的陷阱题,可能进一步引入二维数组或动态初始化。暂无足够依据预测是否会转向更复杂的指针或内存布局考察。

同考点真题

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