题目描述:

定义一个复数类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();//结果输出
     }
 }

运行结果展示:

python定义复数0数组_成员函数

小小感悟:

 其实类就是一个封装起来的一个类型,其中有一些语法需要我们注意。main函数里面定义Complex c1这个c1就是类的一个名字,在c1中我们仍可以利用它来作为参数基础调用类内成员函数。其实类是一个非常好用的小知识点,用了类我们可以通过函数名来表示用途,用的人也不用在意函数具体怎么实现,直接用就可以了,而且主函数可以非常简洁。