#include <math.h>
#include <stdio.h>
double dist(double x1, double y1, double x2, double y2){
return sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
}
int main(void){
double x1, y1;
double x2, y2;
puts("求两点间的距离。 \n");
puts("点A: ");
printf("X坐标:");
scanf("%lf", &x1);
printf("Y坐标:");
scanf("%lf", &y1);
printf("A (%lf, %lf)\n", x1, y1);
puts("点B: ");
printf("X坐标:");
scanf("%lf", &x2);
printf("Y坐标:");
scanf("%lf", &y2);
printf("B(%lf, %lf)\n", x2, y2);
printf("两点之间的距离d = %f\n", dist(x1, y1, x2, y2));
return 0;
}
运行结果:
注:
double sqrt(double x)函数:
计算x的平方根(实参为复数时会发生定义域错误)。
使用结构体计算两点的距离
#include <math.h>
#include <stdio.h>
#define sqr(n) ((n) * (n))
typedef struct{
double x;
double y;
} Point;
double distance_of(Point pa, Point pb){
return sqrt(sqr(pa.x - pb.x) + sqr(pa.y - pb.y));
}
int main(void){
Point crnt, dest;
printf("当前地点的X坐标:");
scanf("%lf", &crnt.x);
printf("当前地点的Y坐标:");
scanf("%lf", &crnt.y);
printf("目的地点的Y坐标:");
scanf("%lf", &dest.x);
printf("目的地点的Y坐标:");
scanf("%lf", &dest.y);
printf("到目的地的距离为 %.2f。\n", distance_of(crnt, dest));
return 0;
}