有4个圆塔。圆心分别为(2,2),(-2,2), (-2,-2),(2,-2),圆半径为1,这4个塔的高度为10,塔以外无建筑物,今输入任意一点的坐标,求该点的建筑高度(塔外高度为0) 用C语言编写
时间: 2024-12-19 16:21:39 浏览: 19
这个问题可以用C语言解决,我们可以创建一个函数,判断输入的点是否落在任何一个圆内,如果在圆内则返回对应圆塔的高度,否则返回0。下面是一个简单的示例:
```c
#include <stdio.h>
#include <math.h>
// 定义圆塔结构体
typedef struct {
double x, y;
int height;
} Tower;
// 计算两点间距离
double distance(Tower tower1, Tower tower2) {
return sqrt(pow(tower1.x - tower2.x, 2) + pow(tower2.y - tower2.y, 2));
}
// 判断点是否在给定圆内
int is_within_circle(double x, double y, Tower tower) {
return distance({x, y}, tower) <= tower.radius + 1; // 圆半径加1是为了考虑边界情况
}
// 求建筑高度
int building_height(double x, double y, Tower towers[4]) {
for (int i = 0; i < 4; i++) {
if (is_within_circle(x, y, towers[i])) {
return towers[i].height;
}
}
return 0; // 点在所有塔外,高度为0
}
int main() {
Tower towers[] = {
{2, 2, 10},
{-2, 2, 10},
{-2, -2, 10},
{2, -2, 10},
};
double input_x, input_y;
printf("请输入点的坐标 (x, y): ");
scanf("%lf %lf", &input_x, &input_y);
int height = building_height(input_x, input_y, towers);
if (height == 0) {
printf("该点的建筑高度为0.\n");
} else {
printf("该点的建筑高度为%d。\n", height);
}
return 0;
}
```
这个程序首先定义了圆塔结构体和相关的辅助函数,然后在`building_height`函数中遍历每个塔,检查输入点是否在其范围内,并返回相应的高度。
阅读全文