题目

结构体描述点坐标,求两点距离

思路

本题用结构体表示平面上的点,读入两点坐标,输出它们之间的距离。

定义 struct Point { double x,y; },读两个点,算 dx=x1-x2dy=y1-y2,距离为 sqrt(dx*dx+dy*dy)

解题分析

两点距离用 hypot(dx,dy)sqrt(dx*dx+dy*dy)。结构体把 x、y 绑在一起,传参传 struct 或指针均可。

函数简要说明

平面两点距离,即 sqrt(dx*dx + dy*dy),常用:

  • sqrt(x):平方根(math.h)。本题 sqrt(dx*dx + dy*dy) 即可。
  • hypot(dx, dy)(C99):等价于 sqrt(dx*dx+dy*dy),数值上更稳,少一次溢出风险。
  • pow(x, y) 也能算平方根但不直观;距离题优先 hypotsqrt

完整程序

#include <stdio.h>
#include <math.h>

struct Point {
    double x, y;
};

int main(void)
{
    struct Point a, b;
    if (scanf("%lf %lf %lf %lf", &a.x, &a.y, &b.x, &b.y) != 4) {
        return 1;
    }
    double dx = a.x - b.x, dy = a.y - b.y;
    printf("%.2f\n", sqrt(dx * dx + dy * dy));
    return 0;
}

运行示例

输入:

0 0 3 4

输出:

5.00