帮我用三种C++代码实现 设计一个复数类能够实现两复数的加法和减法。输入描述: 每行有 4 个整数,前两个数表示一个复数的实部和虚部,后两个数表示另一个复数的实部和虚部。输出描述: 对于每组数据,输出两复数的和与积,格式参照样例输出。若虚部为 0,只输出实部。输入样例: 1 2 3 4 输出样例 4+6i -5+10i
时间: 2024-01-22 10:20:10 浏览: 96
C++实现复数类的设计
第一种实现方式:使用结构体实现复数类
```c++
#include<iostream>
using namespace std;
struct Complex{
int real; // 实部
int image; // 虚部
Complex(int r, int i):real(r),image(i){} // 构造函数
Complex operator+(const Complex& c){ // 重载 + 运算符
return Complex(real+c.real, image+c.image);
}
Complex operator-(const Complex& c){ // 重载 - 运算符
return Complex(real-c.real, image-c.image);
}
};
int main(){
int r1, i1, r2, i2;
while(cin >> r1 >> i1 >> r2 >> i2){
Complex c1(r1, i1), c2(r2, i2);
Complex sum = c1 + c2; // 复数加法
Complex diff = c1 - c2; // 复数减法
if(sum.image >= 0)
cout << sum.real << "+" << sum.image << "i ";
else
cout << sum.real << sum.image << "i ";
if(diff.image >= 0)
cout << diff.real << "+" << diff.image << "i" << endl;
else
cout << diff.real << diff.image << "i" << endl;
}
return 0;
}
```
第二种实现方式:使用类实现复数类
```c++
#include<iostream>
using namespace std;
class Complex{
public: // 公有属性
Complex(int r=0, int i=0):real(r),image(i){} // 构造函数
Complex operator+(const Complex& c){ // 重载 + 运算符
return Complex(real+c.real, image+c.image);
}
Complex operator-(const Complex& c){ // 重载 - 运算符
return Complex(real-c.real, image-c.image);
}
void print(){ // 输出
if(image >= 0)
cout << real << "+" << image << "i ";
else
cout << real << image << "i ";
}
private: // 私有属性
int real; // 实部
int image; // 虚部
};
int main(){
int r1, i1, r2, i2;
while(cin >> r1 >> i1 >> r2 >> i2){
Complex c1(r1, i1), c2(r2, i2);
Complex sum = c1 + c2; // 复数加法
Complex diff = c1 - c2; // 复数减法
sum.print(); // 输出和
diff.print(); // 输出差
cout << endl;
}
return 0;
}
```
第三种实现方式:使用运算符重载函数实现复数类
```c++
#include<iostream>
using namespace std;
class Complex{
public:
Complex(int r=0, int i=0):real(r),image(i){} // 构造函数
friend Complex operator+(const Complex& c1, const Complex& c2){ // 友元函数重载 + 运算符
return Complex(c1.real+c2.real, c1.image+c2.image);
}
friend Complex operator-(const Complex& c1, const Complex& c2){ // 友元函数重载 - 运算符
return Complex(c1.real-c2.real, c1.image-c2.image);
}
void print(){ // 输出
if(image >= 0)
cout << real << "+" << image << "i ";
else
cout << real << image << "i ";
}
private:
int real; // 实部
int image; // 虚部
};
int main(){
int r1, i1, r2, i2;
while(cin >> r1 >> i1 >> r2 >> i2){
Complex c1(r1, i1), c2(r2, i2);
Complex sum = c1 + c2; // 复数加法
Complex diff = c1 - c2; // 复数减法
sum.print(); // 输出和
diff.print(); // 输出差
cout << endl;
}
return 0;
}
```
阅读全文