【C语言】判断是否构成三角形,并指出为何种类型

 编程输入三角形的三条边a,b,c,判断它们能否构成三角形,若能构成三角形,指出是何种三角形:等边、等腰、直角、一般或者不是三角形

#include
#include
#define EPS 1e-6//将1e-6的值赋给EPS 
int main()
{
	float a,b,c;
	int flag=1;//设为标志变量,如为特殊三角形就置为0,一般三角形就为1 
	printf("please input a,b,c:");
	scanf("%f,%f,%f",&a,&b,&c);
	if(a+b>c&&b+c>a&&a+c>b)
	{
		if(fabs(a-b)<=EPS&&fabs(b-c)<=EPS&&fabs(a-c)<=EPS)
		{
			printf("等边"); 
			flag=0; 
		}
		else if(fabs(a-b)<=EPS||fabs(a-c)<=EPS||fabs(b-c)<=EPS)
		{
			printf("等腰");
			flag=0; 
		}
		if(fabs(a*a+b*b-c*c)<=EPS||fabs(a*a+c*c-b*b)<=EPS||fabs(b*b+c*c-a*a)<=EPS)
		{
			printf("直角");
			flag=0; 
		}
		if(flag)//不能加上'=1',否则会将其条件变为真,每次都输出 
		{
			printf("一般");
		}
		printf("三角形\n");
	}
	else
	{
		printf("不是三角形\n");
	}
	return 0;
}

提示:因为实数运算的结果是有精度限制的,所以a等于b不能写成'a==b',要写成fabs(a-b)<=1e-6,fabs为数学函数中绝对值的意思,1e-6的意思是1乘以10的-6次方,此时的数非常小,与0差不多了,下面同样:不能写成a*a+b*b==c*c,正确写法:fabs(a*a+b*b-c*c)<=1e-6

你可能感兴趣的:(C语言,算法,c语言,青少年编程,学习方法)