执行如下 C++ 代码,其输出是( )。
int i, cnt = 0;
for (i = 0; i < 10; i++)
cnt += 1;
cout << i << ' ' << cnt;看到这题先想循环执行多少次,终止条件里的 i 最终是多少。for 循环先判断条件再执行,i=0 时进入,执行到 i=10 时条件不成立退出。cnt 在循环体内累加,执行 10 次,所以 cnt=10。最终输出 i=10 cnt=10。
选项 B/C 把 i 当成 9,是误以为循环执行到 i=9 就停止。for 循环条件 i<10,i=9 时仍满足条件,会再执行一次,i 变成 10 才退出。选项 D 把 cnt 算成 9,是漏了最后一次累加。题目里 i 和 cnt 都初始为 0,循环体里 cnt+=1,共执行 10 次,cnt 就是 10。
看到这题先想循环执行多少次,终止条件里的 i 最终是多少。for 循环先判断条件再执行,i=0 时进入,执行到 i=10 时条件不成立退出。cnt 在循环体内累加,执行 10 次,所以 cnt=10。最终输出 i=10 cnt=10。
选项 B/C 把 i 当成 9,是误以为循环执行到 i=9 就停止。for 循环条件 i<10,i=9 时仍满足条件,会再执行一次,i 变成 10 才退出。选项 D 把 cnt 算成 9,是漏了最后一次累加。题目里 i 和 cnt 都初始为 0,循环体里 cnt+=1,共执行 10 次,cnt 就是 10。
本题考查 GESP 一级大纲中"循环结构"与"基本变量操作"模块的核心能力。命题人放这道题是卡住初学者对 for 循环执行流程的误解——绝大多数考生看到 i<10 就以为 i 最大到 9,却没意识到循环体执行后 i 还会自增一次。这是从"条件判断"到"执行流程"的认知断层,一级阶段最薄弱的一环。