a==b==c要用a==b&&b==c
从新写了一下
int main()
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a+b>c && a+c>b && b+c>a&&a>0&&b>0&&c>0)
{
//printf("这三边可构成三角形");放进{}
printf("这三边可构成三角形");
if(a==b&&b==c)
printf("这是个等边三角形");
else if (a==b||b==c||c==a)
printf("这三角形是等腰三角形");
else
printf("这三角形是不等边三角形");
}
else printf("这三边不能构成三角形");
return 0;
}
是if和else错了
把printf("这三边可构成三角形");
放到{}里
为什么要放到之前?
其实在if后只能接一个语句,如果接多语句要用{}
虽然你已经用了{};但是是在if后已经使用了一个“printf("这三边可构成三角形");”语句之后,所以{}中的内容相当于第二条语句,根据if后只能接一个语句原则,{}的内容并不是if引出的语句了,后面的else也就不能与if对应了,因为else要紧接if,中间夹了一个{}内容自然要出错。
还有if和if else不会同时发生,楼下的
“ “else if (a==b||b==c||c==a)” 这一句也有问题,a==b||b==c||a==c包括a==b&&b==c;所以无法判断是等腰三角形还是等边三角形;所以应该为:a==b&&b!=c||b==c&&a!=b||a==c&&b!=c ”
也是多余的,不是我针对他,但这句确实不用改,改成他那样也没用
if(a==b==c) 这行错了, 应该写成if(a==b||b==c)
“else if (a==b||b==c||c==a)” 这一句也有问题,a==b||b==c||a==c包括a==b&&b==c;所以无法判断是等腰三角形还是等边三角形;所以应该为:a==b&&b!=c||b==c&&a!=b||a==c&&b!=c
而且“printf("这三边可构成三角形");”应该在{}之中
整个程序为:#include
main()
{
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
if(a+b>c && a+c>b && b+c>a)
{ printf("这三边可构成三角形");
if(a==b==c)
printf("这是个等边三角形");
else if (a==b&&b!=c||b==c&&a!=b||a==c&&b!=c)
printf("这三角形是等腰三角形");
else
printf("这三角形是不等边三角形");
}
else printf("这三边不能构成三角形");
}
第二个 { 位置放错了,放在第一个 if() 后面
#include
void main()
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a+b>c && a+c>b && b+c>a)
{
printf("这三边可构成三角形");//请看
if(a==b&&b==c) //请看
printf("这是个等边三角形");
else if (a==b||b==c||c==a)
printf("这三角形是等腰三角形");
else
printf("这三角形是不等边三角形");
}
else
printf("这三边不能构成三角形");
}
你比较一下程序的不同之处就可以了,这个程序最简单,你可以输入到软件里尝试一下,均可以得到正确结果。