C语言一元二次方程求根,逻辑上是哪里错了呢?

#include<stdio.h>
#include<math.h>
int main()
{
float a,b,c,disc,x1,x2,re,im;
scanf("%f,%f,%f",&a,&b,&c);
if(fabs(a)<=1e-6&&fabs(b)<=1e-6&&fabs(c)<=1e-6)
printf("Input error\n");
else
if(fabs(a)<=1e-6)
x1=-c/b;
printf("x=%8.4f",x1);
else
disc=bb-4ac;
if(disc>=1e-6)
x1=(-b+sqrt(disc))/(2
a);
x2=(-b-sqrt(disc))/(2a);
if(x1==x2)
printf("x1=x2=%8.4f\n",x1);
else
printf("x1=%8.4f\nx2=%8.4f\n",x1,x2);
else{
re=-b/(2
a);
im=sqrt(-disc)/(2*a);
printf("x1=%8.4f+%8.4fi\nx2=%8.4f-%8.4f\n",re,im,re,im);
}
return 0;
}

[Error] 'else' without a previous 'if'
这是为什么呢?

很多花括号没打

#include<stdio.h>
#include<math.h>
int main()
{
    float a,b,c,disc,x1,x2,re,im;
    scanf("%f,%f,%f",&a,&b,&c);
    if(fabs(a)<=1e-6&&fabs(b)<=1e-6&&fabs(c)<=1e-6)
        printf("Input error\n");
    else{
        if(fabs(a)<=1e-6){
            x1=-c/b;
            printf("x=%8.4f",x1);
        }
        else{
            disc=b*b-4*a*c;
            if(disc>=1e-6){
                x1=(-b+sqrt(disc))/(2*a);
                x2=(-b-sqrt(disc))/(2*a);    
                if(x1==x2)
                    printf("x1=x2=%8.4f\n",x1);
                else
                    printf("x1=%8.4f\nx2=%8.4f\n",x1,x2);
            }
            else{
                re=-b/(2*a);
                im=sqrt(-disc)/(2*a);
                printf("x1=%8.4f+%8.4fi\nx2=%8.4f-%8.4f\n",re,im,re,im);
            }    
        }
    }
    
    return 0;
}

请用代码快的方式贴出,报错说你的else没有对应匹配的if,检查逻辑,看看你的最后一个else适合哪个if匹配的?应该是没有写对,没有匹配到if。两个else连一起同级是不行