程序如下
#include <stdio.h>
#include <math.h>
void main()
{
float r1,r2,x1,y1,x2,y2,i,d1,d2,d3;
for(i=1;i==1;)
{
printf("请输入第一个圆的半径");
scanf("%f",&r1);
printf("请输入第一个圆圆心的横纵坐标,以逗号分隔");
scanf("%f,%f",&x1,&y1);
printf("请输入第二个圆的半径");
scanf("%f",&r2);
printf("请输入第二个圆圆心的横纵坐标,以逗号分隔");
scanf("%f,%f",&x2,&y2);
d1=sqrt(pow((x1-x2),2)+pow((y1-y2),2));
d2=r1+r2;
d3=fabs(r1-r2);
if(r1==r2&&x1==x2&&y1==y2)
printf("这两个圆重合");
else if(d1>d2)
printf("这两个圆相离");
else if(d1==d2)
printf("这两个圆外切");
else if(d1<d2)
{if(d1>d3)
printf("这两个圆相交");
if(d1==d3)
printf("这两个圆内切");
if(d1<d3)
printf("这两个圆内含");
}
printf("\n若您需要继续计算其他圆位置关系,请按1;退出计算请按0;");
scanf("%f",&i);
}
}
第1个回答 2013-10-18
你的sqrt函数里面的参数默认是double类型的,返回值也是doublel类型;所以在调用fabs函数时候会提示从double到float转换会有肯能丢失数据
第2个回答 2013-10-18
pow((x1-x2),2)算出来为双精度doule类型 但后面你将doule变成float单精度类型