C語言求空間兩點之間的距離

2020-07-16 10:04:33
定義一個表示三維空間點坐標的結構型別,通過函數求空間上任意兩點之間的距離。

演算法思想

空間內任意點的坐標有三個,分別為 x 軸方向、y 軸方向、z 軸方向,設定結構體 point,包括三個成員 x、y、z,都為雙精度型別。

定義一個函數 dist 用於計算空間上兩點的距離,函數返回值也為 double 型別,函數的引數為結構體 point 的兩個變數。

程式程式碼

#include <stdio.h>
#include <math.h>
struct point
{
    float x;
    float y;
    float z;
};

float dist(struct point p1,struct point p2)
{
    float x,y,z;
    float d;
    x=fabs(p1.x-p2.x);
    y=fabs(p1.y-p2.y);
    z=fabs(p1.z-p2.z);
    d=sqrt(x*x+y*y+z*z);
    return d;
}

int main()
{
    struct point p1,p2;
    printf("Enter point1:");
    scanf("%f,%f,%f",&p1.x,&p1.y,&p1.z);
    printf("Enter point2:");
    scanf("%f,%f,%f",&p2.x,&p2.y,&p2.z);
    printf("distance: %fn",dist(p1,p2));
    return 0;
}

偵錯執行結果

空間上兩點的坐標分別為 (1.26,3.54,4.6),(3.21,3.54,7.2),通過程式執行得到該兩點之間的距離為 3.25,執行結果如下所示:

Enter point1:1.26,3.54,4.6
Enter point2:3.21,3.54,7.2
distance: 3.250000