注意 :
实数(浮点型)里面不能直接和零比较大小
EPS是库函数里面的一个极小值
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
float a, b, c ;
printf("Input a ,b , c :");
scanf("%f%f%f",&a,&b,&c);
if(fabs(a)<=1e-15) //条件:当|a|<0 时 可以改成<=EPS
{ //1e-15 表示一个极小的数 浮点型零就是一个近似值
printf("不是一元二次方程");
printf("x = %.2f",c/b);
exit(0); //执行到此处 程序返回0 并退出
}
else
{
float disc , p ,q , x1 ,x2 ;
disc = b*b - 4*a*c;
p = -b/(2*a) ;
q = sqrt(fabs(disc))/(2*a) ;
if(fabs(disc)<=1e-15)
{
printf("x1 = x2 = %.2f",p);
}
else if(disc >1e-15)
{
printf("x1 = %.2f, x2 = %.2f",p+q,p-q);
}
else //(德尔塔小于0 )
{
printf("x1 = %.2f+%.2fi\n",p,q);
printf("x1 = %.2f-%.2fi\n",p,q);
}
}
return 0;
}