请你用switch语句实现编程:有4个圆塔。圆心分别为(2,2),(-2,2),(-2,-2),(2,-2),圆半径为1,这4个塔的高度为10, 塔以外无建筑物,今输入任意一点的坐标,求该点的建筑高度(塔外高度为0)
时间: 2023-05-26 10:05:06 浏览: 89
不同编程语言的switch语句
以下是使用switch语句实现的代码:
```c
#include <stdio.h>
#include <math.h>
int main()
{
double x, y;
double r = 1; // 圆塔的半径
double h = 10; // 圆塔的高度
printf("请输入点的坐标(x,y):\n");
scanf("%lf,%lf", &x, &y);
double d1 = sqrt(pow(x-2,2) + pow(y-2,2)); // 到第一个圆塔的距离
double d2 = sqrt(pow(x+2,2) + pow(y-2,2)); // 到第二个圆塔的距离
double d3 = sqrt(pow(x+2,2) + pow(y+2,2)); // 到第三个圆塔的距离
double d4 = sqrt(pow(x-2,2) + pow(y+2,2)); // 到第四个圆塔的距离
double max_d = fmax(fmax(fmax(d1,d2),d3),d4); // 找出最大的距离
double height = 0; // 该点的高度
switch(max_d)
{
case d1:
if(d1 <= r) height = h;
break;
case d2:
if(d2 <= r) height = h;
break;
case d3:
if(d3 <= r) height = h;
break;
case d4:
if(d4 <= r) height = h;
break;
default:
height = 0; // 若最大距离超过圆塔范围,则高度为0
break;
}
printf("该点的高度为%.2lf", height);
return 0;
}
```
该程序先获取用户输入的点的坐标,然后计算该点到四个圆塔的距离。通过比较这四个距离,找出最大的距离,并使用switch语句来判断该点是否在任何一个圆塔的范围内。如果是,则该点的高度为10,否则为0。注意,由于double类型存在精度问题,判断两个double类型变量是否相等不能直接使用==,而应该使用一个容差值来判断。在本程序中,若到某个圆塔的距离小于等于半径1,则认为该点在该圆塔范围内。
阅读全文