使用c求解ax^2+bx+c=0方程



**当我运行程序时,它总是给我虚数作为答案,尽管我已经更改了a、b&c**

#include <stdio.h>
#include <math.h>
main()
{
float X, X1, X2, d, a,b,c;
printf("Square Equation Solven");
printf("nGive the Values of a,b&c:n");
scanf("%f%f%",&a,&b,&c);
d=(b*b-(4.0*a*c));
if (d=0)
{
    X=b/2*a;
    printf("nX=%f",X);
}
else if (d>0)
{
    X1=(-b+sqrt(d))/(2.0*a);
    X2=(-b-sqrt(d))/(2.0*a);
    printf("nX1=%f",X1);
    printf("nX2=%f",X2);
}
else
{
    printf("nThe Answer is Imaginary Numbern");
}

}

我每次都得到同样的答案。它告诉我答案是虚数。

问题出现在您的第一个if语句中:

if (d=0)

这不是将d与0进行比较,而是将0分配给d。然后,此表达式采用赋值的值,即0,其计算结果为false。这反过来又会导致else if (d>0)的求值为false,从而导致最后出现else条件。

将分配运算符更改为比较:

if (d==0)

如果你用-Wall -Wextra编译,它会警告你这一点:

warning: suggest parentheses around assignment used as truth value

在第一个scanf语句中,如果只写了两个,则应该有3%。

最新更新