永发信息网

c语言问题(有4个圆塔,圆心分别为(2,2),(-2,2),(-2,-2),(2,-2),圆半径为1,这4个塔的高度为10m

答案:4  悬赏:70  手机版
解决时间 2021-02-01 01:21
  • 提问者网友:轻浮
  • 2021-01-31 08:49
有4个圆塔,圆心分别为(2,2),(-2,2),(-2,-2),(2,-2),圆半径为1,这4个塔的高度为10m,塔外无建筑物,今输入任何一点的坐标,求该点的建筑高度,(塔外的高度为0)。
#include "stdio.h"
#include "math.h"

void main()

{
int h;
float x,y,j;
printf("请输入坐标:\n");
scanf("%f,%f",&x,&y);
if(x>=3||x<=-3||y>=3||y<=-3||(-1<=y&&y=<1)||(-1<=x&&x=<1)) {
printf("高度为0\n");
}
else {
x=fabs(x);y=fabs(y);
j=sqrt((x-2)*(x-2)+(y-2)*(y-2));
h=10-j*10;
printf("高度为%d\n",h);
}
}
各位网友,麻烦看一下我哪里编错了,(注意;塔需要看成圆锥哦)急急急啊……万分感谢
最佳答案
  • 五星知识达人网友:低音帝王
  • 2021-01-31 09:11
你试试这个程序,用的是数学上的一个结论。如果一个点不在圆内,那么这个点的值大于半径的平方。

#include<stdio.h>
void 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;
printf("input a point(x,y):\n");
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("the high of this point is:%d\n",h);
}
全部回答
  • 1楼网友:西岸风
  • 2021-01-31 10:42
//已修改完毕,你刚学吧,这个好简单的,你竟然也可以搞错,要细心哟!加油,不懂可以继续追问。 int main() { float h;//这里高度不一定是整数的,要用浮点数 float x,y,j; printf("请输入坐标:\n"); scanf("%f,%f",&x,&y); if(x>=3||x<=-3||y>=3||y<=-3||(y>=-1&&y<=1)||(x>=-1&&x<=1))//这里大小符号你也敢写错? printf("高度为0\n"); else { x=fabs(x);y=fabs(y); j=sqrt((x-2)*(x-2)+(y-2)*(y-2)); h=10-j*5;//数学知识有待加强啊,比例关系都敢找错,还这么简单的。。。。 printf("高度为%.2f\n",h); //这里要对应改变 } system("pause"); return 0; }
  • 2楼网友:等灯
  • 2021-01-31 10:34
#include <stdio.h> int main() { float x,y; int h; 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)h=10; else h=0; printf("高度为:%d\n",h); return 0; }
  • 3楼网友:一把行者刀
  • 2021-01-31 10:19
22222
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯