一、题目
求方程的解
二、解题思路
实际上,该方程有四种情况:
a=0,方程不是二次方程
,方程有两个实根
,方程只有一个实根
,方程有两个共轭复根
ps.应当以p+qi和p-qi的形式输出复根。其中,p=-b/(2a),q=
三、代码
#include <stdio.h>
#include <math.h>
int main()
{
float a,b,c,disc,x1,x2,p,q;
printf("%请输入a,b,c:");
scanf("%f%f%f",&a,&b,&c);
disc=b*b-4*a*c;
if(fabs(a)<=1e-6)
/*由于disc是实属,而实数再计算和储存时会有一些微小的误差,因此不能直接进行disc==0的判断,否则可能会导致结果错误。所以采取的办法是判别disc的绝对值(fabs(disc))是否小于一个很小的数,,如果小于此数,就认为disc等于0*/
printf("这不是二次方程");
else if(disc<-(1e-6))
{
p=-b/(2*a);
q=sqrt(-disc)/(2*a);
printf("%.2f + %.2fi\n%.2f - %.2fi",p,q,p,q);
}
else if(disc>1e-6)
{
x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
printf("x1=%.2f\tx2=%.2f",x1,x2);
}
else
{
x1=(-b+sqrt(disc))/(2*a);
printf("x=%.2f",x1);
}
return 0;
}