题目描述
给你两个圆的圆心坐标和半径,请判断一下两个圆是下列哪种情况:
- 包含:一个圆在另外一个圆内,两圆无交点
- 内切:一个圆在另外一个圆内,一个交点
- 相交:两个圆交于两点
- 外切:两个圆交于1点,且圆没有嵌套
- 相离:圆没有嵌套且没有交点
输入
第一行是一个整数T(1≤T≤1000),表示样例的个数。
每个样例是两行,每行三个整数,x,y,r(1≤x,y,r≤1000),分别表示一个圆的圆心坐标和半径
输出
依次每行输出一个样例的结果,如果包含输出1,内切输出2,相交输出3,,外切输出4,想离输出5。
样例输入
5 0 0 2 0 0 1 0 0 2 1 0 1 0 0 2 1 0 2 0 0 2 3 0 1 0 0 2 4 0 1
样例输出
1 2 3 4 5
计算2圆心间距离与半径和及差比较判断
#include<stdio.h>
#include<math.h>
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int x1,x2,y1,y2,r1,r2;;
scanf("%d %d %d",&x1,&y1,&r1);
scanf("%d %d %d",&x2,&y2,&r2);
double d = sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
//printf("%f\n",d);
if(d==r1+r2)//外切
printf("4\n");
else if(d<r1+r2&&d>fabs(r1-r2))//相交
printf("3\n");
else if(d==fabs(r1-r2))//内切
printf("2\n");
else if(d>r1+r2)//相离
printf("5\n");
else
printf("1\n");
}
}