【发布时间】:2017-04-26 05:16:28
【问题描述】:
我试图计算 2 点 A、B 之间的距离。当我运行终端窗口时,它给了我一个错误的数字。谁能帮我改变一些价值、结构或许多提示。
示例: 在 A : -50 -50 在 B : 50 50 距离为 141.42
#include<stdio.h>
#include<conio.h>
#include<math.h>
typedef struct{
double a;
double b;
double c;
double d;
}location;
double dist(location w,location x, location y,location z)
{
double l;
l=sqrt(pow((y.c-w.a),2)+pow((z.d-x.b),2));
return(l);
}
void main()
{
location h;
location i;
location j;
location k;
printf("Enter 1st point(A)\n");
scanf("%lf %lf",&h.a,&i.b);
printf("Enter 2nd point(B)\n");
scanf("%1f %1f",&j.c,&k.d);
double data;
data = dist(h,i,j,k);
printf("%.2lf",data);
}
【问题讨论】:
-
141.42 是这些点之间的正确欧几里得距离。你预计距离是多少?
-
当您使用
%1f格式时,最多会读入一位数字。您似乎打错了小写的L,而是使用了数字1。 -
真正的问题是为什么这里有 4 个位置(或者为什么位置有 4 个东西)
-
你预计会发生什么?
-
欢迎来到 StackOverflow。请收下tour,学习stackoverflow.com/help/how-to-ask。如果您在调试代码方面寻求帮助,请查看 ericlippert.com/2014/03/05/how-to-debug-small-programs。
标签: c