题目
定义表示二维平面坐标点的结构体 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