GESP 二级 · GESP 202403 C++ 二级 第 16 题

判断题 · 答案 B

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

题目

如果有以下 C++ 代码:

double s;
int t;
s = 18.5;
t = int(s) + 10;

那么 cout << t 的结果为 $28.5$。

答案:B

解题思维

这题别被 28.5 这个假象迷了眼,核心只盯住 int() 函数和 t 变量类型。s 是 double,进 int() 直接砍掉小数变 18,加 10 还是整型运算,结果赋给 int t,cout 输出整型绝不会带小数,答案选 B。

常见错误

学生最容易掉进'数值陷阱',看到 18.5 就下意识觉得结果该有 0.5,或者误以为 int() 只是取整不丢精度。其实 int() 是强制类型转换,小数部分直接丢弃,且 t 声明为 int,整个表达式结果就是整型。cout 输出整型时格式固定,不会自动补小数位,所以输出 28 而非 28.5。

详细解析(节选)

【考点】本题考查 GESP 二级'数据类型与表达式'模块中显式类型转换与整型输出格式的规则。命题人特意用 int() 函数和 cout 输出两个环节,卡住的是'转换后的类型'与'输出时的格式'的混淆——很多考生误以为 int(s) 仍保留小数或 cout 会自动补零,导致误选 A。

【解题思维】拿到题先判类型:s=18.5 是 double 类型。int(s) 是强制类型转换,C++ 规定 int() 会将 double 直接截断小数部分,得到整型 18。接着看运算:18+10 是整型加法,结果 28 仍是整型。再看赋值:int t 声明为整型,28 赋值给它,t 就是 28。最后看输出:cout<<t 输出整型变量,按十进制整数格式打印,不会自动补小数位,因此输出为 28。

【关键步骤】int() 截断行为是核心,不是四舍五入;整型算术运算结果类型不变;cout 输出整型格式固定。这三个点串联起来,就能排除 A 选项。

【陷阱拆解】A 选项错误源于两个经典误区:一是认为 int(s) 返回 double(实际返回 int),二是误以为 cout 对整型会补小数(只会补整型格式)。题目故意用 28.5 这个带小数的数字诱导考生忽视类型转换后的整型特性,属于'数值陷阱'。若考生只关注数字大小而忽略类型,就会选 A。

【反命题思维】若将 t 声明为 double 或输出时写 cout<<(double)t,结果变为 28.0;若将 int(s) 改为 floor(s) 或 round(s),截断逻辑会变化但 t 仍为整型。刷到此类题先问'类型是什么,输出格式是什么',避免被数字表象迷惑。

【考频趋势】基础语法在题库共考过 1295 题,覆盖 11 个考试级别,逐年分布:2008 年 1 题、2011 年 1 题、2019 年 3 题、2023 年 287 题、2024 年 413 题、2025 年 401 题、2026 年 109 题、null 年 80 题。分赛事来看,GESP 二级考了 283 题,是基础语法在二级中的高频考点之一。输入输出共考过 253 题,其中 GESP 二级考了 80 题,说明二级考试对'数据类型转换+输出格式'这类组合考查非常密集,2024 年基础语法考了 413 题、2025 年考了 401 题,呈现高位震荡趋势,这类题型未来仍会高频出现。

【预测】基于数据,GESP 二级在 2024-2025 年基础语法考题量极大(413+401),且二级本身考了 283 题,未来大概率继续以'类型转换+输出格式'的组合形式出现,可能增加更多干扰项(如 float 截断、long 溢出等),但核心逻辑不变:先判类型,再判运算,最后判输出格式。暂无足够依据预测具体年份考题量,但题型热度可预期持续高位。

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