使用C求解ax ^ 2 + bx + c = 0等式

时间:2016-05-10 16:46:45

标签: c

**当我运行程序时,虽然我改变了a,b&的值,但它总是给我一个虚数作为答案。 c **

#include <stdio.h>
#include <math.h>
main()
{
float X, X1, X2, d, a,b,c;
printf("Square Equation Solve\n");
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 Number\n");
}


}

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

2 个答案:

答案 0 :(得分:3)

问题在于您的第一个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

答案 1 :(得分:2)

在第一个scanf语句中,只有3%你只写了两个。