描述坐标点结构体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 )的描述略 【输入形式】输入两个点坐标: 【输出形式】两个距离 【样例输入】 1,2 8,11 【样例输出】 MHTDistance=16.00 TrueDistanc=11.40 【样例说明】保留两位小数点
时间: 2024-01-05 19:02:28 浏览: 113
通过坐标计算两点距离
以下是实现题目要求的代码:
```
#include <stdio.h>
#include <math.h>
struct Point {
int x;
int 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) {
int dx = pt1.x - pt2.x;
int dy = pt1.y - pt2.y;
return sqrt(dx * dx + dy * dy);
}
int main() {
struct Point pt1, pt2;
scanf("%d,%d %d,%d", &pt1.x, &pt1.y, &pt2.x, &pt2.y);
double mhtDistance = MHTDistance(pt1, pt2);
double trueDistance = TrueDistance(pt1, pt2);
printf("MHTDistance=%.2lf TrueDistance=%.2lf\n", mhtDistance, trueDistance);
return 0;
}
```
输入格式为"x1,y1 x2,y2",使用scanf函数读入两个点的坐标。接着分别调用MHTDistance和TrueDistance函数计算两个距离,最后输出结果即可。注意输出时保留两位小数点。
阅读全文