一元二次方程求解问题(c语言)

看看叭T^TT^T
输入1 2 3是无解,应该输出-1才对
可是为啥成这样了啊?

img

img

先判断b*b-4*a*c的值,再进行开根(负数在实数域范围内没有平方根)。可参考:https://www.cnblogs.com/wlyperfect/p/12518773.html?ivk_sa=1024320u

#include <stdio.h>
#include <math.h>

int main()
{
    double a, b, c, k, x1, x2;
    scanf("%lf %lf %lf", &a, &b, &c);
    if(a != 0)
    {
        k = b*b - 4*a*c;
        if(k < 0)
        {
            printf("-1\n");
        }else if(k == 0){
            x1 = (-b + sqrt(k))/(2.0*a);
            x2 = x1;
            printf("x1=%.2lf\nx2=%.2lf", x1, x2);
        }else{
            x1 = (-b + sqrt(k)) / (2.0*a);
            x2 = (-b-sqrt(k)) /(2.0*a);
            printf("x1=%.2lf\nx2=%.2lf", x1, x2);
        }
    }else
        printf("0\n");
    return 0;
}