GESP 二级 · GESP 202312 C++ 二级 第 25 题

判断题 · 答案 A · 考点:循环结构

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

题目

任何一个 while 循环都可以转化为等价的 for 循环。( )

答案:A

考点

循环结构

解题思维

for 循环本质就是 while 的语法糖,把初始化、条件判断、步进操作拆开即可,任意 while 都能转成等价 for。

常见错误

学生容易想当然认为 for 只能‘计数’,或者担心无限 while 转 for 会越界、报错。其实 for 的步进表达式可以是空语句,照样能模拟无限循环;‘等价’只看执行结果是否相同,不要求代码风格一致。

详细解析(节选)

这道题考查循环结构,核心是 while 与 for 的转换关系。for 循环本质就是 while 的语法糖:for(init;cond;inc) 等价于 {init; while(cond) { body; inc; }}。任意 while 循环都有三个要素:变量初始化、循环条件、循环体,而 for 循环恰好能封装这三者——初始化放最前,条件放中间,步进放最后。所以理论上 100% 的 while 都能改写为 for,答案只能是 A。命题人埋了个‘绝对化’的雷。选项 B 想诱使你怀疑‘某些无限 while 转 for 会越界’,但 for 循环的步进表达式可以是任意语句,包括什么都不做(inc 留空),照样能模拟无限循环。又或你纠结‘for 只能用于计数’,这是误把 C 语言老习惯当铁律——C++ 标准从未限制 for 的用法。最阴险的是题目用‘等价’二字,只要执行结果相同就算等价,而非‘风格一致’。若改成‘任意 for 循环都能转化为等价的 while 循环’,答案不变,因为 for 的 init、cond、inc 拆开就是 while 的三要素;若改成‘任意 for 循环都能转化为等价的 do-while 循环’,那就要小心了,因为 do-while 至少执行一次,与 for 的 zero-iteration 情形不等价。一句话提醒:刷到‘任意都能’这种绝对表述的题,先别急着选,想一下有没有特例或边界条件能戳破它。

同考点真题

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