问题描述】一个完整的复数由实数部分和序数部分构成,请定义一个复数类,含有两个私有属性realPart和imagPart分别表示复数的实部和虚部,三个成员函数:initComplex实现复数成员变量的初始化,add函数实现复数的求和运算并返回计算后的复数,printComplex按要求格式输出复数。

【输入形式】

第一行:第一个复数的实数数据部分  第一个复数的虚数数据部分

第二行:第二个复数的实数数据部分  第二个复数的虚数数据部分

第三行:输入一个整数(1-3),选择执行switch语句

【输出形式】

实数数据+虚数数据i

就这道题,在我们学结构体的时候出现过一次类似的,那一次是要求用结构体写的,

这个题型无非注意两点

  “+”不能在开头

  系数为-1,1时要省略系数

下面是代码(结构体写法)//有点丑

 #include  <iostream>
using namespace std;
struct Complex{
double a,b;
};
void inputComplex(Complex &x){
cin>>x.a>>x.b;
}
Complex add(Complex c1,Complex c2){
Complex sum;
sum.a=c1.a+c2.a;
sum.b=c1.b+c2.b;
return sum;
}
void printComplex(Complex x){
if(x.a!=&&x.b>&&x.b!=)cout<<x.a<<"+"<<x.b<<"i"<<'\n';
else if(x.a!=&&x.b==)cout<<x.a<<"+"<<"i"<<'\n';
else if(x.a!=&&x.b<)cout<<x.a<<x.b<<"i"<<'\n';
else if(x.a!=&&x.b==)cout<<x.a<<'\n';
else if(x.a==&&x.b!=&&x.b!=)cout<<x.b<<"i"<<'\n';
else if(x.a==&&x.b==)cout<<"i"<<'\n';
else if(x.a==&&x.b==)cout<<<<'\n'; }
int main() {
Complex c1,c2;//定义复数变量
inputComplex(c1);//初始化复数变量:从键盘终端输入复数实部和虚部数据
inputComplex(c2);
printComplex(add(c1,c2));//输出复数变量c1和c2相加后的结果复数。
return ;
}

下面是类的写法

类与对象的笔记

点这里查看笔记↑↑↑↑

 #include  <iostream>
using namespace std;
class Complex{
private:
double realPart;//实部
double imagPart;//虚部,
public:
void initComplex(double real,double imag){//实现复数成员变量的初始化,
realPart=real;
imagPart=imag;
};
Complex add(Complex x){//函数实现复数的求和运算并返回计算后的复数,
Complex ans;
ans.realPart=realPart+x.realPart;
ans.imagPart=imagPart+x.imagPart;
return ans;
} void printComplex();//按要求格式输出复数。 }; void Complex::printComplex(){
if(realPart!=){
cout<<realPart;
if(imagPart==)cout<<"+i"<<'\n';
else if(imagPart>&&imagPart!=)cout<<"+"<<imagPart<<"i"<<'\n';
else if (imagPart<&&imagPart!=-)cout<<imagPart<<"i"<<'\n';
else if (imagPart==-)cout<<"-i"<<'\n';
}
else if(realPart==){
if(imagPart==)cout<<"+i"<<'\n';
else if(imagPart!=-&&imagPart!=&&imagPart!=)cout<<imagPart<<"i"<<'\n';
else if (imagPart==-)cout<<"-i"<<'\n';
else if(imagPart==)cout<<""<<'\n';
} } int main() {
Complex c1,c2;
double real,imag;
cin>>real>>imag;
c1.initComplex(real,imag);
cin>>real>>imag;
c2.initComplex(real,imag);
int sel;
cin>>sel;
switch(sel){
case :
c1.printComplex();
break;
case :
c2.printComplex();
break;
case :
Complex c=c1.add(c2);//add函数返回c1和c2相加后的结果复数对象
c.printComplex();
}
return ;
}

类与对象 CG作业1. 复数类Comple 。的更多相关文章

  1. Python面向对象02/类的空间问题、类与对象之间的关系、类与类之间的关系

    Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 目录 Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 1. 类的空间问题 2. 类与对象之间 ...

  2. python 面向对象专题(二):类的空间问题、类与对象之间的关系、类与类之间的关系

    https://www.cnblogs.com/liubing8/p/11308127.html 目录 Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 1. 类的空间问题 ...

  3. JAVA类和对象课后作业

    1.使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数.请写一个类,在任何时候都可以向它查询"你已经创建了多少个对象?" 代码: //显示类 //YiMingLai 2 ...

  4. l类与对象课后作业

    java 的初始化规律 执行类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个“排在前面”. 执行类的构造函数. 类的初始化块不接收任何的参数,而且只要一创建类的对象,它们就会被执行.因 ...

  5. python的类和对象——番外篇(类的静态字段)

    什么是静态字段 在开始之前,先上图,解释一下什么是类的静态字段(我有的时候会叫它类的静态变量,总之说的都是它.后面大多数情况可能会简称为类变量.): 我们看上面的例子,这里的money就是静态字段,首 ...

  6. java入门学习(4)— 类,对象理解,如何创建类,对象

    1.什么是类?具有一定相同的属性的对象的集合就叫类.2.对象:类的具体实例,就是类的实例化.比如学生是一个类(student),那学生里面的小红就是一个对象,一个有学生的属性的对象.3.如何定义一个类 ...

  7. python cookbook第三版学习笔记十二:类和对象(三)创建新的类或实例属性

    先介绍几个类中的应用__getattr__,__setattr__,__get__,__set__,__getattribute__,. __getattr__:当在类中找不到attribute的时候 ...

  8. C++复习:类和对象

    类和对象 基本概念 1)类.对象.成员变量.成员函数 2)面向对象三大概念 封装.继承.多态 3)编程实践     类的定义和对象的定义,对象的使用     求圆形的面积     定义Teacher类 ...

  9. Objective-C Runtime 运行时之一:类与对象

    Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理.这种动态语言的优势在于:我们写代码时更具灵活性,如我们可以把消息转发给我们想要的对象,或者随意交换一 ...

随机推荐

  1. Dubbo源码学习(二)

    @Adaptive注解 在上一篇ExtensionLoader的博客中记录了,有两种扩展点,一种是普通的扩展实现,另一种就是自适应的扩展点,即@Adaptive注解的实现类. @Documented ...

  2. 一致性哈希算法(consistent hashing)PHP实现

    一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似.一致性哈希修正了CARP使用的简单哈希 ...

  3. 使用Python生成自己的特色二维码

    二维码又称二维条码,常见的二维码为QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据 ...

  4. numpy.random模块用法总结

    from numpy import random numpy.random.uniform(low=0.0, high=1.0, size=None) 生出size个符合均分布的浮点数,取值范围为[l ...

  5. tfgan折腾笔记(二):核心函数详述——gan_model族

    定义model的函数有: 1.gan_model 函数原型: def gan_model( # Lambdas defining models. generator_fn, discriminator ...

  6. MySQL基础篇(05):逻辑架构图解和InnoDB存储引擎详解

    本文源码:GitHub·点这里 || GitEE·点这里 一.MySQL逻辑架构 1.逻辑架构图 基于下面的逻辑架构图,可以大致熟悉MySQL各个架构组件之间的协同工作关系. 很经典的C/S架构风格, ...

  7. 关于AJAX方法

    ajax的方法每次都记不住这次特意找了资料做了归总: 在这里记录一下. 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为String类型的参数, ...

  8. javascript功能插件大集合 前端常用插件 js常用插件

    转载来源:https://github.com/jobbole/aw... 包管理器管理着 javascript 库,并提供读取和打包它们的工具.•npm – npm 是 javascript 的包管 ...

  9. Linux进程操作记录

    关于Gunicorn如何终止进程: 1.用进程树显示主进程PID: pstree -ap | grep gunicorn 2.如果有daemon进程无法用kill -9删除(可能是因为daemon屏蔽 ...

  10. 论JS函数传参时:值传递与引用传递的区别

    什么是值传递:值传递是指在调用函数时将实际参数(实参)复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数. 值传递的总结:也就是说,将实参复制到函数中的这个过程叫值传递 什么是 ...