用结构体求两个圆的关系

定义一个圆的结构体,给两个圆的圆心和半径分别赋值,判断两个圆的关系(相交、相切、相离、重合)。
#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辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 最近看了看一些数据,又和永杰兄聊了聊一些问题。 教育输送人才最理想的时间段是从1980到2010年。在...
    晚秋室主人阅读 255评论 0 0
  • 今天的风儿甚是喧嚣~
    szhdnc阅读 187评论 0 0
  • 2017/03/08霾 我感觉到外面是在下雨。黑夜 要吞噬空想漏洞 所有臆造出来的画面 很松散。无非都是 在跟不愿...
    弓谷所長阅读 438评论 3 4

友情链接更多精彩内容