c编程 一元二次方程求根的问题,可以运行但是结果不对,想知道为什么,刚刚开始学

#include #include
int main()
{
int a,b,c; double d,e,f;
printf("a=");
scanf("%d",&a);
printf("b=");
scanf("%d",&b);
printf("c=");
scanf("%d",&c);
d=b*b-4*a*c;
if(d<0)
printf("无解");
else {
e=(-b+sqrt(d))/(2*a);
f=(-b-sqrt(d))/(2*a);

if(d=0)
printf("x1=x2=%f",e);
else
printf("x1=%f\tx2=%f",e,f);
}
}

if (d==0)
{
x1=(-b)/(2*a);
printf("x1=%f\n",x1);
}
if (d>0)
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("x1=%f,x2=%f\n",x1,x2);}
}
这个试试

楼上正确。
if(d=0)——执行完d=0,d就真的等于0,不会再执行if (d>0) 了

注意“=”是赋值符号,“==”才是判断

%lf