GESP 一级 · GESP 202406 C++ 一级 第 13 题

选择题 · 答案 C

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

题目

执行下面 C++ 代码后输出的 cnt 的值是( )。

int cnt=0;

for(int i = 0; i*i < 64; i+=2)
    cnt++;
cout << cnt;
答案:C

解题思维

答案C。逐行追踪代码:从main开始,记录每个变量的值变化。注意循环的起止条件和累加过程。

常见错误

逐行模拟时建议画表格记录变量值的变化过程,特别是循环体中的变化。

详细解析(节选)

【考点】for循环|条件判断|变量自增

🎯 考纲定位 本题考查 GESP 一级"循环结构"核心考点。命题人把题面设计成数学不等式,卡住的是那些只懂语法、不会动手模拟的学生——他们看到 for 循环就凭直觉选 A 或 B,完全没去验证条件到底什么时候变假。

🧠 解题思维 先抓循环变量:i 从 0 开始,每次加 2,所以 i 只取偶数 0,2,4,6,8...。再看条件:i*i<64,等价于 i<8(因为 i 非负)。于是 i 依次经过 0,2,4,6 这 4 个值都满足条件,第 5 次 i=8 时 8*8=64 不再小于 64,循环立即终止。cnt 每次循环 +1,最终就是 4。

🪤 陷阱拆解

最关键的是:题目用的是 i*i<64 而非 i<8,很多学生直接跳到"i<8 则 i 最大为 6"的结论,却忘了 i 本身是偶数序列,因此只应取 0,2,4,6 这 4 个值。

🔄 反命题思维 如果改成 i*i<=64,答案会变 5;如果 i 初始为 2,答案变 3;如果 i 每次 +1 且条件仍是 i*i<64,答案变 8。刷到类似题,先问自己:循环变量真的按我想象在取哪些值?条件在哪个边界变假?别被数学式子带偏。

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