题目描述
求一元二次方程ax^2+bx+c=0的根。
输入
方程的三个系数a、b、c的值。
输出
方程的根。
样例输入
4 1 1 1 2 1 1 1 -2
样例输出
x1=-0.125+0.484i x2=-0.125-0.484i x1=x2=-1.000 x1=1.000 x2=-2.000
#include<stdio.h>
#include<math.h>
void d(float ,float);
void z(float ,float);
void x(float ,float);
float x1,x2,p,q,D;
void main()
{
float a,b,c;
while(scanf("%f%f%f",&a,&b,&c)!=EOF)
{
D=b*b-4*a*c;
if(D>0)
{
d(a,b);
printf("x1=%.3f x2=%.3f\n",x1,x2);
}
else
{
if(D==0)
{
z(a,b);
printf("x1=x2=%.3f\n",x1,x2);
}
else
{
x(a,b);
printf("x1=%.3f+%.3fi x2=%.3f-%.3fi\n",p,q,p,q);
}
}
}
}
void d(float a,float b)
{
x1=(-b+sqrt(D))/(2*a);
x2=(-b-sqrt(D))/(2*a);
}
void z(float a,float b)
{
x1=x2=-(b)/(2*a);
}
void x(float a,float b)
{
p=-(b)/(2*a);
q=sqrt(-D)/(2*a);
}