求建筑物高度(圆塔)

博客围绕C语言编程展开,给出4个圆心分别为(2, 2)、(-2, 2)、(-2, -2)、(2, -2),半径为1,高度为10米的圆塔,输入任一点坐标求该点建筑物高度。提供两种方法,一种使用乘方函数,另一种用数学方法优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*有4个圆塔,圆心分别为(2, 2)、(-2, 2)、(-2, -2)、(2, -2),圆半径为1,如下图所示。这4个塔的高度为10米(m),塔以外无建筑物。现输入任一点的坐标,求该点的建筑物高度(塔外的高度为零)。

输入以圆括号括起来的两个数字,两个数字之间以逗号(,)分隔,格式如:(x,y)

   浮点型变量,请定义为float类型。

Sample Input  (1.8,1.9)        Sample Output 10*/

法一:

#include <stdio.h>
#include <math.h>//用数学函数需要先调用库函数中的math.h的头文件
int main()
{
    int x, y, h;
    double p1, p2, p3, p4;
    //输入坐标
    printf("Please enter coordinate: ");
    scanf("%d %d", &x, &y);
    //4个圆塔的坐标方程
    p1 = pow(x-2, 2) + pow(y-2, 2);
    p2 = pow(x-2, 2) + pow(y+2, 2);
    p3 = pow(x+2, 2) + pow(y-2, 2);
    p4 = pow(x+2, 2) + pow(y+2, 2);
    //判断坐标是否在圆塔内并输出结果
    if(p1<=1 || p2<=1 || p3<=1 || p4<=1)  h = 10;
    else h = 0;
    printf("The building height on this point is %d\n", h);
    return 0;
}//使用了乘方函数pow

法二:用数学方法进行了优化
#include <stdio.h>
int main()
{
    double x,y;
    scanf("%lf %lf",&x,&y);       //其实既然是四个相同的圆塔,所以在相应的对应位置,结果是
    if(x<0) x=-x;                       //一样的, 既然如此,为何不先转化到第一象限后再来计算
    if(y<0) y=-y;
    if((x-2)*(x-2)+(y-2)*(y-2)<=1)    // 用数学的方法即可。 圆上=1,圆内<1,圆外>1
     printf("10\n");
    else  printf("0\n");
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值