Онлайн компилятор C

#include <stdio.h> #include <math.h> int main() { int x1,y1,x2,y2; float distance,sumdistance; scanf("%d%d%d%d",&x1,&y1,&x2,&y2); sumdistance=(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2); distance=sqrt(sumdistance); printf("%.2f",distance); return 0; }
这段代码的功能是:从键盘输入两个点的坐标 (x1,y1) 和 (x2,y2),然后计算并输出这两点之间的欧几里得距离,结果保留两位小数。

代码整体思路正确,但有一个潜在问题需要注意。

- 在计算平方和时,`(x1-x2)*(x1-x2)` 的结果是 `int` 类型,如果坐标差值较大,相乘后可能超出 `int` 的范围,导致溢出。可以考虑在计算前将差值转换为 `float` 或 `double` 类型,或者直接使用 `float` 类型的变量来存储差值。
- `sqrt` 函数接收 `double` 类型参数,虽然 `int` 会自动转换,但为了更安全,建议将平方和的结果显式转换为 `double` 类型再传入 `sqrt`。