定义一个圆的结构体,给两个圆的圆心和半径分别赋值,判断两个圆的关系(相交、相切、相离、重合)。
#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;
}
用结构体求两个圆的关系
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...