GESP 二级 · GESP 202509 C++ 二级 第 14 题

选择题 · 答案 A

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

题目

下面 C++ 代码执行,其输出是( )。

int a=9, b=27;
a = 'a' + 'b';
b = 'a' - 'b';
a = a - b;
cout << a << ' ' << b << endl;
答案:A

解题思维

答案A。追踪程序输出时注意整数除法截断和循环条件的边界值。变量初始值对结果影响很大。

常见错误

整数除法截断容易忽略!if(n%i==0)中%是取余运算不是除法。

详细解析(节选)

【考点】字符常量的 ASCII 值|int 运算

考纲定位:本题考查 GESP 二级 C++ 大纲中"字符型常量与整型运算"这一核心考点。命题人专门卡住考生对字符型常量的认知——绝大多数人看到 'a' 就联想到字母而非数值 97,'b' 就联想到字母而非 98,导致后续运算完全错误。

解题思维:解题链必须按顺序执行:第一步,a = 'a' + 'b','a' 是 ASCII 97,'b' 是 ASCII 98,97+98=195;第二步,b = 'a' - 'b',97-98=-1;第三步,a = a - b,195 - (-1) = 196。因此输出是 196 和 -1。通法:字符型常量参与运算时,必须按 ASCII 码值进行整型运算,而不是按字母顺序或符号意义。

陷阱拆解:选项B是静态思维陷阱——考生没理解赋值语句会覆盖原值,仍以为 a 是 9、b 是 27;选项C偷换了符号意义,把 'a' 误作字母 a 而把 'b' 误作字母 b,导致 98 97 这个看似"对应"的错误;选项D利用"不确定"这个万能选项,让考生逃避思考。最阴险的是字符型常量的"符号偷换":看到 'a' 就联想到字母而非 ASCII 97,看到 'b' 就联想到字母而非 ASCII 98,这是命题人专门设计来卡住只背口诀的考生。

反命题思维:若把变量类型改成 char,a 和 b 将存储字符本身而非 ASCII 值,输出会变成 'a' 'b' 而非 97 98;若把 cout 改成输出字符,则会是 'a' 'b' 而非 196 -1。刷到类似题先问:这里考的是字符的 ASCII 值还是字符本身?如果是后者,就要用 char 类型或强制转换。

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