求各位专家帮我看看代码,为什么出bug了
(问题:求一元二次方程的根)
#include
#include
int main()
{
float a,b,c,x1,x2,d;
scanf("%f,%f,%f",&a,&b,&c);
if(fabs(a)<=1e-6)
{ if(fabs(b)<=1e-6)
if(fabs(c)<=1e-6)
printf("一切实数");
else
printf("无解");
else
printf("根为:%f",-c/b);
}
else
{
d=b*b-4*a*c;
if(d<0)
printf("无实数根");
else
if(d<0)
{
x1=-b/(2*a)-sqrt(d)/(2*a);
x2=-b/(2*a)+sqrt(d)/(2*a);
printf("x=%f,x=%f",x1,x2);
}
}
return 0;
}
你输入数据的界面截图看一下
22行为啥还是if(d<0)啊,不应该d>0了么?另外d为0的情况没写啊
int main()
{
float a,b,c,delta,x1,x2;
scanf("%f%f%f",&a,&b,&c);
delta=(b*b-4*a*c);
if (delta>0)
{
x1=(-b+sqrt(delta))/(2*a);
x2=(-b-sqrt(delta))/(2*a);
printf("x1=%5.2f,x2=%5.2f\n",x1,x2);
}
else if(delta==0)
{
x1=-b/(2*a);
printf("x=%5.2f\n",x1);
}
else
printf("无解\n");
}
答:可能是sqrt函数没有正确使用,请检查您的sqrt函数引入了正确的math.h头文件,并正确使用sqrt函数。