一元二次方程,当输入的系数为负数时输出的结果有误

#include<stdio.h>
#include<math.h>
void main()
{
float a,b,c;
scanf("%f,%f,%f",&a,&b,&c);
float x,x1,x2,t,i,j;
t=bb-4ac;
if(a==0)
{
x=-c/b;
printf("不是二次方程:x=%.2f\n",x);
}
else
{
if(t==0)
{
x=-b/(2
a);
printf("有两个相等实根:x1=x2=%.2f\n",x);
}
if(t>0)
{
x1=(-b+sqrt(t))/(2a);
x2=(-b-sqrt(t))/(2
a);
printf("有两个不等实根:x1=%.2f,x2=%.2f\n",x1,x2);
}
if(t<0)
{
i=-b/(2a);
j=sqrt(fabs(t))/(2
a);
printf("有两个共轭复根:x1=%.2f+%.2fi,x2=%.2f-%.2fi\n",i,j,i,j);
}
}
}

img

img

改好了

img

img

#include<stdio.h>
#include<math.h>
int main()
{
    float a,b,c;
    scanf("%f,%f,%f",&a,&b,&c);
    float x,x1,x2,t,i,j;
    t= b*b - 4*a*c;
    printf("%f", t);
    if(a==0)
    {
        x=-c/b;
        printf("不是二次方程:x=%.2f\n",x);
    }
    else
    {
        if(t==0)
        {
            x=-b/(2*a);
            printf("有两个相等实根:x1=x2=%.2f\n",x);
        }
        if(t>0)
        {
            x1=(-b+sqrt(t))/(2*a);
            x2=(-b-sqrt(t))/(2*a);
            printf("有两个不等实根:x1=%.2f,x2=%.2f\n",x1,x2);
        }
        if(t<0)
        {
            i=-b/(2*a);
            j=sqrt(fabs(t))/(2*a);
            printf("有两个共轭复根:x1=%.2f+%.2fi,x2=%.2f-%.2fi\n",i,j,i,j);
        }
    }
    return 0;
}