求解方程式

比如方程式ax*x+bx+c=0;
其中需要讨论的情况有以下几种:
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<math.h>
int main()
{
    float a,b,c,disc,x1,x2,realpart,imagpart;
    scanf("%f%f%f",&a,&b,&c);
    printf("The equation");
    if(fabs(a)<=1e-6)
        printf("这不是一个二次方程式\n");
    else
    {
        disc=b*b-4*a*c;
        if(fabs(disc)<=1e-6)
            printf("有两个相等实根%8.4f\n",-b/(2*a));
        else
            if(disc>1e-6)
          {
            x1=(-b+sqrt(disc))/(2*a);
            x2=(-b-sqrt(disc))/(2*a);
            printf("有不同的实根%8.4fand%8.4f\n");
          }
        else
           {
            realpart=-b/(2*a);
            imagpart=sqrt(-disc)/(2*a);
            printf("拥有复数根\n");
            printf("%8.4f+%8.4fi\n",realpart,imagpart);
            printf("%8.4f-%8.4fi\n",realpart,imagpart);
           }
    }
}

原文地址:https://www.cnblogs.com/ywj2013/p/3111860.html