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