3276 - 习题4-12 求建筑物高度
有4个圆塔,圆心分别为(2, 2)、(-2, 2)、(-2, -2)、(2, -2),圆半径为1,如下图所示。这4个塔的高度为10米(m),塔以外无建筑物。

现输入任一点的坐标,求该点的建筑物高度(塔外的高度为零)。
题目输入
输入以圆括号括起来的两个数字,两个数字之间以逗号(,)分隔,格式如:(x,y)
如下为正确输入:
(1.5,1.9)
浮点型变量,请定义为float类型。
题目输出
该建筑物的高度,末尾换行。
输入/输出样例
题目输入
(1.8,1.9)
题目输出
10
提示
根据输入的点的坐标,判断该点在圆内,还是在圆外。在圆内的话,建筑物的高度就是10;否则,建筑物的高度就是0.
C语言解答
#include <stdio.h> int main() { int h=10; float x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=-2,y4=-2,x,y,d1,d2,d3,d4; scanf("%f,%f",&x,&y); d1=(x-x1)*(x-x1)+(y-y1)*(y-y1); d2=(x-x2)*(x-x2)+(y+y2)*(y+y2); d3=(x+x3)*(x+x3)+(y-y3)*(y-y3); d4=(x+x4)*(x-x4)*(y+y4)*(y+y4); if(d1>1&&d2>1&&d3>1&&d4>1) h=10; printf("%d\n",h); }
C++解答
#include<cstdio> int main() { float x,y; int h=10; scanf("(%f,%f)",&x,&y); float d1=(x-2)*(x-2)+(y-2)*(y-2); float d2=(x+2)*(x+2)+(y-2)*(y-2); float d3=(x+2)*(x+2)+(y+2)*(y+2); float d4=(x-2)*(x-2)+(y+2)*(y+2); if (d1>1 && d2>1 && d3>1 && d4>1) h=0; printf("%d\n",h); return 0; }
提示
根据输入的点的坐标,判断该点在圆内,还是在圆外。在圆内的话,建筑物的高度就是10;否则,建筑物的高度就是0.