C++语言编译 复数类,测试输入输出
#include
#include
#include<stdio.h>
using namespace std;
//在程序中想要直接使用 cin 和 cout ,必须作正确的文件包含。
class Complex //定义复数类
{
private:
float real, imag;
public:
Complex(); //构造无参函数
Complex(float r = 0, float i = 0); //带参构造函数
Complex(const Complex& cx); //拷贝构造函数
~Complex(); //析构函数
Complex add(Complex c); //类中的成员函数,表示一个复数具有的行为
Complex minus(Complex c); //类中的成员函数,表示一个复数具有的行为
Complex multiply(Complex c); //类中的成员函数,表示一个复数具有的行为
Complex dicision(Complex c); //类中的成员函数,表示一个复数具有的行为
void Display();//实现复数的输出
};
//类外实现公有成员函数
Complex::Complex()//无参函数
{
real = 0;
imag = 0;
cout << "The complex is constructed." << endl;
}
Complex::Complex(float real, float imag)//带参构造函数
{
this->real = real;
this->imag = imag;
}
Complex::Complex(const Complex& m)//拷贝构造函数
{
this->real = m.real;
this->imag = m.imag;
}
Complex::~Complex()//析构函数
{
}
Complex Complex::add(Complex c)//复数加法
{
real += c.real;
imag += c.imag;
return *this;
}
Complex Complex::minus(Complex c)//复数减法
{
real -= c.real;
imag -= c.imag;
return *this;
}
Complex Complex::multiply(Complex c)//复数乘法
{
real = realc.real-imagc.imag;
imag = realc.imag+imagc.real;
return *this;
}
Complex Complex::dicision(Complex c)//复数除法
{
float t = c.real * c.real + c.imag * c.imag;
real = (realc.real+imagc.imag)/t;
imag = (imagc.real-realc.imag)/t;
return *this;
}
void Complex::Display()//复数输出
{
if(imag > 0)
{
cout << real << "+" << imag << "i" << endl;
}
else if (imag < 0)
{
cout << real << imag << "i" << endl;
}
else {
cout << real << endl;
}
}
int main()
{
Complex c1 = Complex(3, 4);
Complex c2 = Complex(9, -4);
Complex c3 = Complex(4, 9);
Complex c4 = Complex(8, 4);
Complex c5 = Complex(21, 7);
cout << "输入的复数如下:\n";
c1.Display();
c2.Display();
c3.Display();
c4.Display();
c5.Display();
cout << "得到的运算结果如下:\n";
Complex t01 = c1.add(c2);
c2.Display();
c1.Display();
t01.Display();
Complex t02 = c2.minus(c3);
cout<< "t02 = " << t02<< endl;
t02.Display();
Complex t03 = c4.add(c2);
t03.Display();
Complex t04 = c5.minus(c3);
t04.Display();
Complex t05 = c1.add(c1);
t05.Display();
}
在用cout<<"t02="<<t02<<endl;作为输出语句时,“<<” 报错
正常输出语句即可
Complex类没有重载<<运算符,所以在使用cout<<t02的时候会报错。在Complex类中重载<<运算符就可以了,代码修改如下(修改部分有注释):
#include <iostream>
using namespace std;
//在程序中想要直接使用 cin 和 cout ,必须作正确的文件包含。
class Complex //定义复数类
{
private:
float real, imag;
public:
Complex(); //构造无参函数
Complex(float r = 0, float i = 0); //带参构造函数
Complex(const Complex& cx); //拷贝构造函数
~Complex(); //析构函数
Complex add(Complex c); //类中的成员函数,表示一个复数具有的行为
Complex minus(Complex c); //类中的成员函数,表示一个复数具有的行为
Complex multiply(Complex c); //类中的成员函数,表示一个复数具有的行为
Complex dicision(Complex c); //类中的成员函数,表示一个复数具有的行为
void Display();//实现复数的输出
friend ostream& operator<<(ostream& os, const Complex& c); //修改,重载<<运算符
};
//类外实现公有成员函数
Complex::Complex()//无参函数
{
real = 0;
imag = 0;
cout << "The complex is constructed." << endl;
}
Complex::Complex(float real, float imag)//带参构造函数
{
this->real = real;
this->imag = imag;
}
Complex::Complex(const Complex& m)//拷贝构造函数
{
this->real = m.real;
this->imag = m.imag;
}
Complex::~Complex()//析构函数
{
}
Complex Complex::add(Complex c)//复数加法
{
real += c.real;
imag += c.imag;
return *this;
}
Complex Complex::minus(Complex c)//复数减法
{
real -= c.real;
imag -= c.imag;
return *this;
}
Complex Complex::multiply(Complex c)//复数乘法
{
real = real*c.real - imag*c.imag;
imag = real*c.imag + imag*c.real;
return *this;
}
Complex Complex::dicision(Complex c)//复数除法
{
float t = c.real * c.real + c.imag * c.imag;
real = (real*c.real + imag*c.imag) / t;
imag = (imag*c.real - real*c.imag) / t;
return *this;
}
void Complex::Display()//复数输出
{
if (imag > 0)
{
cout << real << "+" << imag << "i" << endl;
}
else if (imag < 0)
{
cout << real << imag << "i" << endl;
}
else {
cout << real << endl;
}
}
//修改,重载<<运算符
ostream& operator<<(ostream& os, const Complex& c)
{
os << c.real << "+" << c.imag << "i";
return os;
}
int main()
{
Complex c1 = Complex(3, 4);
Complex c2 = Complex(9, -4);
Complex c3 = Complex(4, 9);
Complex c4 = Complex(8, 4);
Complex c5 = Complex(21, 7);
cout << "输入的复数如下:\n";
c1.Display();
c2.Display();
c3.Display();
c4.Display();
c5.Display();
cout << "得到的运算结果如下:\n";
Complex t01 = c1.add(c2);
c2.Display();
c1.Display();
t01.Display();
Complex t02 = c2.minus(c3);
cout << "t02 = " << t02 << endl;
t02.Display();
Complex t03 = c4.add(c2);
t03.Display();
Complex t04 = c5.minus(c3);
t04.Display();
Complex t05 = c1.add(c1);
t05.Display();
}
t02是对象不能直接输出,你只能输出对象的属性
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!