这个解一元二次方程组的程序哪里出错了?

img


这个代码最后为什么需要打入四个数,scanf里不是只有三个吗?最后的解x1,x2为什么输出的是这个

程序没有问题的,是输入数据的问题,原因如下:
x的平方+1=0是没有解啊
b的平方-4ac=-4都小于0了

img


输入语句别搞那么复杂


#include "stdio.h"
#include "math.h"

int main() {
    double a, b, c, disc, x1, x2, p, q;
    scanf("%lf%lf%lf", &a, &b, &c);
    disc = b * b - 4 * a * c;
    p = -1 * b / (2.0 * a);
    q = sqrt(disc) / (2.0 * a);
    x1 = p + q;
    x2 = p - q;
    printf("x1=%7.2lf,x2=%7.2lf\n", x1, x2);
    return 0;
}