#include
int main(void)
{
/*********Begin*********/
float a,b,c;
double m,n,d;
printf("Please enter the coefficients a,b,c:\n");
scanf("%f,%f,%f", &a,&b,&c);
d = b*b-4*a*c;
if(d<0)
{
printf("error!\n");
return 0;
}
else
m=(-b+sqrt(d))/2*a;
n=(-b-sqrt(d))/2*a;
printf("x1=%.4f, x2=%.4f\n",m,n);
/*********End**********/
return 0;
}
这是c语言一元二次方程求根的问题,程序的测试集只有这一组一直不对,其他的又是对的,后面给2*a加上括号以后就对了,这是为什么捏
在求根公式里面2a是放在分母里面的,在程序里面你没有上括号,乘和除的优先级相同,所以在程序里面会是到底先算乘法还是先算除法是不确定的,所以会出现歧义,导致达不到设计者的目的,你应该避免出现这样的情况,所以要上括号,或者分开来写
如果觉的有帮助,望采纳,谢谢
2*a你要加括号啊,分母是(2 * a)啊。
加了括号,a就在分母上,不加括号,a就在分子上的啊
加了括号,a在分母上,不加括号,a在分子上,这是基本的四则混合运算规则,跟语法无关
如果a是1,当然加和不加是一样的了