求塔高的C语言编程

来源:百度知道 编辑:UC知道 时间:2024/07/06 23:32:35
题目:有4个圆塔,圆心分别为(2,2)、(-2,2)、(2,-2)、(-2,-2),圆半径为1。这4个塔的高度分别为10m。塔以外无建筑物。今输入任一点的坐标,求该点的建筑高度(塔外的高度为零)。

偶的做法:
#include<stdio.h>
void main()
{
float x,y; /*圆心坐标*/
int i,j,p,h;
printf("请输入坐标(i,j):");
scanf("%f,%f",&i,&j);
if(i>0&&j>0) p=1;x=2;y=2; /*求输入坐标所在区域(第一区间)*/
if(i<0&&j>0) p=2;x=-2;y=2; /*求输入坐标所在区域(第二区间)*/
if(i<0&&j<0) p=3;x=-2;y=-2; /*求输入坐标所在区域(第三区间)*/
if(i>0&&j<0) p=4;x=2;y=-2; /*求输入坐标所在区域(第四区间)*/
switch(p)
{
case 1:h=((i-x)*(i-x)+(j-y)*(j-y)<=1)?10:0;break; /*求到圆心的距离*/
case 2:h=((i-x)*(i-x)+(j-y)*(j-y)<=1)?10:0;break;
case 3:h=((i-x)*(i-x)+(j-y)*(j-y)<=1)?10:0;break;
case 4:h=((i-x)*(i-x)+(j-y)*(j-y)<=1)?10:0;break;
}
printf("该点高度为:%d\n",h);

}

帮我看一下哪错了?
不行啊,那么请编一给我看看吧,书上的答案还是错的。

你设定h为整型了啊,
h=((i-x)*(i-x)+(j-y)*(j-y)<=1)
那么上式的右边的实型常量会转换为整型。。。。。
你应该知道会怎么转换吧,直接取实型常量的整数部分。
所以大多数的h为0了。。。。
所以错了。

#include<stdio.h>
void main()
{
int x,y,h,p;
float i,j;
printf("请输入坐标(i,j):");
scanf("%f,%f",&i,&j);
if(i>0&&j>0) p=1;x=2;y=2; /*求输入坐标所在区域(第一区间)*/
if(i<0&&j>0) p=2;x=-2;y=2; /*求输入坐标所在区域(第二区间)*/
if(i<0&&j<0) p=3;x=-2;y=-2; /*求输入坐标所在区域(第三区间)*/
if(i>0&&j<0) p=4;x=2;y=-2; /*求输入坐标所在区域(第四区间)*/
switch(p)
{
case 1:h=((i-x)*(i-x)+(j-y)*(j-y)<=1)?10:0;break; /*求到圆心的距离*/
case 2:h=((i-x)*(i-x)+(j-y)*(j-y)<=1)?10:0;break;
case 3:h=((i-x)*(i-x)+(j-y)*(j-y)<=1)?10:0;break;
case 4:h=((i-x)*(i-x)+(j-y)*(j-y)<=1)?10:0;break;
}
printf("该点高度为:%d\n",h);

}