c语言描述坐标点结构体Point,有成员x, y。现平面上两个点分别为(x1, y1) (x2, y2) ,请利用结构体计算输出曼哈顿距离和直线距离:
时间: 2024-02-12 10:04:32 浏览: 57
好的,下面是代码实现:
```c
#include <stdio.h>
#include <math.h>
// 坐标点结构体
typedef struct {
int x;
int y;
} Point;
// 计算曼哈顿距离
int manhattan_distance(Point p1, Point p2) {
int distance = abs(p1.x - p2.x) + abs(p1.y - p2.y);
return distance;
}
// 计算直线距离
double line_distance(Point p1, Point p2) {
double distance = sqrt(pow(p1.x - p2.x, 2) + pow(p1.y - p2.y, 2));
return distance;
}
int main() {
Point p1 = {1, 2};
Point p2 = {3, 4};
int manhattan = manhattan_distance(p1, p2);
double line = line_distance(p1, p2);
printf("曼哈顿距离为:%d\n", manhattan);
printf("直线距离为:%lf\n", line);
return 0;
}
```
输出结果为:
```
曼哈顿距离为:4
直线距离为:2.828427
```
相关问题
用c语言写一个程序:描述坐标点结构体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
#include <stdio.h>
#include <math.h>
struct Point {
int x;
int y;
};
int MHTDistance(struct Point pt1, struct Point pt2) {
int dx = abs(pt1.x - pt2.x);
int dy = abs(pt1.y - pt2.y);
return dx + dy;
}
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 = {1, 2};
struct Point pt2 = {4, 6};
printf("Manhattan distance: %d\n", MHTDistance(pt1, pt2));
printf("True distance: %f\n", TrueDistance(pt1, pt2));
return 0;
}
```
程序中定义了一个结构体 `Point`,包含了 `x` 和 `y` 两个成员变量,表示一个点的坐标。然后定义了两个函数 `MHTDistance` 和 `TrueDistance`,分别用来计算曼哈顿距离和直线距离。在 `main` 函数中,定义了两个点 `pt1` 和 `pt2`,并输出它们的曼哈顿距离和直线距离。
请结合需求设计一个结构体描述坐标点Point,有成员x, y,表示其坐标。现平面上两个点分别为(x1, y1) (x2, y2) ,其中 x1, y1, x2, y2设为整数。请设计函数计算: 1、曼哈顿距离 MHTDistance的定义为: |x1 - x2 | + | y1 -y2| 2、两点之间的直线距离float TrueDistance(struct Point pt1,struct Point pt2 ) 【输入形式】输入两个点坐标: 【输出形式】 【样例输入】 1,2 8,11 【样例输出】 MHTDistance=16.00 TrueDistanc=11.40C语言完整代码
好的,以下是完整的 C 语言代码:
```c++
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
struct Point {
int x;
int y;
};
int MHTDistance(Point pt1, Point pt2) {
return abs(pt1.x - pt2.x) + abs(pt1.y - pt2.y);
}
float TrueDistance(Point pt1, Point pt2) {
float dx = pt1.x - pt2.x;
float dy = pt1.y - pt2.y;
return sqrt(dx * dx + dy * dy);
}
int main() {
Point pt1, pt2;
char input[20];
printf("请输入两个点坐标,中间用逗号隔开:");
scanf("%s", input);
sscanf(input, "%d,%d", &pt1.x, &pt1.y);
scanf("%s", input);
sscanf(input, "%d,%d", &pt2.x, &pt2.y);
int distance1 = MHTDistance(pt1, pt2);
float distance2 = TrueDistance(pt1, pt2);
printf("MHTDistance=%.2d TrueDistance=%.2f\n", distance1, distance2);
return 0;
}
```
您可以将其复制到 C 语言环境中运行,输入两个点的坐标,即可得到曼哈顿距离和两点之间的直线距离。
阅读全文