在线编译器 C

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

- 变量 A 和 B 分别存储了 x 坐标差和 y 坐标差的平方,这是正确的。
- 但变量 A 和 B 被声明为 int 类型,而它们的平方值可能较大,当坐标值较大时,int 可能溢出,导致计算结果错误。

- 考虑将 A 和 B 改为 float 或 double 类型,或者直接在计算平方时使用浮点数运算,避免整数溢出的问题。