**当我运行程序时,它总是给我虚数作为答案,尽管我已经更改了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%。