题目描述:
定义一个复数类Complex,使得下面的代码能够工作:
Complex c1(3, 5); //用复数3+5i初始化c1
Complex c2 = 4.5; //用实参4.5作为实部初始化c2,虚部为0
c1.add(c2); //将c1与c2相加,结果保存在c1中
c1.show(); //将c1输出(这时结果应该是7.5+5i)
输入格式:
每组输入2行,第一行是空格隔开的实部、虚部,用于初始化第一个复数。第二行是一个实数,用于初始化第二个复数。
输出格式:
使用成员函数show()输出第一个复数和第二个复数相加的结果
输入样例
3 5
4.5
3.6 0
4
0 5.6
-9.7
12 -9.5
-15
3.4 5
-3.4
0 0
0
输出样例 :
7.5+5i
7.6
-9.7+5.6i
-3-9.5i
5i
0
分析思路:
初始化的过程便是要我们自己来定义两个构造函数(构造函数可以用来初始化参数),接着add函数中有点巧妙的是用c1中来调用类内的add函数其中add内的输入参数是Complex中的一个构造函数(这里的c2).紧接着对c1进行一个成员函数(show)调用即可。
另外需要注意的是,在show函数中,需要留意实数,虚数的不同情况的讨论,以及“+”或者“-”符号表示。
代码展示:
#include<iostream>
using namespace std;
class Complex {
private:
double shi, xu;
public:
Complex(double a, double b);//有两个初始化值的构造函数
Complex(double c);//只初始化一个值的构造函数
void add(Complex J);//add函数定义
void show();//函数的结果输出
};
//两个初始化值的构造函数,实部和虚部
Complex::Complex(double a, double b) {
shi = a;
xu = b;
}
//只初始化实部
Complex::Complex(double c) {
shi = c;
}
void Complex::add(Complex J) {
shi = shi + J.shi;
xu = xu;
}
void Complex::show() {
if (shi == 0 && xu == 0) {
cout << 0 << endl;
}
else if (shi == 0) {
cout << xu << "i" << endl;
}
else if (xu == 0) {
cout << shi << endl;
}
else {
if (xu > 0) {
cout << shi << "+" << xu << "i" << endl;
}
else if (xu < 0) {
cout << shi << xu << "i" << endl;
}
}
}
int main() {
double x, y, z;
while (cin >> x >> y >> z) {
Complex c1(x, y);//这里是调用两个初始化值的构造函数语法
Complex c2(z);//这里是调用一个初始化值的构造函数语法
c1.add(c2);//这里是利用c1类来调用参数是c2的add成员函数,c1提供一个shi加上c2的一个shi合成一个新的shi
c1.show();//结果输出
}
}
运行结果展示:
小小感悟:文章来源:https://www.toymoban.com/news/detail-409474.html
其实类就是一个封装起来的一个类型,其中有一些语法需要我们注意。main函数里面定义Complex c1这个c1就是类的一个名字,在c1中我们仍可以利用它来作为参数基础调用类内成员函数。其实类是一个非常好用的小知识点,用了类我们可以通过函数名来表示用途,用的人也不用在意函数具体怎么实现,直接用就可以了,而且主函数可以非常简洁。文章来源地址https://www.toymoban.com/news/detail-409474.html
到了这里,关于C++定义复数类(Complex)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!