本身逻辑没错,你输入1 2 3,就可以得到不是三角形
至于等腰直角三角形的情况?
#include
#include
main()
{
float a, b, c;
printf("Input the three edge length:");
scanf("%f, %f, %f", &a, &b , &c);
if (a+b>c && b+c>a && a+c>b) /*三角形的基本条件*/
{
if (a==b || b==c || c==a)
{
if(a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a)
printf("等腰直角三角形");
else
printf("等腰三角形");
}
else if (a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a)
printf("直角三角形");
else
printf("一般三角形");
}
else
{
printf("不是三角形\n");
}
}
无论如何都不是三角形?
也可能是你输入的问题,你是怎么输入的?
3,4,5,像这样?
#include
#include
int main()
{
float a, b, c;
int flag=0;
printf("Input the three edge length:");
scanf("%f, %f, %f", &a, &b , &c);
if (a+b>c && b+c>a && a+c>b) /*三角形的基本条件*/
{
if (a==b || b==c || c==a)
{
flag=1;
printf("等腰三角形");
}
if (a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a)
{
flag=1;
printf("直角三角形");
}
if(flag==0)
printf("一般三角形");
}
else
{
printf("不是三角形\n");
}
return 0;
}
注意直角三角形也可能是等腰三角形,比如等腰直角三角形,所以判断不能用else if,而直接用if判断。另外判断是一般三角形,也不能用else if,因为如果用了else if 就是说在非直角三角形中判断,假如是等腰三角形,但不是直角三角形,就会输出一般三角形,是不符合逻辑的
a,b,c是float型,c语言中float型判断相等不能直接用==,用fabs(a-b)<0.00001判断相等】
另外,建议输入不要“,”scanf("%f%f%f", &a, &b , &c);以防输入时忘记导致输入错误