C++一元二次方程,帮我看看哪里不行

来源:百度知道 编辑:UC知道 时间:2024/09/24 04:42:36
#include<iostream.h>
#include<math.h>
void main()
{
double a,b,c,d,e,f,g;
cout<<"请输入一元二次方程:"<<endl;
cout<<"a="<<endl;
cin>>a;
cout<<"b="<<endl;
cin>>b;
cout<<"c="<<endl;
cin>>c;
cout<<a<<"*x2"<<"+"<<b<<"*x"<<"+"<<c<<"=0"<<endl;
d=b*b-4*a*c;
if(d<0)
{
cout<<"方程没有实数根!"<<endl;
}
if(d=0)
{
f=g=-b/2*a;
cout<<"方程只有一个实数根:X1=X2="<<f<<endl;
}
if(d>0)
{
e=sqrt(d);
f=(-b+e)/(2*a);
g=(-b-e)/(2*a);
cout<<"次方程的第一个解为X1="<<f<<";"<<"第二个解为X2="<<g<<"。"<<endl;
}
}
我运行了

if(d=0)
{
f=g=-b/2*a;
cout<<"方程只有一个实数根:X1=X2="<<f<<endl;
}

除了要把d=0 改为 d==0外
还要把f=g=-b/2*a; 改为 f=g=-b/(2*a);

你遇到了什么问题?

你啊
太不细心了
把d=0的情况书写时是d==0
判断等于是==
一个=是赋值的

没看出什么大问题。程序流似乎没有什么地方不好。
两点:1:判断是否相等用"==";
2:浮点数比较大小不是简单的 ">"、"<"、"==",一般计算结果都是小数点后某一位开始出现比较随即的数字。比较时是判断两个数的差的绝对值是否小于一个数(比如 1*10-6等等)。这里应该是 fabs(d) 和 0.00001之间的比较
如果还是没有结果……不应该……