GESP 二级 · GESP 202303 C++ 二级 第 11 题

选择题 · 答案 A

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

题目

如果 a 和 b 均为 int 类型的变量,下列表达式能正确判断“a 等于 0 或 b 等于 0”的是( )

答案:A

解题思维

这题考的是逻辑运算符和关系运算符的混用。拿到题先想:‘或’对应||,‘等于0’对非零值取反就是!a,所以直接拼!(a==0)的逻辑。

常见错误

学生最容易把a==b==0当成‘a和b都等于0',其实C++里==左结合,它算的是(a==b)的结果再和0比,完全跑偏。还有人见减法就想当然,以为(a==0)-(b==0)==0能抵消,其实它只判断两者状态是否一致,根本表达不了‘或’的关系。

详细解析(节选)

考点与概念

GESP二级核心考点——逻辑运算与关系运算的结合应用。命题人专盯初学者最易混淆的“逻辑或”和“关系等于”概念,用看似简洁的运算符组合设伏,卡住所有没亲手写过逻辑非表达式的考生。

解题思维

题目要求是"a等于0或b等于0",即逻辑或关系。C++中逻辑非运算符!对整数生效:!a等价于(a == 0),非零为假、零为真。因此(!a) || (!b)直接对应题意。其他选项逐一排除:a == b == 0是左结合,即(a == b) == 0,判断的是"a与b相等且都不为0";&&是逻辑与,要求两者同时为0,与题意相反;减法表达式利用布尔值0/1运算,结果1-0=1或0-0=0,只能判断"a、b同时为0或同时非零",无法表达"或"关系。

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