求一元二次方程的解
本题是if语句的灵活使用,具体有4步:
(1)a=0,不是一元二次方程。
(2)b*b-4*a*c=0,有两个相同的实根。
(3)b*b-4*a*c>0.有两个不等实根。
(4)b*b-4*a*c<0,有两个共轭复根。
#include<stdio.h>
#include<stdio.h>
#define EXP 0.00001
int main()
{
double a = 0.0,b = 0.0,c = 0.0;
scanf("%lf %lf %lf",&a,&b,&c);
if(a>-EXP&&a<EXP)
{
printf("不是一元二次方程\n");
}
else
{
double disc = b*b-4*a*c;
if((disc>-EXP)&&(disc<EXP))
{
double x=-b/(2*a);
printf("x1 = x2 =%lf\n",x);
}
else if(disc > 0.0)
{
double x1 =(-b+sqrt(disc))/(2*a),
x2 =(-b-sqrt(disc))/(2*a);
printf("x1 = %lf\n",x1);
printf("x2 = %lf\n",x2);
}
else
{
printf("有两个共轭复数\n");
}
}
return 0;
}