描述坐标点结构体Point,有成员x, y。现平面上两个点分别为(x1, y1) (x2, y2) ,请利用结构体计算输出曼哈顿距离和直线距离: 曼哈顿距离 :MHTDistance(struct Point pt1,struct Point pt2 )的描述为: |x1 - x2 | + | y1 -y2| 直线距离:TrueDistance(struct Point pt1,struct Point pt2 )的描述略 【输入形式】输入两个点坐标: 【输出形式】两个距离C语言
时间: 2024-02-12 19:04:22 浏览: 66
好的,这里是 C 语言代码实现:
```c
#include <stdio.h>
#include <math.h>
struct Point {
double x, y;
};
double MHTDistance(struct Point pt1, struct Point pt2) {
return fabs(pt1.x - pt2.x) + fabs(pt1.y - pt2.y);
}
double TrueDistance(struct Point pt1, struct Point pt2) {
return sqrt(pow(pt1.x - pt2.x, 2) + pow(pt1.y - pt2.y, 2));
}
int main() {
struct Point pt1, pt2;
scanf("%lf %lf %lf %lf", &pt1.x, &pt1.y, &pt2.x, &pt2.y);
double mht_distance = MHTDistance(pt1, pt2);
double true_distance = TrueDistance(pt1, pt2);
printf("曼哈顿距离:%.2lf\n", mht_distance);
printf("直线距离:%.2lf\n", true_distance);
return 0;
}
```
和 C++ 版本相似,我们定义了一个结构体 `Point`,表示平面上的一个点,包含了两个成员变量 `x` 和 `y`。`MHTDistance` 函数计算曼哈顿距离,直接使用了公式 `|x1 - x2 | + | y1 -y2|`,返回结果。`TrueDistance` 函数计算直线距离,使用了勾股定理的公式,返回结果。
在 `main` 函数中,我们通过输入获取了两个点的坐标,然后分别调用 `MHTDistance` 和 `TrueDistance` 函数计算曼哈顿距离和直线距离,并输出结果。
希望能够帮到你!
阅读全文