初中的小明已经开始学习求解一元二次方程了,下面让我们来教计算机如何求解。输入 a,b,c ,求一元二次方程 ax²+bx+c=0 的根。
输入:
假设 a,b,c均int。
输出:
要求输出的根为 double 型,保留 6 位小数。
#include <stdio.h>
#include <math.h>
int main()
{
int a,b,c;
double d,e,f;
scanf("%d%d%d",&a,&b,&c);
if (a==0)
{
if (b==0)
{
printf("Input error!\n");
}
else
{
e=(0-(double)c)/b;
printf("x=%6f\n",e);
}
}
else
{
d=b*b-4*a*c;
if (d==0)
{
e=(0-b)/(2*a);
printf("x1=x2=%6f\n",e);
}
if (d>0)
{
e=(-b+sqrt(b*b-4*a*c))/(2*a);
f=(-b-sqrt(b*b-4*a*c))/(2*a);
printf("x1=%6f\n",e);
printf("x2=%6f\n",f);
}
if (d<0)
{
if(b==0)
{
f=(sqrt(4*a*c-b*b))/(2*a);
printf("x1=%6fi\n",f);
printf("x2=-%6fi\n",f);
}
else
{
e=(0-(double)b)/(2*a);
f=sqrt(4*a*c-b*b)/(2*a);
printf("x1=%.6f+%.6fi\n",e,f);
printf("x2=%.6f-%.6fi\n",e,f);
}
}
}
return 0;
}