1. 程式人生 > >解一元二次方程的根

解一元二次方程的根

void Fun(double a,double b,double c)
{
double x1;
double x2;
double d = b*b - 4*a*c;
if(-EPS<=a && a<EPS)//a==0
{
x1 = x2 = -c/b;
printf("x1=%f,x2=%f\n",x1,x2);
}
else //a != 0
{
if(-EPS<=d && d<=EPS)//d==0
{
x1=x2=-b/(2*a);
printf("x1=%f,x2=%f\n",x1,x2);
}
else
{
if(d > EPS)
{
x1 = (-b+sqrt(d))/(2*a);
x2 = (-b-sqrt(d))/(2*a);
printf("x1=%f,x2=%f\n",x1,x2);
}
else //d<0
{
printf("無實根\n");
}
}
}
}


int main()
{
Fun(0,1,2);
Fun(1,2,1);
Fun(1,4,2);
Fun(1,1,1);
return 0;