题目
结构体描述点坐标,求两点距离
思路
本题用结构体表示平面上的点,读入两点坐标,输出它们之间的距离。
定义 struct Point { double x,y; },读两个点,算 dx=x1-x2、dy=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)也能算平方根但不直观;距离题优先hypot或sqrt。
完整程序
#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