下面 C++ 代码执行后将输出 99,因为 i < 100 不包括 100,而是到 99。( )
int cnt = 0;
for (int i = 0; i < 100; i++)
cnt += 1;
cout << cnt;答案B。逐行追踪代码:从main开始,记录每个变量的值变化。注意循环的起止条件和累加过程。
逐行模拟时建议画表格记录变量值的变化过程,特别是循环体中的变化。
【考点】循环结构|条件判断|循环终止
🎯 考纲定位:GESP 一级《基础编程》模块,循环结构考点。命题人用这道题卡住 80% 学生的边界认知——他们总以为 i < 100 会包含 100,却忽略循环条件只决定何时停止,不决定迭代次数。这道题是 GESP 一级必考的基础循环题,专门测试对循环终止条件的理解。
🧠 解题思维:先定位循环变量 i 的取值序列。for 循环从 i=0 开始,每次迭代 i++,条件 i < 100 为真则继续。因此 i 依次取 0,1,2,...,99,共 100 次迭代。cnt 初始为 0,每次 +1,最终 cnt = 100。所以结论"输出 99"错误。
🪤 陷阱拆解:A 选项误判为真,是因为把"i < 100 不包括 100"这一半对的条件,错误外推到"循环只跑 99 次";命题人利用学生混淆"循环条件"与"循环次数"的常见误区。B 选项正确,因为真正决定输出的是迭代次数,而非条件是否包含边界值。
🔄 反命题思维:若把条件改成 i <= 100,循环会多执行一次,cnt 变成 101;若把 i 初始值改为 1,循环次数仍为 100,cnt 还是 100;只有把循环次数改成 99 次(例如 i < 99),输出才是 99。刷到类似题先问:命题人想考我循环边界还是循环次数?