我必须使用函数 dist(double p[2][3]) 找到两对点之间的距离,每个点由三个坐标定义。我将总共 12 个坐标放在一个文件中,用空格分隔它们。我尝试这样做,但循环永远不会中断,它只是一遍又一遍地打印前两点之间的距离......
#include <stdio.h>
#include <math.h>
double dist(double p[2][3])
{
double distance=sqrt(((p[0][0]-p[1][0])*(p[0][0]-p[1][0]))+((p[0][1]-p[1][1])*(p[0][1]-p[1][1]))+((p[0][2]-p[1][2])*(p[0][2]-p[1][2])));
return distance;
}
int main()
{
double p[2][3];
FILE*in;
in=fopen("file","r");
while(1)
{
for(int i=0;i<2;i++)
{
for(int j=0;j<3;j++)
{
if(fscanf(in, "%lf ", &p[i][j])==EOF)
{break;}
}
}
printf("the distance is %lf\n", dist(p));
}
fclose(in);
}
内部 if{} 中的 break 只会中断 for 循环,但还有另一个 while(1) 循环不会中断,因此循环会一直持续下去。在 for 循环的开始,您从头开始定义和初始化“i”和“j”,因此这可能是另一个逻辑错误。一个好主意是放置一个调试点,看看它是如何进行的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句