GESP 八级 · GESP 202406 C++ 八级 第 19 题

判断题 · 答案 A · 考点:数学

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

题目

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

答案:A

考点

数学

解题思维

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

常见错误

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

详细解析(节选)

【考点】数学库函数|隐式类型转换|勾股定理

🎯 考纲定位:本题考查 GESP 八级 C++ 核心考点中的"数学库函数使用",命题人专门卡住考生对 sqrt 函数的认知盲区——很多人只记得 pow 或 log,却忘了 sqrt 才是求平方根的标准工具。

🧠 解题思维:看到题先想勾股定理:斜边平方等于两直角边平方和,没错。再想 C++ 语法:sqrt 函数在 cmath 里,参数是 double,返回值也是 double。关键点来了——a 和 b 虽然定义为 int,但传给 sqrt 时会自动提升为 double,不会报错,也不会丢失精度。

🪤 陷阱拆解:错误选项怎么设计的?命题人利用考生"只背函数名不记参数类型"的毛病,故意把 int 变量扔进 sqrt 里,诱导你担心"类型不匹配"。其实 C++ 有隐式转换机制,int 转 double 是标准行为,不会出错。如果你只背结论、不理解本质,就会掉进这个陷阱——以为必须显式转 double 才行。

🔄 反命题思维:站在命题人视角,如果把题目改成"请写出一个能精确返回整数斜边长度的表达式",答案就得加 round 或强转;要是把 a 和 b 改成 float 类型,其实表达式照样能用,只是精度更低。刷到类似题时,先问自己"命题人想考我什么核心机制?"——这里显然是考隐式类型转换。

同考点真题

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