执行 C++ 代码,将输出 $1$ $3$ $5$ $7$ $9$,$9$ 之后还有一个空格。()
int list[10]={1,2,3,4,5,6,7,8,9,10};
for(int i=0;i<10;i+=2)
{
cout<<list[i]<<" ";
}这题核心就是看循环步长 i+=2 把下标隔开了,配合数组从 0 开始,直接看奇数下标对应的值,别被 cout 后的空格干扰。
很多考生一看到 cout 后面有空格就纠结‘是否多余’,其实命题人特意强调‘9 之后还有一个空格’就是为了确认你真的执行了代码,而不是凭感觉猜。另外容易把下标当成值,以为 list[2] 是 2,其实数组初始化时 list[2] 存的是 3。
【考点】数组初始化|循环步长控制|索引访问
考纲定位:本题考查数组初始化与循环步长控制,对应 GESP 三级大纲“数据结构·数组”与“控制流·循环结构”。命题人卡住的是考生对“步长决定访问间隔”的本质认知,而非死记数组从 0 开始。
解题思维:看到代码先识别数组定义与初始化,再解析循环条件 i<10 与步长 i+=2,故 i 取值 0,2,4,6,8,对应 list[0]=1, list[2]=3, list[4]=5, list[6]=7, list[8]=9,输出后每个值后跟空格,故结果为“1 3 5 7 9 ”。关键观察:步长决定了访问间隔,索引从 0 开始。通法:对于数组遍历,若步长为 k,则访问下标为 0, k, 2k, ... 直到小于数组长度,此类题常考“每隔几个取一个”或“奇偶下标筛选”。
陷阱拆解:错误选项源于三种误区:一是误以为数组下标从 1 开始,导致认为 list[2] 是 2 而非 3;二是忽略步长,误以为循环会遍历所有元素;三是误认为 cout 后不加空格会输出不同结果。最阴险的细节:题干强调“9 之后还有一个空格”,很多考生会纠结空格是否多余,但题目要求就是如此,命题人用这个细节检验是否真正执行代码而非凭感觉。如果你只背结论、不理解本质,就会掉进这个陷阱。
反命题思维:若步长改为 i+=1,输出会变成 1 2 3 4 5 6 7 8 9 10 且空格增多;若数组定义为 list[5]={1,2,3,4,5},步长 i+=2,输出为 1 3 5 ;再或改成输出 list[i+1],输出会偏移。刷到类似题时,先问自己“命题人想考我什么”。
【考频与趋势】 数组与循环是 GESP 三级的常客。数组相关题目在题库中累计 1295 道,覆盖从 2008 到 2026 的所有年份,其中 2023 年高达 287 道,2024 年 413 道,2025 年 401 道,2026 年 109 道,说明近年对基础数据结构的考查密度极大。循环结构单独统计有 429 道,2023 年 81 道,2024 年 138 道,2025 年 160 道,2026 年 45 道,呈现逐年上升后略有回落的趋势。若将两者结合,每年在 GESP 三级中出现的“数组 + 循环”类题目数量稳定在 150 道以上,2023 年甚至达到 287 道,说明命题人非常偏爱用循环来考察数组的访问规律。
【预测】 基于上述数据,未来 GESP 三级仍会高频出现此类题目,但形式可能更灵活:例如引入二维数组、字符串数组,或在循环条件中加入更多逻辑判断(如 i%3==0)。不过核心思路不变:先定步长,再定下标,最后看输出格式。暂无足够依据预测具体年份的考题数量变化,但可确定的是,掌握“步长决定间隔”这一本质,是应对未来所有同类题目的关键。