c语言一元二次方程求解

img

include<stdio.h>
#include<math.h>
void function(double a, double b, double c)
{
    if(a == 0.0) {printf("不是二元一次方程\n");}
    double tmp = b*b - 4*a * c;
    if (tmp >= 0.0)
    {
        printf("x1=%.3lf  x2=%.3lf", (-b + sqrt(tmp)) / (2 * a), (-b - sqrt(tmp)) / (2 * a));
    }
//③当 ▲ < 0 时,方程无实数根,但有2个共轭复根。
    else{
        printf("x1=%.3lf+%.3lfi  x2=%.3lf-%.3lfi", -b / (2 * a), sqrt(-tmp) / (2 * a), 
-b / (2 * a), sqrt(-tmp) / (2 * a));
 }
}
int main()
{
    double a, b, c;
    scanf("%lf %lf %lf", &a, &b, &c);
    function(a, b, c);
    return 0;
}