#include <stdio.h>
#include<math.h>
int main()
{
double a,b,c,disc,x1,x2,realpart,imagpart;
//scanf("%lf,%lf,%lf",&a,&b,&c);
a=1;b=2;c=2;
printf("the equation:");
if(fabs(a)<=1e-6)
printf("this is not a equation\n");
else
{
disc=b*b-4*a*c;
if(fabs(disc)<=1e-6)
printf("has two equal root:%8.4f\n",-b/(2*a));
else
if(disc>1e-6)
{
x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
printf("has two real roots:%8.4f and %8.4f\n",x1,x2);
}
else
{
realpart=-b/(2*a);
imagpart=sqrt(-disc)/(2*a);
printf("has complex roots:\n");
printf("%8.4f+%8.4fi\n",realpart,imagpart);
printf("%8.4f-%8.4fi\n",realpart,imagpart);
}
}
return 0;
}
- 输入a,b,c,判断a值是否为0,为0方程不是二元一次方程;这里用1e-6即
为很小的数,接近0 - a不为0,判断disc是否为0,为0则有两个相同的根
- 不为0 分为大于0和小于0两种
- disc大于0则有两个不同实根
- disc小于0则有两个共轭复根