题目是这样的编写函数求方程ax2+bx+c=0的所有解(包括实根和非实根)。提示:要考虑a=0,b2-4ac>0、=0、
#include
void root1(double a,double b)
{
double x;
x=-b/(2*a);
printf("x1=x2=%lf\n",x);
}
void root2(double a,double b,double c)
{
double x1;double x2;double disc;
x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
printf("%lf,%lf\n",x1,x2);
}
void complex_roots(double a,double b,double c)
{
double m;double n;double disc;
m=-(b/(2*a));n=sqrt(-disc)/(2*a);
printf("x1=%8.4lf+%8.4lfi\n",m,n);
printf("x2=%8.4lf-%8.4lfi\n",m,n);
}
void esp_root(double b,double c)
{
double x;
x=-c/b;
printf("x=%lf\n",x);
}
main()
{
double a,b,c,disc,x1,x2,x,m,n;
printf("请输入一元二次方程的三个参数:\n");
scanf("%lf%lf%lf",&a,&b,&c);
disc=b*b-4*a*c;
if(a==0)
esp_root(b,c);
else if(fabs(disc)1e-6)
root2(a,b,c);
else
complex_roots(a,b,c);
}但结果是:我输入5 3 7,结果显示x1=-3.000+9620791617601800000000000.000i.....请问这是为什么?
|