c语言求解一元二次方程
发布网友
发布时间:2022-05-02 17:35
我来回答
共2个回答
热心网友
时间:2022-06-21 02:07
int main()
{
int a,b,c,d;
float x1,x2;
scanf("%d%d%d",&a,&b,&c);
d=b*b-4*a*c;
if(a==0)
{
if(b==0)
{
printf("Input error!\n");
}
else
printf("x=%.6f",-c/b);
}
else
{
if(d<0)
printf("Input error!\n");
else if(d==0)
printf("x1=x2=%.6f",-b/(2*a));
else
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("x1=%.6f\nx2=%.6f\n",x1,x2);
}
}
return 0;
}
热心网友
时间:2022-06-21 02:08
您好!
在输出最后的输出语句中你写的是printf("x1=%.6f\nx2=%d.6f",x1,x2);这是错误的
错误1:输出使用了%f表示float类型,而你定义的x1和x2都是int类型的,建议应该把x1,x2都修改成double类型,输出是用%lf。
错误2:%d.6f是什么东西呢?多输入了一个d吧。
建议:不要把情况分得那么细,没必要给自己找麻烦,直接求出判别式,使用公式求解就可以了。
谢谢!望采纳!