**当我运行程序时,虽然我改变了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");
}
}
我每次都得到同样的答案。它告诉我答案是虚数。
答案 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%你只写了两个。