1152 - C语言5.14
有4个圆塔,圆心分别为(2,2),(-2,2),(2,-2),(-2,-2),圆半径为1。这4个塔的高度分别为10m,塔以外无建筑物。现在输入任一点的坐标,求该点的建筑高度(塔外的高度为0)。
Input
两个用空格分隔的实数,表示输入的点坐标。
Output
输入坐标位置的建筑高度,保留2位小数。
请注意行尾输出换行。
Examples
Input
2.1 2.3
Output
10.00
Solution 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; float 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=0; printf("%.2f\n", h + .0); return 0; }
Solution 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; float 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=0; /*判断该点是否在塔外*/ printf("%.2f\n", h + .0); return 0; }