题目

定义表示二维平面坐标点的结构体 Point,从标准输入读入两点的坐标 (x1, y1) 和 (x2, y2),计算并输出两点之间的欧几里得几何距离(保留两位小数)。

输入格式:一行输入 4 个浮点数 x1 y1 x2 y2,以空格分隔。

输出格式:输出保留两位小数的浮点数,表示两点间的距离,末尾换行。

数据范围与约定:坐标均为 double 精度浮点数。

思路与算法

1. 结构体封装数据
使用 struct Point { double x; double y; }; 将相关的坐标数据打包为一个复合实体,提高代码的可读性与规范性。

2. 平面欧几里得距离
计算两点距离公式:d = √((x1 - x2)² + (y1 - y2)²)。利用 hypot(dx, dy) 或 sqrt(dx*dx + dy*dy),引入数学头文件 <math.h>。

完整程序

#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;
    }

    // 平面欧氏距离公式:sqrt((x1-x2)^2 + (y1-y2)^2)
    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