实验要求:
定义一个复数类Complex,使得下面的代码能够工作:
Complex c1(3,5); //用复数3+5i初始化c1;
Compex c2=4.5; //用实数4.5初始化c2
c1.add(c2); //将c1与c2相加,结果保存在1中
c1.show(); //将c1输出(这时的结果应该是7.5+5i)
1 #include<iostream> 2 #include<cmath> 3 using namespace std; 4 class Complex{ 5 public: 6 Complex(float real1,float imaginary1=0)//赋默认值 7 { 8 real=real1; 9 imaginary=imaginary1; 10 } 11 void add(Complex &t)//两个复数相加 12 { 13 real=real+t.real; 14 imaginary=imaginary+t.imaginary; 15 } 16 void show()//打印复数 17 { 18 cout<<real<<"+"<<imaginary<<"i"<<endl; 19 } 20 float mod()//计算复数的模 21 { 22 float m; 23 m=sqrt(real*real+imaginary*imaginary); 24 return m; 25 } 26 Complex(Complex &c);//复制构造函数 27 private: 28 float real; 29 float imaginary; 30 }; 31 Complex::Complex(Complex &c)//复制构造函数的实现 32 { 33 real=c.real; 34 imaginary=c.imaginary; 35 } 36 int main() 37 { 38 Complex c1(3,5); 39 cout<<"该复数c1的值为:"; 40 c1.show(); 41 Complex c2(4.5);//检验默认初始值 42 cout<<"复数c2的值为:"; 43 c2.show(); 44 Complex c3(c1);//将c1的值赋给c3,复制构造函数 45 cout<<"复数c3的值为:" ; 46 c3.show(); 47 c1.add(c2);//检验复数相加 48 cout<<"c3与c1相加赋给c1,此时c1为:"; 49 c1.show(); 50 cout<<"同时c1的模变为:" ; 51 cout<<c1.mod(); 52 return 0; 53 }
实验结果:
实验结论:
对于类的实验,题目中赋值的格式存在问题,在题目中complex c2=4.5在devc中会报错,错误如下:
这样赋值会产生歧义,而改成complex c2(4.5),可以避免上类情况,使用“=”只能对于含有一个变量的值赋值,而complex中定义了real和imaginary两个变量,所以无法按照题目方式赋值。
互评地址:
https://www.cnblogs.com/wmy0621/
https://www.cnblogs.com/zxz2425405395/
https://www.cnblogs.com/mzx1999/