GESP 一级 · GESP 202303 C++ 一级 第 12 题

选择题 · 答案 C

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

题目

如果 a 为 int 类型的变量,下列哪个表达式可以正确求出满足“大于等于 a 且是 4 的倍数”的整数中最小的?( )

答案:C

解题思维

这题考向上取整到4的倍数。拿到题先想:a本身可能不是4的倍数,要把它‘推’到下一个4的倍数。核心是把a往右挪3个单位再整除,就能保证商至少是原商加1,最后乘4就得到答案。

常见错误

学生最容易掉进B项的坑,以为除一下再乘回去就是倍数,完全忽略了整数除法会截断余数,导致结果变成≤a的最大倍数而非≥a的最小倍数。D项看似把余数减掉再补4,但没考虑a正好是4的倍数时余数为0,结果会多加一个4。A项直接乘4更是离谱。审题时千万注意‘大于等于’这个限定词,方向反了就全错了。

详细解析(节选)

【考点】取余运算|向上取整技巧|整数除法

GESP一级‘算术运算’模块,命题人专门卡住‘整数除法向下取整’这一默认行为——C++的/运算符对整数永远做截断(向零),绝大多数学生看到带除法的表达式会下意识认为‘除一下再乘回去就能得到倍数’,却完全没考虑余数去哪了。

解题思维

求‘≥a且是4的倍数’的最小值,本质是向上取整到4的倍数。通法:(a + 3) / 4 * 4,原理是把a往右推3个单位,再整除4,保证商至少是原商加1(当a不是4的倍数时),最后乘4恢复倍数。

验证几个关键值:

完全符合题意。

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