一元二次方程的根,各位大哥哥为什么提交不上啊!
Description 从键盘任意输入a,b,c的值,编程计算并输出一元二次方程ax2+bx+c=0的根,当a=0时,输出“Sorry!”,当a≠0时,分b2-4ac=0、b2-4ac>0、b2-4ac<0三种情况,计算并输出方程的根。
Input
一行输入三个实数,以空格隔开
Output
输出“Sorry!”,或者一个实数,或者两个以空格隔开的实数,或者a+bi a-bi,其中a为实数,b为正实数(为保证两个虚根输出顺序的唯一性),所有实数小数点后保留两位有效数字。
Sample Input
2 3 2
Sample Output
-0.75+0.66i -0.75-0.66i
Hint
比较一个实数a是否等于0,要写成if(fabs(a)<=1e-6),其中1e-6可以使用宏定义 #define EPS 1e-6
#include<stdio.h>
#include<math.h>
#define ESP 1e-6
int main()
{
double a,b,c,d,x1,x2;
scanf("%lf %lf %lf",&a,&b,&c);
if(fabs(a)<=ESP)
printf("Soory\n");
else
{
d=b*b-4*a*c;
if(d>0)
{ x1=(-b+sqrt(d))/(2*a);
x2=(-b+sqrt(d))/(2*a);
printf("%.2f %.2f\n",x1,x2);
}
if(d==0)
{
x1=(-b)/(2*a);
printf("%.2f\n",x1);
}
if(d<0)
{
x1=(-b)/(2*a);
x2=(sqrt(-d))/(2*a);
printf("%.2lf+%.2lfi %.2lf-%.2lfi\n",x1,x2,x1,x2);
}
}
return 0;
}