您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > C++程序设计实践指导书12
C++程序设计实践上机指导书(第十二次)专业班级学号姓名信息学院2实践成绩评价说明1)上机前充分准备实践材料,对上机内容有程序草稿。(10分)2)独立完成实践任务,对实践过程非常清晰。(30分)3)认真理解知识点,能够与理论知识相结合。(10分)4)在机房遵守上机守则,接受实践指导教师的监督与管理。(20分)5)认真填写实践指导书,写出实践小结。(10分)6)在实践中具备一定的创新思想,能够主动与指导教师探讨。(5分)7)加大实践工作量,主动完成实践指导书中的选做题目。(5分)8)掌握程序调试的方法,认真完成程序调试工作,使程序能够运行(10分)。3上机十二运算符重载一、目的1.理解函数多态性的概念;2.掌握运算符重载的方法;3.体会运算符重载为成员函数与非成员函数的异同,会利用他们对运算符进行重载。二、要求:1.在上课之前,每一个同学必须将题目、程序编写完毕,做好充分的准备。2.所有环节均由每位同学独立完成,严禁抄袭他人结果。三、步骤和内容1、输入书上P309,例8-1。体会函数重载为成员函数的做法。2、在1的基础上添加复数类乘法,将其分别重载为成员函数和非成员函数。复数乘法:(a,b)*(c,d)=(ac-bd,bc+ad)3、在1的基础上,分别实现复数与实数和实数与复数的加法,他们有何不同?应该如何改动?四、思考题1、体会函数重载的两种方法。五、结果分析1.#includeiostreamusingnamespacestd;classComplex{public:Complex(doubler=0.0,doublei=0.0):real(r),imag(i){}Complexoperator+(constComplex&c2)const;Complexoperator-(constComplex&c2)const;voiddisplay()const;private:doublereal;doubleimag;};ComplexComplex::operator+(constComplex&c2)const{returnComplex(real+c2.real,imag+c2.imag);}ComplexComplex::operator-(constComplex&c2)const{returnComplex(real-c2.real,imag-c2.imag);4}voidComplex::display()const{cout(real,imag)endl;}intmain(){Complexc1(5,4),c2(2,10),c3;coutc1=;c1.display();coutc2=;c2.display();c3=c1-c2;coutc3=c1-c2=;c3.display();c3=c1+c2;coutc3=c1+c2=;c3.display();return0;}2.//(a,b)*(c,d)=(ac-bd,bc+ad)#includeiostreamusingnamespacestd;classComplex{private:doublereal;doubleimag;public:voidoutput();//打印输出voidinitSet(doublere,doubleim);//初始化ComplexmatrixMul(ComplexZ1,ComplexZ2);//函数返回值是multirxmul,所以此函数类型为matrixmal};ComplexComplex::matrixMul(ComplexZ1,ComplexZ2){doubletemp1,temp2,temp3;Complexresult;temp1=Z1.real*Z2.imag;temp2=Z1.imag*Z2.real;temp3=(Z1.imag+Z1.real)*(Z2.real-Z2.imag);result.real=temp1+temp3-temp2;result.imag=temp1+temp2;returnresult;}voidComplex::initSet(doublere,doubleim){real=re;imag=im;}voidComplex::output(){if(imag0){5coutreal+imagiendl;}elseif(imag==0){coutrealendl;}elseif(imag0){coutrealimagiendl;}}intmain(){ComplexZ1,Z2,Z3,result;Z1.initSet(1,-2);Z2.initSet(3,-4);cout第一个复数Z1为:endl;Z1.output();cout第二个复数Z2为:endl;Z2.output();result=Z3.matrixMul(Z1,Z2);cout两复数相乘结果的复数为:endl;result.output();return0;}3.#includeiostreamusingnamespacestd;classComplex{//复数类定义public://外部接口Complex(doubler=0.0,doublei=0.0):real(r),imag(i){}//构造函数Complexoperator+(constComplex&c2)const;//运算符+重载成员函数复数+复数Complexoperator-(constComplex&c2)const;//运算符-重载成员函数复数-复数Complexoperator+(double&b);//复数+实数Complexoperator-(double&b);//复数-实数friendComplexoperator-(double&b,Complex&c2);friendComplexoperator+(double&b,Complex&c2);voiddisplay()const;//输出复数//voidget_Comp():private://私有数据成员doublereal;//复数实部doubleimag;//复数虚部};Complexoperator+(double&b,Complex&c2){//复数+实数returnComplex(b+c2.real,c2.imag);}Complexoperator-(double&b,Complex&c2){//复数-实数6returnComplex(b-c2.real,c2.imag);}ComplexComplex::operator+(constComplex&c2)const{//重载运算符函数实现returnComplex(real+c2.real,imag+c2.imag);//创建一个临时无名对象作为返回值}ComplexComplex::operator-(constComplex&c2)const{//重载运算符函数实现returnComplex(real-c2.real,imag-c2.imag);//创建一个临时无名对象作为返回值}ComplexComplex::operator+(double&b){returnComplex(real+b,imag);}ComplexComplex::operator-(double&b){returnComplex(b-real,imag);}voidComplex::display()const{cout(real,imag)endl;}intmain(){//主函数Complexc1(5,4),c2(2,10),c3,c4,c5;//定义复数类的对象coutc1=;c1.display();coutc2=;c2.display();c3=c1-c2;//使用重载运算符完成复数减法coutc3=c1-c2=;c3.display();c3=c1+c2;//使用重载运算符完成复数加法coutc3=c1+c2=;c3.display();doublei=3;couti=3endl;c3=c1+i;coutc3=c1+i=;c3.display();c3=c1-i;coutc3=c1-i=;c3.display();c3=i+c1;coutc3=i+c1=;c3.display();c3=i-c1;coutc3=i-c1=;c3.display();return0;}7六、指导教师评阅成绩
本文标题:C++程序设计实践指导书12
链接地址:https://www.777doc.com/doc-5562078 .html