GESP 二级 · GESP 202306 C++ 二级 第 12 题

选择题 · 答案 a · 考点:ASCII编码

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

题目

如果 a 为 char 类型的变量,下列哪个表达式可以正确判断 “a 是数字”?( )

答案:a

考点

ASCII编码

解题思维

答案a。不同类型混合运算时发生隐式类型转换,向更高精度提升。bool→int→long→float→double。

常见错误

注意:关系表达式(3==0)结果为bool(false=0)。bool可转为int参与算术运算。

详细解析(节选)

【考点】字符ASCII编码|关系运算符优先级|逻辑与运算

🎯 考纲定位 GESP二级 第3章“基本数据类型与输入输出”,命题人卡住的是:学生常误以为C++支持链式比较(如0≤a≤9),实则编译器会先算(0≤a)再与9比较,导致逻辑错误。

🧠 解题思维 ASCII码中数字'0'~'9'连续,判断需保证:a≥'0'且a≤'9'。C++中字符比较等价于ASCII整数值比较,故正确写法为 '0'<=a&&a<='9'。选项B、D下限大于上限,逻辑恒假;选项C看似简洁,实为陷阱。

🪤 陷阱拆解 C选项"0<=a<=9"是命题人经典坑点:C++不支持三元比较,实际计算为(0<=a)<=9,布尔值再与字符比较,结果完全不可预期。例如当a='z'时,(0<=z)为真,真≤'9'为假,却仍返回假——看似正确,实则逻辑断裂。B、D属于下限>上限,永远不成立,但易被粗心者误选。

🔄 反命题思维 若将条件改为“判断a是否为字母”,正确表达式应为 'a'<=a&&a<='z'或'A'<=a&&a<='Z';再进阶可考isdigit(a)或isalpha(a),但二级不要求。刷到此类题先问“命题人想考我ASCII连续性还是比较语法”——这能避开90%的陷阱。

同考点真题

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