在C语言中有4个圆塔,圆心分别为(2, 2)、(-2, 2)、(一2, -2)、(2, -2),圆半径为1, 这4个塔的高度为10m, 塔以外无建筑物。今输入任一点的坐标,求该点的建筑高度(塔外的高度为零)。
时间: 2024-09-30 10:09:39 浏览: 153
在C语言中,要解决这个问题,我们可以创建一个函数,该函数接受一个点的坐标作为输入,然后检查这个点是否位于任意一个圆内。如果在圆内,其建筑高度就是塔的高度;如果不在圆内,则建筑高度为0。这里我们可以利用欧几里得距离公式来判断点到圆心的距离是否小于等于圆的半径。
下面是一个简单的实现思路,假设我们有一个名为`get_height`的函数,它接收一个二维数组`point`表示输入的点,以及四个圆塔的数据结构`towers`,包含每个塔的位置和半径:
```c
#include <stdio.h>
#include <math.h> // 包含sqrt函数
// 定义塔的数据结构
typedef struct {
int x, y; // 圆心坐标
float radius; // 半径
} Tower;
// 计算两点之间的距离
float distance(int x1, int y1, int x2, int y2) {
return sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
}
// 获取点的建筑高度
float get_height(int point_x, int point_y, Tower towers[4]) {
for (int i = 0; i < 4; i++) {
float dist = distance(point_x, point_y, towers[i].x, towers[i].y);
if (dist <= towers[i].radius) {
return 10; // 点在塔内,建筑高度为10米
}
}
return 0; // 点在塔外,建筑高度为0米
}
int main() {
Tower towers[] = { {2, 2}, {-2, 2}, {-2, -2}, {2, -2} };
int point_x, point_y;
printf("请输入点的坐标(x, y): ");
scanf("%d %d", &point_x, &point_y);
float height = get_height(point_x, point_y, towers);
printf("该点的建筑高度为: %.1f米\n", height);
return 0;
}
阅读全文