仅作为自己的学习记录,欢迎指正和建议
2.
Description
定义一个复数类complex,数据成员包括实部real和虚部imag,均为double类型。成员函数包括:
(1) 默认构造函数(即无参的构造函数),实部和虚部分别赋值为1.0,1.0 ;
(2) 带两个参数的构造函数;
(3) 输出复数的函数display, 输出格式为 实部+虚部i,例如: 1.00+1.00i ;
(4) 输入复数的函数input, 从键盘输入复数的实部和虚部;
(5) 计算复数的模的函数magnitude(函数返回值为double型),即对于复数 z=a+bi,它的模 |z|=sqrt(a2+b2)。
要求在main函数中创建3个复数对象,第1个复数的实部和虚部用input函数从键盘输入,第2、3个复数分别由用默认构造函数和带参数的构造函数实现初始化,最后分别输入这3个复数以及它们的模。
int main()
{
complex val1,val2,val3(1.5,2.8);
val1.input();
val1.display();
cout<<" "<<fixed<<setprecision(2)<<val1.magnitude()<<endl;
val2.display();
cout<<" "<<val2.magnitude()<<endl;
val3.display();
cout<<" "<<val3.magnitude()<<endl;
return 0;
}
Input
输入复数的实部和虚部,两个实数之间用空格分开
Output
3个复数应输出3行数据,每行输出数据分两部分,先输出复数,再输出该复数的模,复数和它的模之间用2个空格分隔,所有实数小数点后保留两位
Sample Input
1.0 2.0
Sample Output
1.00+2.00i 2.24
1.00+1.00i 1.41
1.50+2.80i 3.18
HINT
代码//
#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;
class complex
{
public:
complex();
complex(double a,double b);
void input();//输入
void display();//输出
double magnitude();//计算模长
private:
double real;
double imag;
};
complex::complex() //默认
{
real=1.0;
imag=1.0;
}
complex::complex(double a,double b):real(a),imag(b){}//赋值
void complex::input()//输入
{
double x,y;
cin>>x>>y;
real=x;
imag=y;
}
double complex::magnitude()//计算模长
{
double i;
i=sqrt(real*real+imag*imag);
return i;
}
void complex::display()//输出复数
{
if(real==0)
{
cout<<fixed<<setprecision(2)<<imag<<"i";
}
if(imag==0)
{
cout<<fixed<<setprecision(2)<<real;
}
if(imag<0)
{
cout<<fixed<<setprecision(2)<<real<<imag<<"i";
}
else
{
cout<<fixed<<setprecision(2)<<real<<"+"<<imag<<"i";
}
}
int main()
{
complex val1,val2,val3(1.5,2.8);
val1.input();
val1.display();
cout<<" "<<fixed<<setprecision(2)<<val1.magnitude()<<endl;
val2.display();
cout<<" "<<val2.magnitude()<<endl;
val3.display();
cout<<" "<<val3.magnitude()<<endl;
return 0;
}