C++面向程序設(shè)計(第二版)課后習(xí)題答案解析_第1頁
C++面向程序設(shè)計(第二版)課后習(xí)題答案解析_第2頁
C++面向程序設(shè)計(第二版)課后習(xí)題答案解析_第3頁
C++面向程序設(shè)計(第二版)課后習(xí)題答案解析_第4頁
C++面向程序設(shè)計(第二版)課后習(xí)題答案解析_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

C++?向程序設(shè)計(第?版)課后習(xí)題答案解析最近沒什么?情整理零散的知識點(diǎn),就整理?下第四章的課后習(xí)題答案。1.定義?個復(fù)數(shù)類Complex,重載運(yùn)算符“+”,使之能?于復(fù)數(shù)的加法運(yùn)算。將運(yùn)算符函數(shù)重載為?成員函數(shù),?友元的普通函數(shù)。編程序,求兩個復(fù)數(shù)之和。源代碼:1#include<iostream>2#include<stdlib.h>3usingnamespacestd;4classComplex5{public:67Complex(){real=0;imag=0;}Complex(doubledr,ouble//獲取實(shí)部函數(shù)//獲取虛部函數(shù)display();//顯?函數(shù)i){real=r;imag=i;}8doublget_real();9doublget_imag();10void11private:12doublreal;13doubleimag;14};1516//實(shí)現(xiàn)具體的函數(shù)17doubleComplex::get_real()18{19returnreal;20}21doubleComplex::get_imag()22{23returnimag;24}25voidComplex::display()26{27"cout<<("<<real<<","<<imag<<"i)"<<endl;28}29//重載運(yùn)算符“+”30Complexoperator+(Complex&c1,Complex&c2)31{32returnComplex(c1.get_real()+c2.get_real(),c1.get_imag()+c2.get_imag());33}343536intmain()37{3839404142Complex3,4),5c,21-(0)c1(,c3;c3=c1+c2;"cout<<c3=";c3.display();system("pause");43return0;44}2.定義?個復(fù)數(shù)類Complex,重載運(yùn)算符“+”,“-”,“*”,“/”,使之能?于復(fù)數(shù)的加,減,乘,除。運(yùn)算符重載函數(shù)作為Complex類的成員函數(shù)。編程序,分別求兩個復(fù)數(shù)之和、差、積和商。源程序:1#include<iostream>2#include<stdlib.h>3usingnamespacestd;4classComplex5{6public:78Complex(){real=0;imag=0;}Complex(doubledr,oublei){real=r;imag=i;}9//重載函數(shù):加、減、乘、除10Copmplexerat+(Cormplex&c2);Copmplexerator-(Complex&c2);Copmplexerator*(Complex&c2);Copmplexerator/(Complex&c2);11121314voiddisplay();15private:16doublreal;17doubleimag;18};19ComplexComplex::operat+(Cormplex&c2)20{2122Complexc;c.real=real+c2.real;

23c.imag=imag+c2.imag;returnc;2425}26ComplexComplex::operator-(Complex&c2)27{28Complexc;29c.real=real-c2.real;c.imag=imag-c2.imag;returnc;303132}33ComplexComplex::operator*(Complex&c2)34{35Complexc;36c.real=real*c2.real-imag*c2.imag;c.imag=imag*c2.real+real*c2.imag;returnc;373839}40ComplexComplex::operator/(Complex&c2)41{42Complexc;43c.real=(real*c2.real+imag*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);c.imag=(imag*c2.real-real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);returnc;444546}47voidComplex::display()48{49cout<<"("<<real<<","<<imag<<"i)"<<endl;50}5152intmain()53{54555657585960616263646566676869}Complexc1(3,4),c2(5,-10),c3;c3=c1+c2;cout<<"c1+c2=";c3.display();c3=c1-c2;cout<<"c1-c2=";c3.display();c3=c1*c2;cout<<"c1*c2=";c3.display();c3=c1/c2;cout<<"c1/c2=";c3.display();system("pause");return0;3.定義?個復(fù)數(shù)類函數(shù)Complex,重載運(yùn)算符“+”,使之能?于復(fù)數(shù)的加法運(yùn)算。參加運(yùn)算的兩個運(yùn)算量都可以是類對象,也可以其中有?個是整數(shù),順序任意。如c1+c2,i+c1,c1+i均合法(設(shè)i為整數(shù),c1,c2為復(fù)數(shù))。編程序,分別求兩個復(fù)數(shù)之和、整數(shù)和復(fù)數(shù)之和。源代碼:1#include<iostream>2#include<stdlib.h>3usingnamespacestd;4classComplex5{6public:7Complex(){real=0;imag=0;}Complex(doubler,doublei){real=r;imag=i;}//定義重載復(fù)數(shù)加法89101112131415Complexoperator+(Complex&c2);//定義重載整數(shù)加法Complexoperator+(int&i);//定義友元類重載復(fù)數(shù)、整數(shù)加法函數(shù)friendComplexoperator+(int&,Complex&);voiddisplay();16private:17doublereal;doubleimag;1819};2021ComplexComplex::operator+(Complex&c)22{23returnComplex(real+c.real,imag+c.imag);24}25ComplexComplex::operator+(int&i)26{27returnComplex(real+i,imag);28}29voidComplex::display()30{

31cout<<"("<<real<<","<<imag<<"i)"<<endl;32}33Complexoperator+(int&i,Complex&c)34{35returnComplex(i+c.real,c.imag);36}3738intmain()39{4041424344454647484950515253}Complexc1(3,4),c2(5,-10),c3;inti=5;c3=c1+c2;cout<<"c1+c2=";c3.display();c3=i+c1;cout<<"i+c1=";c3.display();c3=c1+i;cout<<"c1+i=";c3.display();system("pause");return0;4.有兩個矩陣a和b,均為2?3列。求兩個矩陣之和,重載運(yùn)算符“+”,使之能?于矩陣相加。如c=a+b。源代碼:1#include<iostream>2#include<stdlib.h>3usingnamespacestd;4classMatrix5{6public:78Matrix();//定義友元類加法重載函數(shù)friendMatrixoperator+(Matrix&,Matrix&);//定義矩陣輸?函數(shù)voidinput();910111213//定義矩陣輸出函數(shù)voiddisplay();14private:15//定義兩?三列的矩陣16intmat[2][3];17};18Matrix::Matrix()19{20212223242526272829}for(inti=0;i<2;i++){for(intj=0;j<3;j++){mat[i][j]=0;}}30//矩陣加法運(yùn)算函數(shù)31Matrixoperator+(Matrix&a,Matrix&b)32{3334353637383940414243}Matrixc;for(inti=0;i<2;i++){for(intj=0;j<3;j++){c.mat[i][j]=a.mat[i][j]+b.mat[i][j];}}returnc;44//矩陣控制臺輸?具體數(shù)據(jù)函數(shù)45voidMatrix::input()46{474849505152535455cout<<"inputvalueofmatrix:"<<endl;for(inti=0;i<2;i++){for(intj=0;j<3;j++){cin>>mat[i][j];}}

5657}58//顯?矩陣數(shù)據(jù)函數(shù)59voidMatrix::display()60{616263646566676869}for(inti=0;i<2;i++){for(intj=0;j<3;j++){cout<<mat[i][j]<<"";}cout<<endl;}70intmain()71{72737475767778798081828384}Matrixa,b,c;a.input();b.input();cout<<endl<<"Matrixa:"<<endl;a.display();cout<<endl<<"Matrixb:"<<endl;b.display();c=a+b;cout<<endl<<"Matrixc=Matrixa+Matrixb:"<<endl;c.display();system("pause");return0;5.在第四題的基礎(chǔ)上,重載流插?運(yùn)算符“<<”和流提取運(yùn)算符“>>”,使之能?于矩陣的輸?和輸出。源程序:1#include<iostream>2#include<stdlib.h>3usingnamespacestd;4classMatrix5{6public:78Matrix();//定義重載運(yùn)算符“+”函數(shù)9friendMatrixoperator+(Matrix&,Matrix&);//定義重載流插?運(yùn)算符“<<”函數(shù)friendostream&operator<<(ostream&,Matrix&);//定義重載流提取運(yùn)算符“>>”函數(shù)friendistream&operator>>(istream&,Matrix&);1011121314private:15//定義2?3列矩陣16intmat[2][3];17};18//初始化矩陣19Matrix::Matrix()20{212223242526272829}for(inti=0;i<2;i++){for(intj=0;j<3;j++){mat[i][j]=0;}}30//重載運(yùn)算符“+”函數(shù)31Matrixoperator+(Matrix&a,Matrix&b)32{333435363738394041424344}45Matrixc;for(inti=0;i<2;i++){for(intj=0;j<3;j++){c.mat[i][j]=a.mat[i][j]+b.mat[i][j];}}returnc;46//重載流提取運(yùn)算符“>>”函數(shù),輸?矩陣數(shù)據(jù)47istream&operator>>(istream&in,Matrix&m)48{49cout<<"inputvalueofmatrix:"<<endl;

5051525354555657585960}for(inti=0;i<2;i++){for(intj=0;j<3;j++){in>>m.mat[i][j];}}returnin;61//重載流插?運(yùn)算符“<<”函數(shù),輸出矩陣數(shù)據(jù)62ostream&operator<<(ostream&out,Matrix&m)63{646566676869707172}for(inti=0;i<2;i++){for(intj=0;j<3;j++){out<<m.mat[i][j]<<"";}out<<endl;}returnout;73intmain()74{75767778798081828384}Matrixa,b,c;cin>>a;cin>>b;cout<<endl<<"Matrixa:"<<endl<<a<<endl;cout<<endl<<"Matrixb:"<<endl<<b<<endl;c=a+b;cout<<endl<<"MatrixC=Matrixa+Matrixb:"<<endl<<c<<endl;system("pause");return0;6.請編寫程序,處理?個復(fù)數(shù)與?個double數(shù)相加的運(yùn)算,結(jié)果存放在?個double型的變量dl中,輸出dl的值,再以復(fù)數(shù)的形式輸出此值。定義Complex(復(fù)數(shù))類,在成員函數(shù)中包含重載類型轉(zhuǎn)換運(yùn)算符:operatordouble(){returnreal;}源代碼:1#include<iostream>2#include<stdlib.h>3usingnamespacestd;4classComplex5{6public:78Complex(){real=0;imag=0;}Complex(doubler){real=r;imag=0;}Complex(doubler,doublei){real=r;imag=i;}//重載類型轉(zhuǎn)換運(yùn)算符函數(shù)9101112operatordouble(){returnreal;}voiddisplay();13private:14doublereal;doubleimag;1516};17voidComplex::display()18{19cout<<"("<<real<<","<<imag<<")"<<endl;20}21intmain()22{23242526272829303132}Complexc1(3,4),c2;doubled1;d1=2.5+c1;cout<<"d1="<<d1<<endl;c2=Complex(d1);cout<<"c2=";c2.display();system("pause");return0;7.擴(kuò)展:有兩個3?3列的矩陣,求兩個矩陣的和、差、積,重載運(yùn)算符“+”,“-”,“*”。源代碼:1#include<iostream>2#include<stdlib.h>3usingnamespacestd;

4classMatrix5{6public:78Matrix();//定義重載加法運(yùn)算函數(shù)9friendMatrixoperator+(Matrix&,Matrix&);//定義重載減法運(yùn)算函數(shù)101112131415friendMatrixoperator-(Matrix&,Matrix&);//定義重載乘法運(yùn)算函數(shù)friendMatrixoperator*(Matrix&,Matrix&);voidinput();voiddisplay();16private:17//定義3?3列矩陣intmat[3][3];1819};20//初始化矩陣21Matrix::Matrix()22{23for(inti=0;i<3;i++)24{25for(intj=0;j<3;j++)26{27mat[i][j]=0;}282930}3132}33//重載加法運(yùn)算函數(shù),34Matrixoperator+(Matrix&a,Matrix&b)35{363738394041424344454647}Matrixc;for(inti=0;i<3;i++){for(intj=0;j<3;j++){//矩陣加法為?列號相同的元素相加為該位置的數(shù)據(jù)c.mat[i][j]=a.mat[i][j]+b.mat[i][j];}}returnc;48//重載減法運(yùn)算函數(shù),矩陣減法為?列號相同的元素相減為該位置的數(shù)據(jù)49Matrixoperator-(Matrix&a,Matrix&b)50{51Matrixc;52for(inti=0;i<3;i++)53{54for(intj=0;j<3;j++)55{56c.mat[i][j]=a.mat[i][j]-b.mat[i][j];57}}585960returnc;61}62//重載乘法運(yùn)算函數(shù),第?個矩陣的第i?的第?個元素,逐?與第?個矩陣的i?的j列上的所有元素之積的和,為該i?j列的數(shù)據(jù)63Matrixoperator*(Matrix&a,Matrix&b)64{6566676869707172737475767778}//intmat;Matrixc;for(inti=0;i<3;i++){for(intj=0;j<3;j++){//矩陣乘法運(yùn)算的核?步驟,k為控制列乘的數(shù)據(jù)for(intk=0;k<3;k++)c.mat[i]

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論