flag为标志变量,flag=1表示一般三角形,flag=0表示特殊三角形
#include<stdio.h>
#include<math.h>
#define EPS 1e-7
int main(){
float a,b,c;
int flag=1;
printf("input a,b,c:");
scanf("%f,%f,%f",&a,&b,&c);
if(a+b>c&&a+c>b&&b+c>a)
{
if (fabs(a-b)<=EPS&&fabs(a-c)<=EPS&&fabs(b-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(c*c+b*b-a*a<=EPS)))
{
printf("直角");//因为实数运算有精度限制,判断三角形是否为直角不能用 if(a*a+b*b==c*c)
flag=0;
}
if (flag)
{
printf("一般");
}
printf("三角形\n");
}
else
{
printf("不是三角形\n");
}
return 0;
}