请问我的一元二次方程解法错在哪里?(c语言编程)

2024-12-25 19:20:24
推荐回答(1个)
回答1:

if (b*b > 4*a*c) // double类型有精度误差,本题可以这么比较
{
x1 = (-b + sqrt(delta)) / (2*a);
x2 = (-b - sqrt(delta)) / (2*a);
printf (“该一元二次方程有两个解:x1= %f, x2= %f\n”,x1,x2);
}
else if (b*b == 4*a*c) //同上
{
x1 = (-b) / (2.0*a); // 这里改为2.0。int与int相除在c中会取整,忽略小数位
x2 = x1;
printf (“该一元二次方程有一个唯一解:x1 = x2 = %f\n”, x1);
}
else
{
printf(“无解\n”);
}