计算两点间的距离
WA的代码:
#include<stdio.h>
#include<math.h>
int main()
{
float x1,x2,y1,y2,n,m,t;
while(scanf("%f %f %f %f",&x1,&y1,&x2,&y2)!=EOF)
{
m=(x2-x1)*(x2-x1);
n=(y2-y1)*(y2-y1);
t=sqrt(m+n);
printf("%.2f\n",t);
}
return 0;
}
原因:
定义变量的顺序跟赋值的顺序不完全一致,导致计算出错,此时编译器为G++。
解决办法一:
保证定义变量的顺序跟赋值的顺序一致。
AC的代码一:
#include<stdio.h>
#include<math.h>
int main()
{
float x1,x2,y1,y2,m,n,t;
while(scanf("%f %f %f %f",&x1,&y1,&x2,&y2)!=EOF)
{
m=(x2-x1)*(x2-x1);
n=(y2-y1)*(y2-y1);
t=sqrt(m+n);
printf("%.2f\n",t);
}
return 0;
}
解决办法二:
简化计算步骤,进行整体计算。
AC的代码二:
#include<stdio.h>
#include<math.h>
int main()
{
float x1,x2,y1,y2,t;
while(scanf("%f %f %f %f",&x1,&y1,&x2,&y2)!=EOF)
{
t=sqrt(((x2-x1)*(x2-x1))+((y2-y1)*(y2-y1)));
printf("%.2f\n",t);
}
return 0;
}