实现复数类

题目2:实现复数类,具体要求如下:
(1)数据成员包含实部real与虚部image;
(2)构造函数:给复数的数据成员赋初值。如果不给任何初始值,则默认实部real=虚部image=0;
(3)设计成员函数实现复数的加减运算。
主函数:

int main()
{
    Complex c1(2, 1), c2(6, -2), c3(-2, -1);
    cout<<"c1 = ";
    c1.show();
    cout<<"c2 = ";
    c2.show();
    cout<<"c3 = ";
    c3.show();
    Complex c4 = c1.Add(c2);
    cout<<"c4 = c1+c2 = ";
    c4.show();
    Complex c5 = c1.Sub(c2);
    cout<<"c5 = c1-c2 = ";
    c5.show();
    cout<<"c6 = c1+c3 = ";
    Complex c6 = c1.Add(c3);
    c6.show();
    return 0;
}

解题思路:
首先定义一个Complex的类,该类有两个私有成员变量real和image,分别表示复数的实部和虚部,接着定义了一个构造函数,它接受两个参数,如果没有提供参数,则默认值为0。接着写出用show函数打印复数的值,分实部和虚部多种情况考虑,接着用Add和Sub函数分别计算两个复数的和与差,在main函数中,创建三个复数对象c1、c2和c3,并调用它们的show函数来显示它们的值。然后计算c1和c2的和,存储在c4中,以及c1和c2的差,存储在c5中,并显示结果。最后,计算c1和c3的和,存储在c6中,并显示结果。
代码:

#include <iostream>
using namespace std;
class Complex
{
private:
    double real;
    double image;
public:
    Complex(double r = 0,double i = 0)
    :real(r),image(i){}
    void show()const
    {
        if(real == 0 && image == 0)
        {
            cout<<0<<endl;
        }
        else if(real != 0 && image == 0)
        {
            cout<<real<<endl;
        }
        else if(real == 0 && image != 0)
        {
            if(image == 1)
            {
                cout<<"i"<<endl;
            }
            else if(image == -1)
            {
                cout<<"-"<<"i"<<endl;
            }
            else
            {
                cout<<image<<"i"<<endl;
            }
        }
        else if(real != 0 && image != 0)
        {
           if(image < 0)
           {
               if(image == -1)
               {
                   cout<<real<<"-"<<"i"<<endl;
               }
               else
               {
                   cout<<real<<image<<"i"<<endl;
               }
           }
           else if(image > 0)
           {
               if(image == 1)
               {
                   cout<<real<<"+"<<"i"<<endl;
               }
               else
               {
                   cout<<real<<"+"<<image<<"i"<<endl;
               }
           }
        }
    }
    Complex Add(const Complex& other)const
    {
        return Complex(real + other.real,image + other.image);
    }
    Complex Sub(const Complex& other)const
    {
        return Complex(real - other.real,image - other.image);
    }
};
int main()
{
    Complex c1(2, 1), c2(6, -2), c3(-2, -1);
    cout<<"c1 = ";
    c1.show();
    cout<<"c2 = ";
    c2.show();
    cout<<"c3 = ";
    c3.show();
    Complex c4 = c1.Add(c2);
    cout<<"c4 = c1+c2 = ";
    c4.show();
    Complex c5 = c1.Sub(c2);
    cout<<"c5 = c1-c2 = ";
    c5.show();
    cout<<"c6 = c1+c3 = ";
    Complex c6 = c1.Add(c3);
    c6.show();
    return 0;
}

运行结果截图:
在这里插入图片描述

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值