问题 问答题

已有复数类Complex和主函数main(),编写一个类Root来实现求解一元二次方程的程序。
#include<iostream.h>
#include<iomanip.h>
#include<math.h>
class Complex
public:
Complex()
void setC(double i,double j)
real=i;image=j;
void show();
protected:
double real,image;

void Complex::show()
cout<<"("<<real<<","<<image<<"i)"<<endl;
void main()
double a,b,c;
cout<<"\n请输入一元二次方程的系数a,b,c:";
cin>>a>>b>>c;
Root root(a,b,c);
root.solve();

答案

参考答案:完整的程序如下:
class Root
{public:
Root(double i,double j,double k)
{a=i,b=j,c=k;}
void show();
void solve();
protected:
double a,b,c;
};
void Root::show()
{cout<<"方程";
cout<<a;
cout<<setiosflags(ios::showpos);
cout<<"*x*x":
cout<<b<<"*x";
cout<<c<<"=0\n";
cout<<resetiosflags(ios::showpos);
}
void Root::solve()
{show();
double x=-b/2/a;
cout<<"的解是:\n";
double dt=b*b-4*a*c;
Complex c1,c2;
if(fabs(dt)<1e-5)
{c1.setC(x,0),c2.setC(x,0);
cout<<"\nx1=x2=":
c1.show();
}
else if(dt>0)
{c1.setC(x+sqrt(dt)/2/a,0),c2.setC(x-sqrt(dt)/2/a,0);
c1.show();c2.show();
}
else
{c1.setC(x,sqrt(-dt)/2/a);
c2.setC(x,-sqrt(-dt)/2/a);
c1.show();c2.show();
}
}

选择题
单项选择题