#include <stdio.h> main() { int a,b,c; printf("请输入三个边长:\n"); scanf("%d %d %d",&a,&b,&c); if

#include <stdio.h>
main()
{
int a,b,c;
printf("请输入三个边长:\n");
scanf("%d %d %d",&a,&b,&c);
if(a+b>c && a+c>b && b+c>a)
if(a*a==b*b+c*c || b*b==a*a+c*c || c*c==a*a+b*b)
printf("直角三角形。\n");
else if(a==b && a==c)
printf("等边三角形。\n");
else if(a==b||b==c||a==c)
printf("等腰三角形。\n");
else if(a+b<c && a+c<b && b+c<a)
printf("不能构成三角形。\n");

}

就是这个程序,输入三边来判断是何种三角形,等边、等腰、直角都可以判断出来,只有输入不构成三角形三边的时候,不会打出“不构成三角形”,也不知道是什么问题,急求答案啊!

我把你的程序改了一些,这样就可以了。

#include <stdio.h>
main()
{
int a,b,c;
printf("请输入三个边长:\n");
scanf("%d %d %d",&a,&b,&c);
if(a+b>c && a+c>b && b+c>a){
if(a*a==b*b+c*c || b*b==a*a+c*c || c*c==a*a+b*b)
{printf("直角三角形。\n");}
else if(a==b && a==c)
{printf("等边三角形。\n");}

else if(a==b||b==c||a==c)
{printf("等腰三角形。\n");}
}
else
{printf("不能构成三角形。\n");}

}

如果你是初学者的话,记得保持良好的编程习惯,让代码看起来非常清晰。不然等不到别人来找你程序的BUG,你自己就先乱了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-23
&& 应该替换为 ||
同时你应该知道if判断条件应该相反
#include <stdio.h>
int main(void)
{
int a,b,c;
printf("请输入三个边长:\n");
scanf("%d %d %d",&a,&b,&c);
if(a+b>c && a+c>b && b+c>a)
//if判断条件应该相反,下面的if和else if均为第一个if条件的子集
{
if(a*a==b*b+c*c || b*b==a*a+c*c || c*c==a*a+b*b)
printf("直角三角形。\n");
else if(a==b && a==c)
printf("等边三角形。\n");
else if(a==b||b==c||a==c)
printf("等腰三角形。\n");
}
else printf("不能构成三角形。\n");
}
第2个回答  2011-04-23
把else if(a+b<c && a+c<b && b+c<a)
改成else if(a+b<=c || a+c<=b || b+c<=a)本回答被网友采纳
第3个回答  2011-04-23
21
相似回答