有4个圆塔,圆心分别为(2,2)、(-2,2)、(-2,-2)、(2,-2),圆半径为1,见图。这4个塔的高度为10m,塔以外无建筑物。今输入任一点的坐标,求该点的建筑高度(塔外的高度为零)。
#include <stdio.h>
int main() { double x, y; // 输入点的坐标 printf("请输入坐标(x y): "); scanf("%lf %lf", &x, &y); // 判断点是否在任一圆塔内 int in_circle1 = (x-2)*(x-2) + (y-2)*(y-2) <= 1; int in_circle2 = (x+2)*(x+2) + (y-2)*(y-2) <= 1; int in_circle3 = (x+2)*(x+2) + (y+2)*(y+2) <= 1; int in_circle4 = (x-2)*(x-2) + (y+2)*(y+2) <= 1; // 输出结果 if (in_circle1 || in_circle2 || in_circle3 || in_circle4) { printf("该点的建筑高度为10米\n"); } else { printf("该点的建筑高度为0米\n"); } return 0; }
#include <math.h>
#include <stdlib.h>
int main(){
int x,y;
scanf("横坐标x=%d,纵坐标y=%d",&x,&y);
x=abs(x);
y=abs(y);
if(((x-2)*(x-2)+(y-2)*(y-2))==1) printf("高度为10m");
else printf("高度为0m");
return 0;
}
#include <bits/stdc++.h> using namespace std; int main(){ float x,y; cin >> x >> y; float d1,d2,d3,d4; d1 = (x-2)*(x-2)+(y-2)*(y-2); d2 = (x+2)*(x+2)+(y-2)*(y-2); d3 = (x+2)*(x+2)+(y+2)*(y+2); d4 = (x-2)*(x-2)+(y+2)*(y+2); if(d1<=1||d2<=1||d3<=1||d4<=1){ cout << "10"; } else{ cout << "0"; } }
1
float get_distance_squared(float x, float y, float d_x, float d_y) { return (x - d_x) * (x - d_x) + (y - d_y) * (y - d_y); } float get_high(float x, float y) { float r_2 = 1.0; int tower[4][2] = { {2,2},{-2,2}, {-2,-2},{2, -2} }; for (int i = 0; i < 4; i++) { float dist = get_distance_squared(x, y, tower[i][0], tower[i][1]); if (dist <= r_2)return 10.0; } return 0; } int main() { // 有4个圆塔,圆心分别为(2,2)、(-2,2)、(-2,-2)、(2,-2),圆半径为1,见图。 // 这4个塔的高度为10m,塔以外无建筑物。 // 今输入任一点的坐标,求该点的建筑高度(塔外的高度为零)。 printf("high = %f\n", get_high(1, 1)); }
#include <stdio.h> int main () { float x,y; scanf("%f %f",&x,&y); if((x-2)*(x-2)+(y-2)*(y-2)<=1||(x-2)*(x-2)+(y+2)*(y+2)<=1||(x+2)*(x+2)+(y-2)*(y-2)<=1||(x+2)*(x+2)+(y+2)*(y+2)<=1) printf("10"); else printf("0"); return 0; }
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) { printf("该点高度为0"); } else { printf("该点高度为%d\n", h); } return 0; }
#include <stdio.h> int main() { float a,b; scanf("%f%f",&a,&b); if(a<0) a=-a; if(b<0) b=-b; if((((a-2)*(a-2)+(b-2)*(b-2))==1)) printf("high:10m\n"); else printf("high:0m");
解题思路: 塔的半径为1m,则x坐...
登录后提交答案