我必须编写一个简单的程序,通过输入a,b和c的值并使用if-else语句,可以找到二次方程式(ax ^ 2 + bx + c)的根。该程序可以编译,但是答案完全错误。我所有输入和输出的数据类型都是double

我尝试查看公式,但似乎没有错吗?


    printf("input values of a, b, c: ");
    scanf("%lf, %lf, %lf", &a, &b, &c);

    disc = pow(b, 2) - (4 * a*c);

    if (a == 0)
    {
        r = -c / b;
        printf("x = %.2lf\n", r);
    }
    else if (disc >= 1)
    {
        r1 = (-b + sqrt(disc)) / (2 * a);
        r2 = (-b - sqrt(disc)) / (2 * a);
        printf("x1 = %.2lf and x2 = %.2lf", r1, r2);
    }
    else if (disc == 0)
    {
        r1 = (-b + sqrt(disc)) / (2 * a);
        r2 = r1;
        printf("2 of the same root, x = %.2lf", r2);
    }
    else
    {
        printf("no real root");
    }



例如,当我输入2,-11和12作为a,b和c时,应该显示的答案是'x1 = 4.00和x2 = 1.50',但是,我得到的输出是'x1 = .00和x2 = 0.00'。甚至对于第一个条件,我都输入了0、3和6,期望输出为'x = -2.00',但我却得到了'x = -1.00'。

最佳答案

真实根的代码查找不正确。

// else if (disc >= 1)
else if (disc >  0.0)

关于c - 程序无法计算二次方程的根,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55447682/

10-11 16:00