GESP 三级 · GESP 202409 C++ 三级 第 23 题

判断题 · 答案 A · 考点:输入输出

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

题目

下列程序将输出 A。( )

int a=65;
cout<<(char)a<<endl;
答案:A

考点

输入输出

解题思维

答案A。数组和位运算的代码追踪要特别小心:数组下标从0开始,位运算结果可能不直观。建议画图辅助。

常见错误

位运算追踪时建议把数字写成二进制形式再逐位计算。

详细解析(节选)

【考点】char 类型与 ASCII 码|基本输入输出|类型转换

考纲定位:这道题落在 GESP 三级"程序基础"模块的"数据类型与基本运算"考点,命题人把 ASCII 码和 char 的等价性藏在一行代码里,专门卡住那些只会背"char 是字符类型"却不懂底层数值的考生。

解题思维:看到 int a=65; 先反应 65 是 ASCII 码,再看到 (char)a 就是强制类型转换,把整数 65 转成字符 'A',最后 cout 输出这个字符,自然得到 A。这一类"整数→字符"的题,通法是:先确认整数是否落在可打印 ASCII 区(32-126),再确认目标类型转换规则是否合法,最后验证输出格式。

陷阱拆解:错误选项通常由两个误区构造:一是误以为 cout<<(char)a 会先输出整数 65 再输出字符,其实是先转换再输出;二是把 65 当成十进制数字而非 ASCII 码,从而认为输出应该是 65。题目里最阴险的细节是"只写了一个 cout 语句",如果考生没注意到 endl 换行,可能会以为输出是 A\n 而纠结格式,但这里只要求内容正确。

反命题思维:如果把 int a=65 改成 char a='A'; cout<<(int)a;,答案就不再是 A 而是 65;或者把 (char)a 换成 a 直接输出,编译器会报类型不匹配。刷到类似题时,先问自己"命题人想考我什么"——是考 ASCII 转换,还是考输出流的行为细节。

同考点真题

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