C语言判断三角形,用if嵌套,请问哪出错了?

#include

int main()
{
int x,y,z;
printf("三角形三边 x,y,z=");
scanf_s("%d%d%d",&x,&y,&z);
if(x+y>z&&x+z>y&&y+z>x)

if (x==y&&x==z&&y==z)
printf("三角形为等边三角形\n");

else if (x==y||y==z||x==z)

printf("三角形为等腰三角形\n");
else if (x*x+y*y==z*z||x*x+z*z==y*y||y*y+z*z==x*x)

printf("三角形为直角三角形\n");
else
printf("三角形为普通三角形\n");
else
printf("不构成三角形\n");
return 0;
}

#include <stdio.h>

int main()
{
    int x,y,z;
    printf("三角形三边 x,y,z=");
    scanf_s("%d%d%d",&x,&y,&z);
    if(x+y>z&&x+z>y&&y+z>x)
    {
        if (x==y&&x==z&&y==z)
            printf("三角形为等边三角形\n");
        else 
            if (x==y||y==z||x==z)
                printf("三角形为等腰三角形\n");
            else 
                if (x*x+y*y==z*z||x*x+z*z==y*y||y*y+z*z==x*x)
                    printf("三角形为直角三角形\n");
                else
                    printf("三角形为普通三角形\n");
    }
    else
    {
        printf("不构成三角形\n");
    }
    return 0;
}

看上去主要是if没有加上{}的原因,加上应该就可以了,{}省略一般是大家比较喜欢的节省方式,不过微软官方一般都是不推荐省略的,为了方便维护和阅读。
#include

int main()
{
int x,y,z;
printf("三角形三边 x,y,z=");
scanf_s("%d%d%d",&x,&y,&z);
if(x+y>z&&x+z>y&&y+z>x)
{
if (x==y||y==z||x==z)
{
printf("三角形为等腰三角形\n");
if (x==y && y==z)
printf("三角形为等边三角形\n");
}
else if (x*x+y*y==z*z||x*x+z*z==y*y||y*y+z*z==x*x)
{
printf("三角形为直角三角形\n");
if(x == y || y == z || x == z)
printf("三角形为等腰直角三角形\n");
}
else
printf("三角形为普通三角形\n");
}
else
{
printf("不构成三角形\n");
}
return 0;
}