C语言:判断三角形是否为直角三角形

#include<iostream>
int main()
{
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
if(a > b+c)printf("not a triangle\n");
else if(b > a+c)printf("not a triangle\n");
else if(c > b+c)printf("not a triangle\n");
else if(c^2 == a^2 + b^2)printf("yes\n");
else if(b^2 == a^2 + c^2)printf("yes\n");
else if(a^2 == c^2 + b^2)printf("yes\n");
else
printf("no\n");
system("pause");
return 0;
}
为何输出结果都是YES?
请问怎么回事.
谢谢.

首先是输入3个数,即三角形三条边,要有等于才行
前面3个条件满足,才能构成三角形;否则不是三角形
然后判断,是否有满足直角形的条件;只要有两个边得平方等于另一个边得平方;即使直角三角
形;输出yes
你把最后两个语句去掉看看,还有 else if(c > b+c)printf("not a triangle\n");
你打错了追问

那里打错了.
难怪老输不出没有这样三角形.
还有
请问最后哪两句去掉?

追答

是c>b+a;让后照他们上边两位说的做,有问题再问啊

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-07
首先你判断时应该是 a>=b+c,后面也要加等号,然后就是逻辑问题,就算不是三角形,数值上刚好满足你后3个判断中的一个,也会有yes,所以改改吧
第2个回答  2011-08-07
两个问题
>改成>=
a^2改成a*a,类推。你试试就知道,a^2不是a的平方。
相似回答