在线编译器 C

#include <stdio.h> int main() { int x1, y1, x2, y2; float 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); }
这段代码试图计算两个点 (x1,y1) 和 (x2,y2) 之间的欧几里得距离,并保留两位小数输出。但代码中存在一个关键问题。

- 你使用了 `sqrt` 函数,但没有包含对应的头文件 `<math.h>`,这会导致编译错误或未定义行为。
- 变量 `dx` 和 `dy` 被声明为 `float`,但 `x1 - x2` 的结果是 `int`,赋值时会自动转换,这本身没问题,但更常见的做法是直接使用 `double` 类型以提高精度。