一元二次方程的程序,得不出答案,求指点
程序代码:
#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,正确的结果应该是一个复数;
求解这是为什么