|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目如下:
有4个圆塔,圆心分别为(2,2),(-2,2),(-2,-2),(2,-2),圆半径为1,这4个塔的高度为10m,塔外无建筑物,今输入任何一点的坐标,求该点的建筑高度,(塔外的高度为0)。
我写出来是这样的:
#include<stdio.h>
int main()
{
int h=10;
float x,y,d1,d2,d3,d4,x1,y1,x2,y2,x3,y3,x4,y4;
x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=2,y4=-2;
printf("请输入任意坐标x,y: ");
scanf("%d,%d",&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;
else
h=10;
printf("此点建筑高度为%d\n",h);
}
而且不知道为什么,这个程序运行有些它能正常判断,有些就不能,比如我输入2,2的时候,他竟然显示高度为0,我不知道是不是我程序写错了,但大部分我输入进去的数据它都正常判断了。还有就是因为我没学过两点距离公式,在百度上搜出来是
|AB|=sqrt[x1-x2)^2+(y1-y2)^2],然后我看题里的横坐标和纵坐标有正有负,我就把运算符号给改了,我像这样才能保持原来的坐标符号,但标准答案里的好像没有改变运算符,求高手指点下迷津!谢谢
标准答案是这样的:
#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;
printf("请输入一个点(x,y): ");
scanf("%f,%f",&x,&y);
d1=(x-x4)*(x-x4)+(y-y4)*(y-y4);
d2=(x-x1)*(x-x1)+(y-y1)*(y-y1);
d3=(x-x2)*(x-x2)+(y-y2)*(y-y2);
d4=(x-x3)*(x-x3)+(y-y3)*(y-y3);
if (d1>1 && d2>1 && d3>1 && d4>1) h=0;
printf("该点高度为%d\n",h);
return 0;
}
|
|