下面 C++ 代码执行后的输出是( )。
int cnt = 0;
for (int i = 1; i < 9; i++)
for (int j = 1; j < i; j += 2)
cnt += 1;
cout << cnt;别急着套公式,先像读剧本一样把 i 从 1 到 8 的每一步都过一遍,盯着内层 j 的起始值和步长 2,数清楚每次循环到底跑了几次,最后把次数加起来就能锁定答案。
考生最容易在边界条件上栽跟头,比如把 j<i 看成 j<=i,或者把外层 i<9 看成 i<=9,这样内层次数瞬间翻倍甚至多跑一轮,选项 B 和 D 就是这种误判的典型产物。还有人会忽略 j 的步长是 2,误以为 j 每次加 1,导致把 i=4 时的 2 次当成 4 次来算,或者在 i=8 时把 j 算成 1,3,5,7 四次,其实 j 从 1 开始加 2,到 7 就停了,只有三次。
这题考的是循环嵌套与累加计数,核心就是读懂两层循环里变量 i 和 j 的取值范围以及步长,然后手动模拟一遍,把内层执行的次数累加起来。
命题人特别喜欢在边界和步长这两个地方挖坑。外层循环 i < 9 意味着 i 取 1 到 8,很多人会惯性思维写成 1 到 9;内层 j < i 且 j += 2,步长是 2 意味着 j 只取奇数,但起始值永远是 1,很多人会忽略起始值,或者把条件看成 j <= i,这样内层次数就会翻倍。这道题正确答案是 16,如果你算成 28、35 或 36,基本就是掉进了这些坑里。
拿到这种嵌套循环的题,别一上来就套什么通项公式,最稳妥也最不容易出错的方法是逐层模拟: 1. 先确定外层 i 从几到几,共几轮; 2. 对每一轮 i,确定内层 j 从几开始,步长是多少,终止条件是什么,然后数出这一轮内层执行几次; 3. 把所有轮的次数加起来,就是 cnt 的最终值。
外层循环条件是 i < 9,所以 i 依次取 1, 2, 3, 4, 5, 6, 7, 8,共 8 轮。
j = 1; j < 1 不成立,直接跳过,cnt += 0。j 从 1 开始,1 < 2 成立,执行一次;下一次 j += 2 变成 3,3 < 2 不成立,结束。这一轮 cnt += 1。j 从 1 开始,1 < 3 成立,执行一次;j 变成 3,3 < 3 不成立,结束。这一轮 cnt += 1。j 从 1 开始,1 < 4 成立,执行一次;j 变成 3,3 < 4 成立,再执行一次;j 变成 5,5 < 4 不成立,结束。这一轮 cnt += 2。j 从 1 开始,依次 1, 3,都小于 5,共两次;j 变成 5 时不满足条件。这一轮 cnt += 2。j 从 1 开始,依次 1, 3, 5,都小于 6,共三次;j 变成 7 时不满足。这一轮 cnt += 3。j 从 1 开始,依次 1, 3, 5, 7,都小于 7,共四次;j 变成 9 时不满足。这一轮 cnt += 4。j 从 1 开始,依次 1, 3, 5, 7,都小于 8,共四次;j 变成 9 时不满足。这一轮 cnt += 4。把每一轮的次数加起来:0 + 1 + 1 + 2 + 2 + 3 + 4 + 4 = 17?等等,这里再仔细核对一下 i=8 的情况:j 从 1 开始,加 2 变成 3,再加 2 变成 5,再加 2 变成 7,再加 2 变成 9,9 < 8 不成立,所以 j 取 1,3,5,7 共 4 次,没错。那总和确实是 17?不对,重新加一遍:0+1=1, 1+1=2, 2+2=4, 4+2=6, 6+3=9, 9+4=13, 13+4=17。这里出现了矛盾,说明前面的某轮数错了。再检查 i=7:j 从 1 开始,1<7 执行,j=3<7 执行,j=5<7 执行,j=7<7 不执行,所以 j 取 1,3,5 共 3 次,不是 4 次!同样 i=6:j 取 1,3,5 共 3 次,不是 4 次。修正后:i=6 是 3 次,i=7 是 3 次,i=8 是 4 次。重新累加:0+1+1+2+2+3+3+4 = 16。对了,答案就是 16。
从题库数据看,循环结构是高频考点,共考过 609 题,覆盖 12 个级别。逐年分布上,2023 年考了 77 题,2024 年 128 题,2025 年 158 题,2026 年 161 题,呈现逐年上升趋势;分赛事中,GESP 二级考了 172 题,占比最高,其次是 GESP 一级 139 题、GESP 三级 89 题等。这说明在 GESP 二级这类基础赛中,循环嵌套、累加计数是命题人的常客。
基于上述数据,未来 GESP 二级及一级考试中,类似本题的“双层循环 + 步长 + 边界条件”题型仍会高频出现,命题人可能会继续在小细节上变化,比如把内层步长改成 3 或 4,或者把外层循环改成 i <= 10 但内层条件改成 j < i - 1 等,来增加区分度。暂无足够依据预测具体年份的考法,但可以肯定的是,这类题的核心考点不会变:读懂循环条件、正确计算内层次数、细心累加。