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

【输入形式】

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

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

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

【输出形式】

实数数据+虚数数据i

 

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

      这个题型无非注意两点

  “+”不能在开头

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

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

 1 #include  <iostream>
 2 using  namespace  std;
 3 struct Complex{
 4         double a,b;
 5 };
 6 void inputComplex(Complex &x){
 7     cin>>x.a>>x.b;
 8 }
 9 Complex add(Complex c1,Complex c2){
10           Complex sum;
11           sum.a=c1.a+c2.a;
12           sum.b=c1.b+c2.b;
13           return sum;
14 }
15  void printComplex(Complex x){
16         if(x.a!=0&&x.b>0&&x.b!=1)cout<<x.a<<"+"<<x.b<<"i"<<'\n';
17         else if(x.a!=0&&x.b==1)cout<<x.a<<"+"<<"i"<<'\n';
18         else if(x.a!=0&&x.b<0)cout<<x.a<<x.b<<"i"<<'\n';
19         else if(x.a!=0&&x.b==0)cout<<x.a<<'\n';
20         else if(x.a==0&&x.b!=0&&x.b!=1)cout<<x.b<<"i"<<'\n';
21         else if(x.a==0&&x.b==1)cout<<"i"<<'\n';
22         else if(x.a==0&&x.b==0)cout<<0<<'\n';
23 
24 
25 
26  }
27 int  main()  {
28         Complex  c1,c2;//定义复数变量
29         inputComplex(c1);//初始化复数变量:从键盘终端输入复数实部和虚部数据
30         inputComplex(c2);
31         printComplex(add(c1,c2));//输出复数变量c1和c2相加后的结果复数。
32         return  0;
33 }

   下面是类的写法

类与对象的笔记

 1 #include  <iostream>
 2 using  namespace  std;
 3 class Complex{
 4  private:
 5     double  realPart;//实部
 6     double  imagPart;//虚部,
 7  public:
 8     void initComplex(double real,double imag){//实现复数成员变量的初始化,
 9         realPart=real;
10         imagPart=imag;
11     };
12     Complex add(Complex x){//函数实现复数的求和运算并返回计算后的复数,
13         Complex ans;
14       ans.realPart=realPart+x.realPart;
15       ans.imagPart=imagPart+x.imagPart;
16       return ans;
17     }
18 
19     void  printComplex();//按要求格式输出复数。
20 
21 };
22 
23 void  Complex::printComplex(){
24         if(realPart!=0){
25             cout<<realPart;
26            if(imagPart==1)cout<<"+i"<<'\n';
27            else if(imagPart>0&&imagPart!=1)cout<<"+"<<imagPart<<"i"<<'\n';
28            else if (imagPart<0&&imagPart!=-1)cout<<imagPart<<"i"<<'\n';
29            else if (imagPart==-1)cout<<"-i"<<'\n';
30         }
31         else if(realPart==0){
32            if(imagPart==1)cout<<"+i"<<'\n';
33            else if(imagPart!=-1&&imagPart!=1&&imagPart!=0)cout<<imagPart<<"i"<<'\n';
34            else if (imagPart==-1)cout<<"-i"<<'\n';
35            else if(imagPart==0)cout<<"0"<<'\n';
36         }
37 
38 
39 }
40 
41 int  main()  {
42         Complex  c1,c2;
43         double  real,imag;
44         cin>>real>>imag;
45         c1.initComplex(real,imag);
46         cin>>real>>imag;
47         c2.initComplex(real,imag);
48         int  sel;
49         cin>>sel;
50         switch(sel){
51         case  1:
52                 c1.printComplex();
53                 break;
54         case  2:
55                 c2.printComplex();
56                 break;
57         case  3:
58                 Complex  c=c1.add(c2);//add函数返回c1和c2相加后的结果复数对象
59                 c.printComplex();
60         }
61         return  0;
62 }

 

 

版权声明:本文为ahijing原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/ahijing/p/12598360.html