在线编译器 C

#include <stdio.h> int main() { int x1, y1, x2, y2; double dx, dy, len; scanf("%d%d%d%d", &x1, &y1, &x2, &y2); dx = x1 - x2; dy = y1 - y2; len = sqrt(dx * dx + dy * dy); printf("%.2f", len); return 0; }
这段代码试图计算两个点 (x1,y1) 和 (x2,y2) 之间的欧几里得距离,并保留两位小数输出。但代码中存在一个问题。

- 你使用了 `sqrt` 函数,但没有包含对应的头文件 `<math.h>`,这会导致编译错误或未定义行为。
- 另外,`dx` 和 `dy` 是 `double` 类型,但 `x1 - x2` 的结果是 `int`,虽然隐式转换可以工作,但更清晰的写法是直接使用 `double` 类型的变量来存储差值。