C 我不明白这个代码有什么错误?

C 我不明白这个代码有什么错误?,c,C,我的代码有问题。当我写坐标如(1,1)和(1,20)时,它给出了错误的答案,如-1.IND00。这个代码有什么问题,这是我的问题: b。编写一个C程序,允许输入笛卡尔坐标系中的任意两点,并计算和显示它们之间的距离。要计算距离,请编写一个名为distanceBetweenTwoPoints或Dbtowpoints的函数,该函数接受两点(x1,y1)和(x2,y2)的浮点坐标,并计算这两点之间的距离d,以返回给调用函数。(10点)提示:两点之间的距离定义为 float distance(int x1

我的代码有问题。当我写坐标如(1,1)和(1,20)时,它给出了错误的答案,如-1.IND00。这个代码有什么问题,这是我的问题:

b。编写一个C程序,允许输入笛卡尔坐标系中的任意两点,并计算和显示它们之间的距离。要计算距离,请编写一个名为distanceBetweenTwoPoints或Dbtowpoints的函数,该函数接受两点(x1,y1)和(x2,y2)的浮点坐标,并计算这两点之间的距离d,以返回给调用函数。(10点)提示:两点之间的距离定义为

float distance(int x1,int y1,int x2,int y2){
float result;
result=sqrt((pow((x2-x1),2))-(pow((y2-y1),2)));
return result;

}
int main () {

int x1,y1,x2,y2;

printf("enter your x1,y1");
scanf("%d%d",&x1,&y1);
printf("enter your x2,y2");
scanf("%d%d",&x2,&y2);

printf("result is %f",distance(x1,y1,x2,y2));

return 0;
}



我想这是因为笛卡尔计算中的减法

它应该是一个加法(把它想象成一个毕达哥拉斯定理):


这就是为什么您必须检查
scanf
的返回值:它告诉您成功读取了多少个参数。它应该是
sqrt(pow(a,2)+pow(b,2))
<代码>+而不是
-
。一种基本的调试技术是打印输入值,以确保计算机看到您认为它应该看到的内容。在调试器中或使用
printf()
语句。是否包含
?赋值需要浮点坐标并规定函数名。你似乎忽视了这些细节。非常非常感谢大家
result=sqrt((pow((x2-x1),2))+(pow((y2-y1),2)));