C++定义复数类(Complex)

题目描述:

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

运行结果展示:

小小感悟:

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

  • 21
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值