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

判断题 · 答案 A

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

题目

已知 int 类型的变量 a 和 b 中分别存储着一个直角三角形的两条直角边的长度,则该三角形的面积可以通过表达式 a / 2.0 * b 求得。

答案:A

解题思维

图的存储方式:邻接矩阵(O(n²)空间,适合稠密图)、邻接表(O(n+m)空间,适合稀疏图)。

常见错误

有向完全图边数为n(n-1),无向完全图边数为n(n-1)/2。简单图不含自环和重边。

详细解析(节选)

【考点】整数除法|浮点运算|C++算术表达式求值

直角三角形面积公式为a*b/2,因a、b为int,若直接a/2*b会先做整数除法丢失精度。但表达式a/2.0*b中2.0是double,强制a转为double参与运算,结果仍为double类型,完美匹配面积计算需求。

命题人埋了双重陷阱:一是诱导你用整数除法思维看a/2.0,二是让你误以为最终结果仍是int。实际上C++运算规则中int与double混合必转double,a/2.0就是double除法,再乘b仍是double,完全符合面积计算需求。

若题目改成float类型变量,表达式依然成立,但考点就退化为类型转换;若写成a/2*b则必错。刷到类似题先问:命题人特意写2.0想考什么?答案永远是考察浮点运算优先级与类型提升。

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