C++大學教程第五版課后習題答案_第1頁
C++大學教程第五版課后習題答案_第2頁
C++大學教程第五版課后習題答案_第3頁
C++大學教程第五版課后習題答案_第4頁
C++大學教程第五版課后習題答案_第5頁
免費預覽已結束,剩余29頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、C+大學基礎教程課后答案(DEITEL 版3.11GradeBoo/I定義:#include/programusesC+standardstringclassusingstd:string;classGradeBookpublic:/constructorinitializescoursenameandinstructornameGradeBook(string,string);voidsetCourseName(string);/functiontosetthecoursenamestringgetCourseName();/functiontoretrievethecoursenamevo

2、idsetInstructorName(string);/functiontosetinstructorstringgetInstructorName();/functiontoretrieveinstructornamevoiddisplayMessage();/displaywelcomemessageandinstructorprivate:stringcourseName;/coursenameforthisGradeBookstringinstructorName;/instructornameforthisGradeBook;/endclassGradeBook類成員函數(shù):#inc

3、ludeusingstd:cout;usingstd:endl;#includeGradeBook.h/constructorinitializescourseNameandinstructorName/withstringssuppliedasargumentsGradeBook二GradeBook(stringcourse,stringinstructor)setCourseName(course);/initializescourseNamesetInstructorName(instructor);/initialiZesinstructorName/endGradeBookconst

4、ructor/functiontosetthecoursenamevoidGradeBook二setCourseName(stringname)courseName=name;/storethecoursename/endfunctionsetCourseName/functiontoretrievethecoursenamestringGradeBook:getCourseName()returncourseName;/endfunctiongetCourseName/functiontosettheinstructornamevoidGradeBook:setInstructorName(

5、stringname)(instructorName=name;/storetheinstructornamenamename/endfunctionsetInstructorName/functiontoretrievetheinstructornamestringGradeBook:getInstructorName()(returninstructorName;/endfunctiongetInstructorName/displayawelcomemessageandtheinstructorsnamevoidGradeBook二displayMessage()(/displayawe

6、lcomemessagecontainingthecoursenamecoutWelcometothegradebookforngetCourseName()!endl;/displaytheinstructorsnamecoutThiscourseispresentedby:getInstructorName()endl;/endfunctiondisplayMessage測試文件:#includeusingstd:cout;usingstd:endl;/includedefinitionofclassGradeBookfromGradeBook.h#includeGradeBook.h/f

7、unctionmainbeginsprogramexecutionintmain()(/createaGradeBookobject;passacoursenameandinstructornameGradeBookgradeBook(CS101IntroductiontoC+Programming,ProfessorSmith);/displayinitialvalueofinstructorNameofGradeBookobjectcoutgradeBookinstructornameis:gradeBook.getInstructorName()nn;/modifytheinstruct

8、orNameusingsetfunctiongradeBook.setInstructorName(AssistantProfessorBates);/displaynewvalueofinstructorNamecoutnewgradeBookinstructornameis:gradeBook.getInstructorName()nn;/displaywelcomemessageandinstructorsnamegradeBook.displayMessage();return0;/indicatesuccessfultermination/endmain3.12類定義:classAc

9、count(public:Account(int);/constructorinitializesbalancevoidcredit(int);/addanamounttotheaccountbalancevoiddebit(int);/subtractanamountfromtheaccountbalanceintgetBalance();/returntheaccountbalanceprivate:intbalance;/datamemberthatstoresthebalance;/endclassAccount類成員函數(shù):#includeusingstd:cout;usingstd:

10、endl;#includeAccount.h/includedefinitionofclassAccount/AccountconstructorinitializesdatamemberbalanceAccount:Account(intinitialBalance)(balance=0;/assumethatthebalancebeginsat0/ifinitialBalanceisgreaterthan0,setthisvalueasthe/balanceoftheAccount;otherwise,balanceremains0if(initialBalance0)balance=in

11、itialBalance;/ifinitialBalanceisnegative,printerrormessageif(initialBalance0)coutError:Initialbalancecannotbenegative.nbalance)/debitamountexceedsbalancecoutDebitamountexceededaccountbalance.nendl;if(amount=balance)/debitamountdoesnotexceedbalancebalance=balance-amount;/endfunctiondebit/returntheacc

12、ountbalanceintAccount:getBalance()(returnbalance;/givesthevalueofbalancetothecallingfunction/endfunctiongetBalance測試函數(shù):#includeusingstd:cout;usingstd:cin;usingstd:endl;/includedefinitionofclassAccountfromAccount.h#includeAccount.h/functionmainbeginsprogramexecutionintmain()Accountaccount1(50);/creat

13、eAccountobjectAccountaccount2(25);/createAccountobject/displayinitialbalanceofeachobjectcoutaccount1balance:$account1.getBalance()endl;coutaccount2balance:$account2.getBalance()endl;intwithdrawalAmount;/storeswithdrawalamountreadfromusercoutwithdrawalAmount;/obtainuserinputcoutnattemptingtosubtractw

14、ithdrawalAmountfromaccount1balancenn;account1.debit(withdrawalAmount);/trytosubtractfromaccount1/displaybalancescoutaccount1balance:$account1.getBalance()endl;coutaccount2balance:$account2.getBalance()endl;coutwithdrawalAmount;/obtainuserinputcoutnattemptingtosubtractwithdrawalAmountfromaccount2bala

15、ncenn;account2.debit(withdrawalAmount);/trytosubtractfromaccount2/displaybalancescoutaccount1balance:$account1.getBalance()endl;coutaccount2balance:$account2.getBalance()endl;return0;/indicatesuccessfultermination/endmain3.13類定義:#include/programusesC+standardstringclassusingstd:string;/Invoiceclassd

16、efinitionclassInvoicepublic:/constructorinitializesthefourdatamembersInvoice(string,string,int,int);/setandgetfunctionsforthefourdatamembersvoidsetPartNumber(string);/partnumberstringgetPartNumber();voidsetPartDescription(string);/partdescriptionstringgetPartDescription();voidsetQuantity(int);/quant

17、ityintgetQuantity();voidsetPricePerItem(int);/priceperitemintgetPricePerItem();/calculatesinvoiceamountbymultiplyingquantityxpriceperitemintgetInvoiceAmount();private:stringpartNumber;/thenumberofthepartbeingsoldstringpartDescription;/descriptionofthepartbeingsoldintquantity;/howmanyoftheitemsarebei

18、ngsoldintpricePerItem;/priceperitem;/endclassInvoice類成員函數(shù):#includeusingstd:cout;usingstd:endl;/includedefinitionofclassInvoicefromInvoice.h#includeInvoice.h/InvoiceconstructorinitializestheclasssfourdatamembersInvoice:Invoice(stringnumber,stringdescription,intcount,intprice)setPartNumber(number);/st

19、orepartNumbersetPartDescription(description);/storepartDescriptionsetQuantity(count);/validateandstorequantitysetPricePerItem(price);/validateandstorepricePerItem/endInvoiceconstructor/setpartnumbervoidInvoice:setPartNumber(stringnumber)(partNumber=number;/novalidationneeded/endfunctionsetPartNumber

20、/getpartnumberstringInvoice:getPartNumber()(returnpartNumber;/endfunctiongetPartNumber/setpartdescriptionvoidInvoice二setPartDescription(stringdescription)(partDescription=description;/novalidationneeded/endfunctionsetPartDescription/getpartdescriptionstringInvoice:getPartDescription()(returnpartDesc

21、ription;/endfunctiongetPartDescription/setquantity;ifnotpositive,setto0voidInvoice:setQuantity(/ifquantityispositive/setquantitytocount/ifquantityisnotpositive/setquantityto0nquantitycannotbenegative.quantitysetto0.n/endfunctionsetQuantity/getquantityintInvoice:getQuantity()(returnquantity;/endfunct

22、iongetQuantity/setpriceperitem;ifnotpositive,setto0voidInvoice:setPricePerItem(intprice)(if(price0)/ifpriceispositivepricePerItem=price;/setpricePerItemtopriceif(price=0)/ifpriceisnotpositive(pricePerItem=0;/setpricePerItemto0cout0)quantity=count;if(count=0)quantity=0;cout/endif/endif/endfunctionset

23、PricePerltem/getpriceperitemintInvoice二getPricePerItem()returnpricePerItem;/endfunctiongetPricePerItem/calulatesinvoiceamountbymultiplyingquantityxpriceperitemintInvoice二getInvoiceAmount()returngetQuantity()*getPricePerItem();/endfunctiongetInvoiceAmount測試函數(shù):#includeusingstd:cout;usingstd:cin;usings

24、td二endl;/includedefinitionofclassInvoicefromInvoice.h#includeInvoice.h/functionmainbeginsprogramexecutionintmain()/createanInvoiceobjectInvoiceinvoice(12345,Hammer:100,5);/displaytheinvoicedatamembersandcalculatetheamountcoutPartnumber:invoice.getPartNumber()endl;coutPartdescription:invoice.getPartD

25、escription()endl;coutQuantity:invoice.getQuantity()endl;coutPriceperitem:$invoice.getPricePerItem()endl;coutInvoiceamount:$invoice.getInvoiceAmount()endl;/modifytheinvoicedatamembersinvoice.setPartNumber(123456);invoice.setPartDescription(Saw);invoice.setQuantity(-5);/negativequantity,soquantitysett

26、o0invoice.setPricePerItem(10);coutnInvoicedatamembersmodified.nn;/displaythemodifiedinvoicedatamembersandcalculatenewamountcoutPartnumber:invoice.getPartNumber()endl;coutPartdescription:invoice.getPartDescription()endl;coutQuantity:invoice.getQuantity()endl;coutPriceperitem:$invoice.getPricePerItem(

27、)endl;coutInvoiceamount:$invoice.getInvoiceAmount()endl;return0;/indicatesuccessfultermination/endmain3.14類定義:pricePerltemsetto0.n#include/programusesC+standardstringclassusingstd:string;/EmployeeclassdefinitionclassEmployeepublic:Employee(string,string,int);/constructorsetsdatamembersvoidsetFirstNa

28、me(string);/setfirstnamestringgetFirstName();/returnfirstnamevoidsetLastName(string);/setlastnamestringgetLastName();/returnlastnamevoidsetMonthlySalary(int);/setweeklysalaryintgetMonthlySalary();/returnweeklysalaryprivate:stringfirstName;/EmployeesfirstnamestringlastName;/Employeeslastnameintmonthl

29、ySalary;/Employeessalarypermonth;/endclassEmployee類成員函數(shù):#includeusingstd:cout;#includeEmployee.h/Employeeclassdefinition/EmployeeconstructorinitializesthethreedatamembersEmployee二Employee(stringfirst,stringlast,intsalary)setFirstName(first);/storefirstnamesetLastName(last);/storelastnamesetMonthlySa

30、lary(salary);/validateandstoremonthlysalary/endEmployeeconstructor/setfirstnamevoidEmployee二setFirstName(stringname)firstName=name;/novalidationneeded/endfunctionsetFirstName/returnfirstnamestringEmployee二getFirstName()returnfirstName;/endfunctiongetFirstName/setlastnamevoidEmployee二setLastName(stri

31、ngname)lastName=name;/novalidationneeded/endfunctionsetLastName/returnlastnamestringEmployee:getLastName()(returnlastName;/endfunctiongetLastName/setmonthlysalary;ifnotpositive,setto0.0voidEmployee二setMonthlySalary(intsalary)(if(salary0)/ifsalaryispositivemonthlySalary=salary;/setmonthlySalarytosala

32、ryif(salary=0)/ifsalaryisnotpositivemonthlySalary=0;/setmonthlySalaryto0.0/endfunctionsetMonthlySalary/returnmonthlysalaryintEmployee二getMonthlySalary()(returnmonthlySalary;/endfunctiongetMonthlySalary測試函數(shù):#includeusingstd:cout;usingstd:endl;#includeEmployee.h/includedefinitionofclassEmployee/functi

33、onmainbeginsprogramexecutionintmain()(/createtwoEmployeeobjectsEmployeeemployee1(Lisa,Roberts,4500);Employeeemployee2(Mark,Stein,4000);/displayeachEmployeesyearlysalarycoutEmployeesyearlysalaries:endl;/retrieveanddisplayemployee1smonthlysalarymultipliedby12intmonthlySalary1=employee1.getMonthlySalar

34、y();coutemployee1.getFirstName()employee1.getLastName():$monthlySalary1*12endl;/retrieveanddisplayemployee2smonthlysalarymultipliedby12intmonthlySalary2=employee2.getMonthlySalary();coutemployee2.getFirstName()employee2.getLastName() :$monthlySalary2*12endl;/giveeachEmployeea10%raiseemployee1.setMon

35、thlySalary(monthlySalary1*1.1);employee2.setMonthlySalary(monthlySalary2*1.1);/displayeachEmployeesyearlysalaryagaincoutnEmployeesyearlysalariesafter10%raise:endl;/retrieveanddisplayemployee1smonthlysalarymultipliedby12monthlySalary1=employee1.getMonthlySalary();coutemployee1.getFirstName()employee1

36、.getLastName() :$monthlySalary1*12endl;monthlySalary2=employee2.getMonthlySalary();coutemployee2.getFirstName()employee2.getLastName() :$monthlySalary2*12endl;return0;/indicatesuccessfultermination/endmain3.15類定義:classDate(public:Date(int,int,int);/constructorinitializesdatamembersvoidsetMonth(int);

37、/setmonthintgetMonth();/returnmonthvoidsetDay(int);/setdayintgetDay();/returndayvoidsetYear(int);/setyearintgetYear();/returnyearvoiddisplayDate();/displaysdateinmm/dd/yyyyformatprivate:intmonth;/themonthofthedateintday;/thedayofthedateintyear;/theyearofthedate;/endclassDate類成員函數(shù):#includeusingstd:co

38、ut;usingstd:endl;#includeDate.h/includedefinitionofclassDatefromDate.h/Dateconstructorthatinitializesthethreedatamembers;/assumevaluesprovidedarecorrect(reallyshouldvalidate)Date:Date(intm,intd,inty)(setMonth(m);setDay(d);setYear(y);/endDateconstructor/setmonthvoidDate:setMonth(intm)(month=m;if(mont

39、h12)month=1;/endfunctionsetMonth/returnmonthintDate:getMonth()(returnmonth;/endfunctiongetMonth/setdayvoidDate:setDay(intd)(day=d;/endfunctionsetDay/returndayintDate:getDay()(returnday;/endfunctiongetDay/setyearvoidDate:setYear(inty)(year=y;/endfunctionsetYear/returnyearintDate:getYear()(returnyear;

40、/endfunctiongetYear/printDateintheformatmm/dd/yyyyvoidDate:displayDate()(coutmonth/day/yearendl;/endfunctiondisplayDate測試函數(shù):#includeusingstd:cout;usingstd:endl;#includeDate.h/includedefinitionofclassDatefromDate.h/functionmainbeginsprogramexecutionintmain()(Datedate(5,6,1981);/createaDateobjectforMa

41、y6,1981/displaythevaluesofthethreeDatedatamemberscoutMonth:date.getMonth()endl;coutDay:date.getDay()endl;coutYear:date.getYear()endl;coutnOriginaldate:endl;date.displayDate();/outputtheDateas5/6/1981/modifytheDatedate.setMonth(13);/invalidmonthdate.setDay(1);date.setYear(2005);coutnNewdate:endl;date

42、.displayDate();/outputthemodifieddate(1/1/2005)return0;/indicatesuccessfultermination/endmain9.05類定義:#ifndefCOMPLEX_H#defineCOMPLEX_HclassComplex(public:Complex(double=0.0,double=0.0);/defaultconstructorComplexadd(constComplex&);/functionaddComplexsubtract(constComplex&);/functionsubtractvoi

43、dprintComplex();/printcomplexnumberformatvoidsetComplexNumber(double,double);/setcomplexnumberprivate:doublerealPart;doubleimaginaryPart;/endclassComplex#endif類成員函數(shù):#includeusingstd:cout;#includeComplex.hComplex:Complex(doublereal,doubleimaginary)(setComplexNumber(real,imaginary);/endComplexconstruc

44、torComplexComplex:add(constComplex&right)(returnComplex(realPart+right.realPart,imaginaryPart+right.imaginaryPart/endfunctionaddComplexComplex:subtract(constComplex&right)(returnComplex(realPart-right.realPart,imaginaryPart-right.imaginaryPart/endfunctionsubtractvoidComplex:printComplex()(/e

45、ndfunctionprintComplexvoidComplex二setComplexNumber(doublerp,doubleip)(realPart=rp;imaginaryPart=ip;/endfunctionsetComplexNumber測試函數(shù):#includeusingstd:cout;usingstd:endl;#includeComplex.hintmain()(Complexa(1,7),b(9,2),c;cout(realPartimaginaryPart);););/createthreeComplexobjectsa.printComplex();cout+b.

46、printComplex();cout=c=a.add(b);c.printComplex();coutn;/outputobjecta/outputobjectb/invokeaddfunctionandassigntoobjectc/outputobjectca.setComplexNumber(10,1);b.setComplexNumber(11,5);/resetrealPartand/andimaginaryParta.printComplex();cout-b.printComplex();cout=/outputobjecta/outputobjectbc=a.subtract

47、(b);c.printComplex();coutendl;return0;/endmain/invokeaddfunctionandassigntoobjectc/outputobjectcprivateintnumerator;/integernumeratorintdenominator;/integerdenominatorvoidreduction();/utilityfunction;/endclassRational#endif類成員函數(shù):#includeusingstd:cout;#includeRational.h/includedefinitionofclassRation

48、alRational:Rational(intn,intd)(numerator=n;/setsnumeratordenominator=d;/setsdenominatorreduction();/storethefractioninreducedform/endRationalconstructorRationalRational:addition(constRational&a)(Rationalt;/createsRationalobjectt.numerator=a.numerator*denominator;t.numerator+=a.denominator*numera

49、tor;t.denominator=a.denominator*denominator;t.reduction();/storethefractioninreducedformreturnt;/endfunctionadditionRationalRational:subtraction(constRational&s)(Rationalt;/createsRationalobjectt.numerator=s.denominator*numerator;t.numerator-=denominator*s.numerator;t.denominator=s.denominator*d

50、enominator;/storethefractioninreducedformreturnt;/endfunctionsubtractionRationalRational:multiplication(constRational&m)Rationalt;/createsRationalobjectt.numerator=m.numerator*numerator;t.de9.06類定義:#ifndefRATIONAL_H#defineRATIONAL_HclassRational(public:Rational(int=0,Rationaladdition(Rationalsub

51、traction(RationalmultiplicationRationaldivision(voidprintRational();int=1);/defaultconstructorconstRational&);/functionadditionconstRational&);/functionsubtractionconstRational&);/functionmulti.constRational&);/functiondivision/printrationalformatvoidprintRationalAsDouble();/printrat

52、ionalasdoubleformatt.reduction();nominator=m.denominator*denominator;t.reduction();/storethefractioninreducedformreturnt;/endfunctionmultiplicationRationalRational:division(constRational&v)Rationalt;/createsRationalobjectt.numerator=v.denominator*numerator;t.denominator=denominator*v.numerator;t

53、.reduction();/storethefractioninreducedformreturnt;/endfunctiondivisionvoidRational:printRational()if(denominator=0)/validatesdenominatorcoutnDIVIDEBYZEROERROR!n;elseif(numerator=0)/validatesnumeratorcout0;elsecoutnumerator/denominator;/endfunctionprintRationalvoidRational:printRationalAsDouble()cou

54、tstatic_cast(numerator)/denominator;/endfunctionprintRationalAsDoublevoidRational:reduction()intlargest;largest=numeratordenominator?numerator:denominator;intgcd=0;/greatestcommondivisorfor(intloop=2;loop=largest;loop+)if(numerator%loop=0&denominator%loop=0)gcd=loop;if(gcd!=0)(numerator/=gcd;den

55、ominator/=gcd;/endif/endfunctionreduction測試函數(shù):#includeusingstd:cout;usingstd:endl;#includeRational.h/includedefinitionofclassRationalintmain()(/printsrationalobjectc/printsrationalobjectd/addsobjectcandd;setsthevaluetox/printsrationalobjectx/printsrationalobjectxx.printRationalAsDouble();/printsrati

56、onalobjectxasdoublecoutnn;c.printRational();/printsrationalobjectccout-;d.printRational();/printsrationalobjectdx=c.subtraction(d);/subtractsobjectcanddcout=;x.printRational();/printsrationalobjectxcoutn;x.printRational();/printsrationalobjectxcout=;x.printRationalAsDouble();/printsrationalobjectxas

57、doublecoutnn;c.printRational();/printsrationalobjectccoutx;d.printRational();/printsrationalobjectdx=c.multiplication(d);/multipliesobjectcanddcout=;x.printRational();/printsrationalobjectxcoutn;x.printRational();/printsrationalobjectxcout=;Rationalc(2,6),d(7,8),x;/createsthreerationalobjectsc.print

58、Rational();cout+:d.printRational();x=c.addition(d);cout=:x.printRational();coutn;x.printRational();cout=:/printsrationalobjectxasdoubletick();/incrementonesecondprintUniversal();/outputtimeinuniversal-timeformatprintStandard();/outputtimeinstandard-timeformathour;/0-23(24-hourclockformat)minute;/0-5

59、9second;/0-59;/endclassTime#endif類成員函數(shù):#includex.printRationalAsDouble();coutnn;c.printRational();cout/;/printsrationalobjectcd.printRational();x=c.division(d);cout=x.printRational();coutn;x.printRational();cout=/printsrationalobjectd/dividesobjectcandd/printsrationalobjectx/printsrationalobjectxx.p

60、rintRationalAsDouble();/printsrationalobjectxasdoublecoutendl;return0;/endmain9.07類定義:#ifndefTIME_H#defineTIME_HclassTimepublic:public:Time(int=0,/setfunctionsint=0,int=0);/defaultconstructorvoidvoidvoidvoidsetTime(setHour(setMinute(setSecond(int,int,int);/sethour,minute,secondint);/sethour(aftervalidation)int);/setminute(aftervalidation)int);/setsecond(af

溫馨提示

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

評論

0/150

提交評論