题目描述:

定义一个复数类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中我们仍可以利用它来作为参数基础调用类内成员函数。其实类是一个非常好用的小知识点,用了类我们可以通过函数名来表示用途,用的人也不用在意函数具体怎么实现,直接用就可以了,而且主函数可以非常简洁。

C++定义复数类(Complex)相关推荐

  1. 定义复数类Complex,重载运算符“+”,使之用于复数的加法运算

    定义复数类Complex,重载运算符"+",使之用于复数的加法运算.将运算符函数重载为非成员.非友元的普通函数. C++代码实现: #include<iostream> ...

  2. 利用友元函数与友元类定义复数类,实现基本运算

    定义复数类Complex,使用友元,完成复数的加法.减法.乘法.除法运算,以及对复 数的输出. 直接上代码: #include "iostream" using namespace ...

  3. 复数类 complex

    定义复数类Complex,包括两个double型的数据成员real和image,要求对+.-../.+=.-+.=./=.几个运算符进行重载以实现复数的运算,并进行验证. #define _CRT_S ...

  4. 定义一个复数类Complex,重载运算符+

    定义一个复数类Complex,重载运算符"+".使之能用于复数的加法运算,将运算符函数重载为非成员.非友员的普通函数.编写程序求2个复数之和. #include<iostre ...

  5. 定义一个复数类Complex,重载运算符“+”,

    定义一个复数类Complex,重载运算符"+",使之能用于复数的加法运算.参加运算的两个运算符可以都是类对象.也可以其中一个是整数,顺序任意.例如:c1+c2,i+c1,c1+i ...

  6. 1、定义一个复数类Complex,使得下面的代码能够工作。 Complex c1(3,5); Complex c2=4.5; c1.add(c2); c1.show();

    一.问题描述 1.定义一个复数类Complex,使得下面的代码能够工作. Complex c1(3,5); Complex c2=4.5; c1.add(c2); c1.show(); #includ ...

  7. 定义一个复数类Complex,重载运算符“+”,“ -”,“*”,“/”使之能用于计算两个复数的加减乘除。

    定义一个复数类Complex,重载运算符"+"," -","*","/"使之能用于计算两个复数的加减乘除.运算符重载函数 ...

  8. 定义一个复数类Complex

    3. 定义一个复数类 Complex ,使得代码能够进行下面的工作 (20 分 ) : Complex c1(3, 5); // 用复数 3+5i 初始化 c1 Complex c2 = 4.5; / ...

  9. 设计复数类 Complex继承于数字类 Number,私有成员变量包括 double类型的实部rea(父类 Number中已定义)和虚部imag,公有成员方法包括两个构造方法(一个不带参数的和一个带两

    ​ 设计复数类 Complex继承于数字类 Number,私有成员变量包括 double类型的实部rea(父类 Number中已定义)和虚部imag,公有成员方法包括两个构造方法(一个不带参数的和一个 ...

  10. python定义一个复数类complex、并实现复数相加_用java定义一个复数类Complex,能够创建复数对象,并且实现复数之间的加、减运算...

    题目: 用java定义一个复数类Complex,能够创建复数对象,并且实现复数之间的加.减运算 复数具有实部和虚部两部分,如2+5i就是一个复数,其中2为实部,5i为虚部;两复数相加时,实部与实部相加 ...

最新文章

  1. 五分钟搭建一个基于BERT的NER模型
  2. Go变量地址值和指针的关系
  3. linux go环境安装和基本项目结构
  4. 如何撬动机器学习的冰山一角?
  5. vue中两种路由跳转拼接参数
  6. matlab新建脚本java报错,Matlab(四)脚本的使用
  7. #openstack centos6 centos7 kvm镜像制作
  8. 27. 安全 HTTP (2)
  9. sql server代码创建数据库详细过程
  10. CH模拟赛 皇后游戏
  11. Remix部署契约时出现错误:creation of Ballot errored: Error encoding arguments: Error: expected array value (ar
  12. java利用itext编辑pdf
  13. 透明质酸(玻尿酸)ELISA试剂盒解决方案
  14. 其他-IMU与AHRS区别
  15. 日本用计算机模拟核试验,法国:将用超级计算机模拟核试验
  16. 自然语言处理研究报告
  17. 在 Chrome 中清除、启用和管理 Cookie
  18. opencv的极线几何
  19. R语言_电信客户流失数据分析
  20. centos搭建samba服务器

热门文章

  1. Verilog语言要素(三)
  2. 每日案例(第五期):智慧金融11-12 | 知识图谱实践案例集(速读版)
  3. java保龄球计分_自己写的java保龄球记分
  4. shell命令进制转换
  5. Java 反射机制:(三)类的加载
  6. 关于B树的思考:m阶B树的非根非叶节点为什么要至少为ceil(m/2)个孩子? c/c++描述
  7. 小程序入门说明以及资料整理
  8. ddd软件设计两个人的工作
  9. 2004年1月六级听力原文的启示:每顿饭后刷牙牙齿好
  10. intel android 平板,IT百科之英特尔芯平板