定义一个圆的结构体,给两个圆的圆心和半径分别赋值,判断两个圆的关系(相交、相切、相离、重合)。
#import <Foundation/Foundation.h>
typedef struct
{
int x;
int y;
float r;
} Circle;
void compareCircle(Circle a,Circle b)
{
float rr = 0;
if (a.x>=b.x)//比较点坐标大小,用大数减掉小数;
{
int xab = a.x - b.x;
if (a.y>=b.y)
{
int yab = a.y - b.y;
rr = fabs(sqrt(xab * xab + yab * yab));
}else
{
int yab = b.y - a.y;
rr = fabs(sqrt(xab * xab + yab * yab));
}
}else
{
int xab = b.x - a.x;
if (a.y>=b.y)
{
int yab = a.y - b.y;
rr = fabs(sqrt(xab * xab + yab * yab));
}
else
{
int yab = b.y - a.y;
rr = fabs(sqrt(xab * xab + yab * yab));
}
}
if (a.x == b.x && a.y == b.y)
{
printf("两个圆重合\n");
}else if (rr > a.r + b.r)
{
printf("两个圆相离\n");
}else if ((rr ==a.r-b.r)||(rr==b.r-a.r)||(rr=a.r+b.r))
{
printf("两个圆相切\n");
}else
{
printf("两个圆相交\n");
}
}
int main()
{
Circle c1,c2;
printf("输入要比较的圆1的坐标及半径:\n");
scanf("%d%d%f",&c1.x,&c1.y,&c1.r);
printf("输入要比较的圆2的坐标及半径:\n");
scanf("%d%d%f",&c2.x,&c2.y,&c2.r);
compareCircle(c1, c2);
return 0;
}
用结构体求两个圆的关系
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。