一元二次方程的程序,得不出答案,求指点
程序代码:#include "stdio.h"
#include "math.h"
/***********判断根的情况***********/
int root(double a,double b,double c,double * r1,double *r2)
{
double t=b*b-4*a*c;
if (t=0)
{
*r1=*r2=-(b/(2*a));
return 1;
}
else if (t>0)
{
*r1=(-b+sqrt(t))/(2*a);
*r2=(-b-sqrt(t))/(2*a);
return 2;
}
else
{
*r1=b/(2*a);
*r2=sqrt(-t)/(2*a);
return 3;
}
}
int main(int argc, char* argv[])
{
double a,b,c,r1,r2;
scanf("%lf %lf %lf",&a,&b,&c);
int x=root(a,b,c,&r1,&r2);
if(x=1)
{
printf("%.2f\n",r1);
}
else if(x=2)
{
printf("%.2f\n",r1);
printf("%.2f\n",r2);
}
else
{
printf("%.2f+%.2fi\n",r1,r2);
printf("%.2f-%.2fi\n",r1,r2);
return 3;
}
return 0;
}编译没有错误,但是运行的时候,输入:1 2 1 ,结果显示为1.00.正确的结果应该是-1;
输入:1 -2 2,结果显示为-1.00,正确结果应该是1 2;
输入:1 -1 1,结果显示为-0.50,正确的结果应该是一个复数;
求解这是为什么




