• 225.50 KB
  • 2022-04-22 11:51:14 发布

《C++大学教程第五版》课后习题答案 (作者 DEITEL).doc

  • 52页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'C++大学基础教程课后答案(DEITEL)版3.11GradeBook类定义:#include//programusesC++standardstringclassusingstd::string;classGradeBook{public://constructorinitializescoursenameandinstructornameGradeBook(string,string);voidsetCourseName(string);//functiontosetthecoursenamestringgetCourseName();//functiontoretrievethecoursenamevoidsetInstructorName(string);//functiontosetinstructornamestringgetInstructorName();//functiontoretrieveinstructornamevoiddisplayMessage();//displaywelcomemessageandinstructornameprivate:stringcourseName;//coursenameforthisGradeBookstringinstructorName;//instructornameforthisGradeBook};//endclassGradeBook类成员函数:#includeusingstd::cout;usingstd::endl;#include"GradeBook.h"//constructorinitializescourseNameandinstructorName//withstringssuppliedasargumentsGradeBook::GradeBook(stringcourse,stringinstructor){setCourseName(course);//initializescourseNamesetInstructorName(instructor);//initialiZesinstructorName}//endGradeBookconstructor//functiontosetthecoursenamevoidGradeBook::setCourseName(stringname){courseName=name;//storethecoursename}//endfunctionsetCourseName//functiontoretrievethecoursenamestringGradeBook::getCourseName() {returncourseName;}//endfunctiongetCourseName//functiontosettheinstructornamevoidGradeBook::setInstructorName(stringname){instructorName=name;//storetheinstructorname}//endfunctionsetInstructorName//functiontoretrievetheinstructornamestringGradeBook::getInstructorName(){returninstructorName;}//endfunctiongetInstructorName//displayawelcomemessageandtheinstructor"snamevoidGradeBook::displayMessage(){//displayawelcomemessagecontainingthecoursenamecout<<"Welcometothegradebookforn"<usingstd::cout;usingstd::endl;//includedefinitionofclassGradeBookfromGradeBook.h#include"GradeBook.h"//functionmainbeginsprogramexecutionintmain(){//createaGradeBookobject;passacoursenameandinstructornameGradeBookgradeBook("CS101IntroductiontoC++Programming","ProfessorSmith");//displayinitialvalueofinstructorNameofGradeBookobjectcout<<"gradeBookinstructornameis:"<usingstd::cout;usingstd::endl;#include"Account.h"//includedefinitionofclassAccount//AccountconstructorinitializesdatamemberbalanceAccount::Account(intinitialBalance){balance=0;//assumethatthebalancebeginsat0//ifinitialBalanceisgreaterthan0,setthisvalueasthe//balanceoftheAccount;otherwise,balanceremains0if(initialBalance>0)balance=initialBalance;//ifinitialBalanceisnegative,printerrormessageif(initialBalance<0)cout<<"Error:Initialbalancecannotbenegative.n"<balance)//debitamountexceedsbalance cout<<"Debitamountexceededaccountbalance.n"<usingstd::cout;usingstd::cin;usingstd::endl;//includedefinitionofclassAccountfromAccount.h#include"Account.h"//functionmainbeginsprogramexecutionintmain(){Accountaccount1(50);//createAccountobjectAccountaccount2(25);//createAccountobject//displayinitialbalanceofeachobjectcout<<"account1balance:$"<>withdrawalAmount;//obtainuserinputcout<<"nattemptingtosubtract"<>withdrawalAmount;//obtainuserinput cout<<"nattemptingtosubtract"<//programusesC++standardstringclassusingstd::string;//InvoiceclassdefinitionclassInvoice{public://constructorinitializesthefourdatamembersInvoice(string,string,int,int);//setandgetfunctionsforthefourdatamembersvoidsetPartNumber(string);//partnumberstringgetPartNumber();voidsetPartDescription(string);//partdescriptionstringgetPartDescription();voidsetQuantity(int);//quantityintgetQuantity();voidsetPricePerItem(int);//priceperitemintgetPricePerItem();//calculatesinvoiceamountbymultiplyingquantityxpriceperitemintgetInvoiceAmount();private:stringpartNumber;//thenumberofthepartbeingsoldstringpartDescription;//descriptionofthepartbeingsoldintquantity;//howmanyoftheitemsarebeingsoldintpricePerItem;//priceperitem};//endclassInvoice类成员函数:#includeusingstd::cout;usingstd::endl;//includedefinitionofclassInvoicefromInvoice.h#include"Invoice.h" //Invoiceconstructorinitializestheclass"sfourdatamembersInvoice::Invoice(stringnumber,stringdescription,intcount,intprice){setPartNumber(number);//storepartNumbersetPartDescription(description);//storepartDescriptionsetQuantity(count);//validateandstorequantitysetPricePerItem(price);//validateandstorepricePerItem}//endInvoiceconstructor//setpartnumbervoidInvoice::setPartNumber(stringnumber){partNumber=number;//novalidationneeded}//endfunctionsetPartNumber//getpartnumberstringInvoice::getPartNumber(){returnpartNumber;}//endfunctiongetPartNumber//setpartdescriptionvoidInvoice::setPartDescription(stringdescription){partDescription=description;//novalidationneeded}//endfunctionsetPartDescription//getpartdescriptionstringInvoice::getPartDescription(){returnpartDescription;}//endfunctiongetPartDescription//setquantity;ifnotpositive,setto0voidInvoice::setQuantity(intcount){if(count>0)//ifquantityispositivequantity=count;//setquantitytocountif(count<=0)//ifquantityisnotpositive{quantity=0;//setquantityto0cout<<"nquantitycannotbenegative.quantitysetto0.n";}//endif}//endfunctionsetQuantity//getquantityintInvoice::getQuantity(){ returnquantity;}//endfunctiongetQuantity//setpriceperitem;ifnotpositive,setto0voidInvoice::setPricePerItem(intprice){if(price>0)//ifpriceispositivepricePerItem=price;//setpricePerItemtopriceif(price<=0)//ifpriceisnotpositive{pricePerItem=0;//setpricePerItemto0cout<<"npricePerItemcannotbenegative."<<"pricePerItemsetto0.n";}//endif}//endfunctionsetPricePerItem//getpriceperitemintInvoice::getPricePerItem(){returnpricePerItem;}//endfunctiongetPricePerItem//calulatesinvoiceamountbymultiplyingquantityxpriceperitemintInvoice::getInvoiceAmount(){returngetQuantity()*getPricePerItem();}//endfunctiongetInvoiceAmount测试函数:#includeusingstd::cout;usingstd::cin;usingstd::endl;//includedefinitionofclassInvoicefromInvoice.h#include"Invoice.h"//functionmainbeginsprogramexecutionintmain(){//createanInvoiceobjectInvoiceinvoice("12345","Hammer",100,5);//displaytheinvoicedatamembersandcalculatetheamountcout<<"Partnumber:"<//programusesC++standardstringclassusingstd::string;//EmployeeclassdefinitionclassEmployee{public:Employee(string,string,int);//constructorsetsdatamembersvoidsetFirstName(string);//setfirstnamestringgetFirstName();//returnfirstnamevoidsetLastName(string);//setlastnamestringgetLastName();//returnlastnamevoidsetMonthlySalary(int);//setweeklysalaryintgetMonthlySalary();//returnweeklysalaryprivate:stringfirstName;//Employee"sfirstnamestringlastName;//Employee"slastnameintmonthlySalary;//Employee"ssalarypermonth};//endclassEmployee类成员函数:#includeusingstd::cout;#include"Employee.h"//Employeeclassdefinition//EmployeeconstructorinitializesthethreedatamembersEmployee::Employee(stringfirst,stringlast,intsalary) {setFirstName(first);//storefirstnamesetLastName(last);//storelastnamesetMonthlySalary(salary);//validateandstoremonthlysalary}//endEmployeeconstructor//setfirstnamevoidEmployee::setFirstName(stringname){firstName=name;//novalidationneeded}//endfunctionsetFirstName//returnfirstnamestringEmployee::getFirstName(){returnfirstName;}//endfunctiongetFirstName//setlastnamevoidEmployee::setLastName(stringname){lastName=name;//novalidationneeded}//endfunctionsetLastName//returnlastnamestringEmployee::getLastName(){returnlastName;}//endfunctiongetLastName//setmonthlysalary;ifnotpositive,setto0.0voidEmployee::setMonthlySalary(intsalary){if(salary>0)//ifsalaryispositivemonthlySalary=salary;//setmonthlySalarytosalaryif(salary<=0)//ifsalaryisnotpositivemonthlySalary=0;//setmonthlySalaryto0.0}//endfunctionsetMonthlySalary//returnmonthlysalaryintEmployee::getMonthlySalary(){returnmonthlySalary;}//endfunctiongetMonthlySalary测试函数:#includeusingstd::cout;usingstd::endl;#include"Employee.h"//includedefinitionofclassEmployee//functionmainbeginsprogramexecution intmain(){//createtwoEmployeeobjectsEmployeeemployee1("Lisa","Roberts",4500);Employeeemployee2("Mark","Stein",4000);//displayeachEmployee"syearlysalarycout<<"Employees"yearlysalaries:"<usingstd::cout;usingstd::endl;#include"Date.h"//includedefinitionofclassDatefromDate.h//Dateconstructorthatinitializesthethreedatamembers;//assumevaluesprovidedarecorrect(reallyshouldvalidate)Date::Date(intm,intd,inty){setMonth(m);setDay(d);setYear(y);}//endDateconstructor//setmonthvoidDate::setMonth(intm){month=m;if(month<1)month=1;if(month>12)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;}//endfunctiongetYear//printDateintheformatmm/dd/yyyyvoidDate::displayDate(){cout<usingstd::cout;usingstd::endl;#include"Date.h"//includedefinitionofclassDatefromDate.h//functionmainbeginsprogramexecutionintmain(){Datedate(5,6,1981);//createaDateobjectforMay6,1981//displaythevaluesofthethreeDatedatamemberscout<<"Month:"<usingstd::cout;#include"Complex.h"Complex::Complex(doublereal,doubleimaginary){setComplexNumber(real,imaginary);}//endComplexconstructorComplexComplex::add(constComplex&right){returnComplex(realPart+right.realPart,imaginaryPart+right.imaginaryPart);}//endfunctionaddComplexComplex::subtract(constComplex&right){returnComplex(realPart-right.realPart,imaginaryPart-right.imaginaryPart);}//endfunctionsubtractvoidComplex::printComplex(){cout<<"("<usingstd::cout;usingstd::endl;#include"Complex.h"intmain(){Complexa(1,7),b(9,2),c;//createthreeComplexobjectsa.printComplex();//outputobjectacout<<"+";b.printComplex();//outputobjectbcout<<"=";c=a.add(b);//invokeaddfunctionandassigntoobjectcc.printComplex();//outputobjectccout<<"n";a.setComplexNumber(10,1);//resetrealPartandb.setComplexNumber(11,5);//andimaginaryParta.printComplex();//outputobjectacout<<"-";b.printComplex();//outputobjectbcout<<"=";c=a.subtract(b);//invokeaddfunctionandassigntoobjectcc.printComplex();//outputobjectccout<usingstd::cout;#include"Rational.h"//includedefinitionofclassRationalRational::Rational(intn,intd){numerator=n;//setsnumeratordenominator=d;//setsdenominatorreduction();//storethefractioninreducedform}//endRationalconstructorRationalRational::addition(constRational&a){Rationalt;//createsRationalobjectt.numerator=a.numerator*denominator;t.numerator+=a.denominator*numerator;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*denominator;t.reduction();//storethefractioninreducedformreturnt;}//endfunctionsubtractionRationalRational::multiplication(constRational&m){Rationalt;//createsRationalobjectt.numerator=m.numerator*numerator;t.denominator=m.denominator*denominator;t.reduction();//storethefractioninreducedformreturnt;}//endfunctionmultiplicationRationalRational::division(constRational&v){Rationalt;//createsRationalobjectt.numerator=v.denominator*numerator; t.denominator=denominator*v.numerator;t.reduction();//storethefractioninreducedformreturnt;}//endfunctiondivisionvoidRational::printRational(){if(denominator==0)//validatesdenominatorcout<<"nDIVIDEBYZEROERROR!!!"<<"n";elseif(numerator==0)//validatesnumeratorcout<<0;elsecout<(numerator)/denominator;}//endfunctionprintRationalAsDoublevoidRational::reduction(){intlargest;largest=numerator>denominator?numerator:denominator;intgcd=0;//greatestcommondivisorfor(intloop=2;loop<=largest;loop++)if(numerator%loop==0&&denominator%loop==0)gcd=loop;if(gcd!=0){numerator/=gcd;denominator/=gcd;}//endif}//endfunctionreduction测试函数:#includeusingstd::cout;usingstd::endl;#include"Rational.h"//includedefinitionofclassRationalintmain(){Rationalc(2,6),d(7,8),x;//createsthreerationalobjectsc.printRational();//printsrationalobjectccout<<"+";d.printRational();//printsrationalobjectd x=c.addition(d);//addsobjectcandd;setsthevaluetoxcout<<"=";x.printRational();//printsrationalobjectxcout<<"n";x.printRational();//printsrationalobjectxcout<<"=";x.printRationalAsDouble();//printsrationalobjectxasdoublecout<<"nn";c.printRational();//printsrationalobjectccout<<"-";d.printRational();//printsrationalobjectdx=c.subtraction(d);//subtractsobjectcanddcout<<"=";x.printRational();//printsrationalobjectxcout<<"n";x.printRational();//printsrationalobjectxcout<<"=";x.printRationalAsDouble();//printsrationalobjectxasdoublecout<<"nn";c.printRational();//printsrationalobjectccout<<"x";d.printRational();//printsrationalobjectdx=c.multiplication(d);//multipliesobjectcanddcout<<"=";x.printRational();//printsrationalobjectxcout<<"n";x.printRational();//printsrationalobjectxcout<<"=";x.printRationalAsDouble();//printsrationalobjectxasdoublecout<<"nn";c.printRational();//printsrationalobjectccout<<"/";d.printRational();//printsrationalobjectdx=c.division(d);//dividesobjectcanddcout<<"=";x.printRational();//printsrationalobjectxcout<<"n";x.printRational();//printsrationalobjectxcout<<"=";x.printRationalAsDouble();//printsrationalobjectxasdoublecout<usingstd::cout;#includeusingstd::setfill;usingstd::setw;#include"Time.h"//includedefinitionofclassTimefromTime.h//Timeconstructorinitializeseachdatamembertozero;//ensuresthatTimeobjectsstartinaconsistentstateTime::Time(inthr,intmin,intsec){setTime(hr,min,sec);//validateandsettime}//endTimeconstructor//setnewTimevalueusinguniversaltime;ensurethat//thedataremainsconsistentbysettinginvalidvaluestozerovoidTime::setTime(inth,intm,ints){ setHour(h);//setprivatefieldhoursetMinute(m);//setprivatefieldminutesetSecond(s);//setprivatefieldsecond}//endfunctionsetTime//sethourvaluevoidTime::setHour(inth){hour=(h>=0&&h<24)?h:0;//validatehour}//endfunctionsetHour//setminutevaluevoidTime::setMinute(intm){minute=(m>=0&&m<60)?m:0;//validateminute}//endfunctionsetMinute//setsecondvaluevoidTime::setSecond(ints){second=(s>=0&&s<60)?s:0;//validatesecond}//endfunctionsetSecond//returnhourvalueintTime::getHour(){returnhour;}//endfunctiongetHour//returnminutevalueintTime::getMinute(){returnminute;}//endfunctiongetMinute//returnsecondvalueintTime::getSecond(){returnsecond;}//endfunctiongetSecond//incrementonesecondvoidTime::tick(){setSecond(getSecond()+1);//incrementsecondby1if(getSecond()==0){setMinute(getMinute()+1);//incrementminuteby1if(getMinute()==0)setHour(getHour()+1);//incrementhourby1}//endif }//endfunctiontick//printTimeinuniversal-timeformat(HH:MM:SS)voidTime::printUniversal(){cout<usingstd::cout;usingstd::endl;#include"Time.h"//includedefinitionofclassTimeconstintMAX_TICKS=30;intmain(){Timet;//instantiateobjecttofclassTimet.setTime(23,59,57);//settime//outputTimeobjectt"svaluesfor(intticks=1;ticksusingstd::cout;#include"Date.h"//includedefinitionofclassDateDate::Date(intm,intd,inty){setDate(m,d,y);//setsdate}//endDateconstructorvoidDate::setDate(intmo,intdy,intyr){setMonth(mo);//invokesfunctionsetMonthsetDay(dy);//invokesfunctionsetDaysetYear(yr);//invokesfunctionsetYear}//endfunctionsetDatevoidDate::setDay(intd){if(month==2&&leapYear())day=(d<=29&&d>=1)?d:1;elseday=(d<=monthDays()&&d>=1)?d:1; }//endfunctionsetDayvoidDate::setMonth(intm){month=m<=12&&m>=1?m:1;//setsmonth}//endfunctionsetMonthvoidDate::setYear(inty){year=y>=1900?y:1900;//setsyear}//endfunctionsetYearintDate::getDay(){returnday;}//endfunctiongetDayintDate::getMonth(){returnmonth;}//endfunctiongetMonthintDate::getYear(){returnyear;}//endfunctiongetYearvoidDate::print(){cout<usingstd::cout;usingstd::endl;#include"Date.h"//includedefinitionsofclassDateintmain(){constintMAXDAYS=16;Dated(12,24,2004);//instantiateobjectdofclassDate//outputDateobjectd"svaluefor(intloop=1;loop<=MAXDAYS;++loop){d.print();//invokesfunctionprintd.nextDay();//invokesfunctionnextday}//endforcout<usingstd::cout;usingstd::endl;#include"DateAndTime.h"//includedefinitionofclassDateAndTimeDateAndTime::DateAndTime(intm,intd,inty,inthr,intmin,intsec){setDate(m,d,y);//setsdate setTime(hr,min,sec);//setstime}//endDateAndTimeconstructorvoidDateAndTime::setDate(intmo,intdy,intyr){setMonth(mo);//invokesfunctionsetMonthsetDay(dy);//invokesfunctionsetdaysetYear(yr);//invokesfunctionsetYear}//endfunctionsetDatevoidDateAndTime::setDay(intd){if(month==2&&leapYear())day=(d<=29&&d>=1)?d:1;elseday=(d<=monthDays()&&d>=1)?d:1;}//endfunctionsetDayvoidDateAndTime::setMonth(intm){month=m<=12&&m>=1?m:1;//setsmonth}//endfunctionsetMonthvoidDateAndTime::setYear(inty){year=y>=1900?y:1900;//setsyear}//endfunctionsetYearvoidDateAndTime::nextDay(){setDay(day+1);//incrementsdayby1if(day==1){setMonth(month+1);//incrementsmonthby1if(month==1)setYear(year+1);//incrementsyearby1}//endifstatement}//endfunctionnextDayvoidDateAndTime::setTime(inthr,intmin,intsec){setHour(hr);//invokesfunctionsetHoursetMinute(min);//invokesfunctionsetMinutesetSecond(sec);//invokesfunctionsetSecond}//endfunctionsetTimevoidDateAndTime::setHour(inth){hour=(h>=0&&h<24)?h:0;//setshour}//endfunctionsetHourvoidDateAndTime::setMinute(intm) {minute=(m>=0&&m<60)?m:0;//setsminute}//endfunctionsetMinutevoidDateAndTime::setSecond(ints){second=(s>=0&&s<60)?s:0;//setssecond}//endfunctionsetSecondvoidDateAndTime::tick(){setSecond(second+1);//incrementssecondby1if(second==0){setMinute(minute+1);//incrementsminuteby1if(minute==0){setHour(hour+1);//incrementshourby1if(hour==0)nextDay();//incrementsdayby1}//endif}//endif}//endfunctiontickintDateAndTime::getDay(){returnday;}//endfunctiongetDayintDateAndTime::getMonth(){returnmonth;}//endfunctiongetMonthintDateAndTime::getYear(){returnyear;}//endfunctiongetYearintDateAndTime::getHour(){returnhour;}//endfunctiongetHourintDateAndTime::getMinute(){returnminute;}//endfunctiongetMinuteintDateAndTime::getSecond(){ returnsecond;}//endfunctiongetSecondvoidDateAndTime::printStandard(){cout<<((hour%12==0)?12:hour%12)<<":"<<(minute<10?"0":"")<usingstd::cout;usingstd::endl;#include"DateAndTime.h"//includedefinitionsofclassDateAndTimeintmain(){constintMAXTICKS=30;DateAndTimed(12,31,2004,23,59,57);//instantiatesobjectd//ofclassDateAndTimefor(intticks=1;ticks<=MAXTICKS;ticks++){cout<<"Universaltime:"; d.printUniversal();//invokesfunctionprintUniversalcout<<"Standardtime:";d.printStandard();//invokesfunctionprintStandardd.tick();//invokesfunctiontick}//endforcout<usingstd::cout;#include"Time.h"//includedefinitionofclassTimeTime::Time(inthr,intmin,intsec){setTime(hr,min,sec);}//endTimeconstructorboolTime::setTime(inth,intm,ints){boolhourValid=setHour(h);//invokesfunctionsetHourboolminuteValid=setMinute(m);//invokesfunctionsetMinute boolsecondValid=setSecond(s);//invokesfunctionsetSecondreturnhourValid&&minuteValid&&secondValid;}//endfunctionsetTimeboolTime::setHour(inthr){if(hr>=0&&hr<24){hour=hr;returntrue;//hourisvalid}//endifelse{hour=0;returnfalse;//hourisinvalid}//endelse}//endfunctionsetHourboolTime::setMinute(intmin){if(min>=0&&min<60){minute=min;returntrue;//minuteisvalid}//endifelse{minute=0;returnfalse;//minuteisinvalid}//endelse}//endfunctionsetMinuteboolTime::setSecond(intsec){if(sec>=0&&sec<60){second=sec;returntrue;//secondisvalid}//endifelse{second=0;returnfalse;//secondisinvalid}//endelse}//endfunctionsetSecond//returnhourvalue intTime::getHour(){returnhour;}//endfunctiongetHour//returnminutevalueintTime::getMinute(){returnminute;}//endfunctiongetMinute//returnsecondvalueintTime::getSecond(){returnsecond;}//endfunctiongetSecondvoidTime::printUniversal(){cout<<(hour<10?"0":"")<usingstd::cin;usingstd::cout;usingstd::endl;#include"Time.h"//includedefinitionofclassTimeintgetMenuChoice();//prototypeintmain(){Timetime;//theTimeobjectintchoice=getMenuChoice();inthours;intminutes;intseconds;while(choice!=4){switch(choice) {case1://sethourcout<<"EnterHours:";cin>>hours;if(!time.setHour(hours))cout<<"Invalidhours."<>minutes;if(!time.setMinute(minutes))cout<<"Invalidminutes."<>seconds;if(!time.setSecond(seconds))cout<<"Invalidseconds."<>choice;returnchoice;}//endfunctiongetMenuChoice9.11类定义:#ifndefRECTANGLE_H #defineRECTANGLE_HclassRectangle{public:Rectangle(double=1.0,double=1.0);//defaultconstructorvoidsetWidth(doublew);//setwidthvoidsetLength(doublel);//setlengthdoublegetWidth();//getwidthdoublegetLength();//getlengthdoubleperimeter();//perimeterdoublearea();//areaprivate:doublelength;//1.00&&w<20.0?w:1.0;//setswidth}//endfunctionsetWidthvoidRectangle::setLength(doublel){length=l>0&&l<20.0?l:1.0;//setslength}//endfunctionsetLengthdoubleRectangle::getWidth(){returnwidth;}//endfunctiongetWidthdoubleRectangle::getLength(){returnlength;}//endfucntiongetLengthdoubleRectangle::perimeter(){return2*(width+length);//returnsperimeter}//endfunctionperimeterdoubleRectangle::area() {returnwidth*length;//returnsarea}//endfunctionarea测试函数:#includeusingstd::cout;usingstd::endl;usingstd::fixed;#includeusingstd::setprecision;#include"Rectangle.h"//includedefinitionofclassRectangleintmain(){Rectanglea,b(4.0,5.0),c(67.0,888.0);cout<usingstd::cout;usingstd::endl;#includeusingstd::fixed;usingstd::setprecision;#includeusingstd::fabs;#include"Rectangle.h"//includedefinitionofclassRectangleRectangle::Rectangle(Pointa,Pointb,Pointc,Pointd){setCoord(a,b,c,d);//invokesfunctionsetCoord}//endRectangleconstructorvoidRectangle::setCoord(Pointp1,Pointp2,Pointp3,Pointp4){//Arrangementofpoints//p4.........p3//..//..//p1.........p2//verifythatpointsformarectangleif((p1.getY()==p2.getY()&&p1.getX()==p4.getX()&&p2.getX()==p3.getX()&&p3.getY()==p4.getY())){point1=p1;point2=p2;point3=p3;point4=p4;}//endifelse{ cout<<"Coordinatesdonotformarectangle!n"<<"Usedefaultvalues.n";point1=Point(0.0,1.0);point2=Point(1.0,1.0);point3=Point(1.0,0.0);point4=Point(0.0,0.0);}//endelse}//endfunctionsetCoorddoubleRectangle::length(){doubleside1=fabs(point4.getY()-point1.getY());//getside1doubleside2=fabs(point2.getX()-point1.getX());//getside2doublelength=(side1>side2?side1:side2);returnlength;}//endfunctionlengthdoubleRectangle::width(){doubleside1=fabs(point4.getY()-point1.getY());//getside1doubleside2=fabs(point2.getX()-point1.getX());//getside2doublewidth=(side1=0.0&&xCoord<=20.0)?xCoord:0.0;}//endfunctionsetX//setycoordinatevoidPoint::setY(doubleyCoord){y=(yCoord>=0.0&&yCoord<=20.0)?yCoord:0.0;}//endfunctionsetY//returnxcoordinatedoublePoint::getX(){returnx;}//endfunctiongetX//returnycoordinatedoublePoint::getY(){returny;}//endfunctiongetY测试函数:#includeusingstd::cout; #include"Rectangle.h"//includedefinitionofclassRectangleintmain(){Pointw(1.0,1.0);Pointx(5.0,1.0);Pointy(5.0,3.0);Pointz(1.0,3.0);Pointj(0.0,0.0);Pointk(1.0,0.0);Pointm(1.0,1.0);Pointn(0.0,1.0);Pointv(99.0,-2.3);Rectanglerectangles[4];//arraystoresfourrectangles//outputrectanglesfor(inti=0;i<4;i++){cout<<"Rectangle"<usingstd::cout;usingstd::endl;#includeusingstd::fixed;usingstd::setprecision;#includeusingstd::fabs;#include"Rectangle.h"//includedefinitionofclassRectangleRectangle::Rectangle(Pointa,Pointb,Pointc,Pointd,charfillChar,charperimeterChar){setCoord(a,b,c,d);//invokefunctionsetCoordsetFillCharacter(fillChar);//setfillcharacter setPerimeterCharacter(perimeterChar);//setperimetercharacter}//endRectangleconstructorvoidRectangle::setCoord(Pointp1,Pointp2,Pointp3,Pointp4){//Arrangementofpoints//p4.........p3//..//..//p1.........p2//verifythatpointsformarectangleif((p1.getY()==p2.getY()&&p1.getX()==p4.getX()&&p2.getX()==p3.getX()&&p3.getY()==p4.getY())){point1=p1;point2=p2;point3=p3;point4=p4;}//endifelse{cout<<"Coordinatesdonotformarectangle!n"<<"Usedefaultvalues.n";point1=Point(0.0,1.0);point2=Point(1.0,1.0);point3=Point(1.0,0.0);point4=Point(0.0,0.0);}//endelse}//endfunctionsetCoorddoubleRectangle::length(){doubleside1=fabs(point4.getY()-point1.getY());//getside1doubleside2=fabs(point2.getX()-point1.getX());//getside2doublelength=(side1>side2?side1:side2);returnlength;}//endfunctionlengthdoubleRectangle::width(){doubleside1=fabs(point4.getY()-point1.getY());//getside1doubleside2=fabs(point2.getX()-point1.getX());//getside2 doublewidth=(side1=0.0;y--){for(doublex=0.0;x<=25.0;x++){if((point1.getX()==x&&point1.getY()==y)||(point4.getX()==x&&point4.getY()==y)){//printhorizontalperimeterofrectanglewhile(x<=point2.getX()){cout<=point1.getX()))&&point4.getY()>=y&&point1.getY()<=y){cout<=0.0&&xCoord<=20.0)?xCoord:0.0;}//endfunctionsetX//setycoordinatevoidPoint::setY(doubleyCoord){y=(yCoord>=0.0&&yCoord<=20.0)?yCoord:0.0;}//endfunctionsetY//returnxcoordinatedoublePoint::getX(){returnx;}//endfunctiongetX//returnycoordinatedoublePoint::getY(){returny;}//endfunctiongetY测试函数:#include"Rectangle.h"//includedefinitionofclassRectangleintmain(){Pointpoint1(12.0,12.0);Pointpoint2(18.0,12.0);Pointpoint3(18.0,20.0);Pointpoint4(12.0,20.0);Rectanglerectangle(point1,point2,point3,point4,"?","*");rectangle.draw();//invokesfunctiondrawreturn0;}//endmain9.14类定义:#ifndefHUGEINTEGER_H#defineHUGEINTEGER_HclassHugeInteger{public:HugeInteger(long=0);//conversion/defaultconstructorHugeInteger(constchar*);//copyconstructor//additionoperator;HugeInteger+HugeIntegerHugeIntegeradd(constHugeInteger&); //additionoperator;HugeInteger+intHugeIntegeradd(int);//additionoperator;//HugeInteger+stringthatrepresentslargeintegervalueHugeIntegeradd(constchar*);//subtractionoperator;HugeInteger-HugeIntegerHugeIntegersubtract(constHugeInteger&);//subtractionoperator;HugeInteger-intHugeIntegersubtract(int);//subtractionoperator;//HugeInteger-stringthatrepresentslargeintegervalueHugeIntegersubtract(constchar*);boolisEqualTo(HugeInteger&);//isequaltoboolisNotEqualTo(HugeInteger&);//notequaltoboolisGreaterThan(HugeInteger&);//greaterthanboolisLessThan(HugeInteger&);//lessthanboolisGreaterThanOrEqualTo(HugeInteger&);//greaterthan//orequaltoboolisLessThanOrEqualTo(HugeInteger&);//lessthanorequalboolisZero();//iszerovoidinput(constchar*);//inputvoidoutput();//outputshort*getInteger();//getintegerprivate:shortinteger[40];//40elementarray};//endclassHugeInteger#endif类成员函数:#includeusingstd::cin;usingstd::cout;#include"HugeInteger.h"//includedefinitonofclassHugeInteger//defaultconstructor;conversionconstructorthatconverts//alongintegerintoaHugeIntegerobjectHugeInteger::HugeInteger(longvalue){//initializearraytozerofor(inti=0;i<40;i++)integer[i]=0;//placedigitsofargumentintoarrayfor(intj=39;value!=0&&j>=0;j--){integer[j]=static_cast(value%10);value/=10; }//endinnerfor}//endHugeIntegerconstructor//copyconstructor;//convertsacharstringrepresentingalargeintegerintoaHugeIntegerHugeInteger::HugeInteger(constchar*string){this->input(string);//callinputtoinitializeHugeInteger}//endHugeIntegerconstructor//additionoperator;HugeInteger+HugeIntegerHugeIntegerHugeInteger::add(constHugeInteger&op2){HugeIntegertemp;//temporaryresultintcarry=0;//iteratethroughHugeIntegerfor(inti=39;i>=0;i--){temp.integer[i]=integer[i]+op2.integer[i]+carry;//determinewhethertocarrya1if(temp.integer[i]>9){temp.integer[i]%=10;//reduceto0-9carry=1;}//endifelse//nocarrycarry=0;}//endforreturntemp;//returnthesum}//endfunctionadd//additionoperator;HugeInteger+intHugeIntegerHugeInteger::add(intop2){//convertop2toaHugeInteger,theninvokeaddreturnthis->add(HugeInteger(op2));}//endfunctionadd//HugeInteger+stringthatrepresentslargeintegervalueHugeIntegerHugeInteger::add(constchar*op2){//convertop2toaHugeInteger,theninvokeaddreturnthis->add(HugeInteger(op2));}//endfunctionadd//functiontosubtracttwoHugeIntegersHugeIntegerHugeInteger::subtract(constHugeInteger&op2) {HugeIntegertemp;//temporaryresultintborrow=0;//iteratethroughHugeIntegerfor(inti=39;i>=0;i--){//determinetoadd10tosmallerintegerif(integer[i]subtract(HugeInteger(op2));}//endfunctionsubtract//functionthattakesstringrepresetinganumber//andsubtractsitfromaHugeIntegerHugeIntegerHugeInteger::subtract(constchar*op2){//convertop2toaHugeInteger,theninvokesubtractreturnthis->subtract(HugeInteger(op2));}//endfunctionsubtract//functionthattestsiftwoHugeIntegersareequalboolHugeInteger::isEqualTo(HugeInteger&x){returninteger==x.getInteger();}//endfunctionisEqualTo//functionthattestsiftwoHugeIntegersarenotequalboolHugeInteger::isNotEqualTo(HugeInteger&x){return!(this->isEqualTo(x)); }//endfunctionisNotEqualTo//functiontotestifoneHugeIntegerisgreaterthananotherboolHugeInteger::isGreaterThan(HugeInteger&x){returnintegerx.getInteger();}//endfunctionisLessThan//functionthattestsifoneHugeIntegerisgreaterthan//orequaltoanotherboolHugeInteger::isGreaterThanOrEqualTo(HugeInteger&x){returninteger<=x.getInteger();}//endfunctionisGreaterThanOrEqualTo//functionthattestsifoneHugeIntegerislessthanor//equaltoanotherboolHugeInteger::isLessThanOrEqualTo(HugeInteger&x){returninteger>=x.getInteger();}//endfunctionisLessThanOrEqualTo//functionthattestsifaHugeIntegeriszeroboolHugeInteger::isZero(){return(getInteger()==0);}//endfunctionisZero//convertsacharstringrepresentingalargeintegerintoaHugeIntegervoidHugeInteger::input(constchar*string){//initializearraytozerofor(inti=0;i<40;i++)integer[i]=0;//placedigitsofargumentintoarrayintlength=strlen(string);for(intj=40-length,k=0;j<40;j++,k++)if(isdigit(string[k]))integer[j]=string[k]-"0";}//endfunctioninput//overloadedoutputoperator voidHugeInteger::output(){inti;//usedforloopingfor(i=0;(integer[i]==0)&&(i<=39);i++);//skipleadingzerosif(i==40)cout<<0;elsefor(;i<=39;i++)//displaytheHugeIntegercout<usingstd::cout;usingstd::endl;#include"HugeInteger.h"//includedefinitonofclassHugeIntegerintmain(){HugeIntegern1(7654321);//HugeIntegerobjectn1HugeIntegern2("7891234");//HugeIntegerobjectn2HugeIntegern3;//HugeIntegerobjectn3HugeIntegern4(5);//HugeIntegerobjectn4HugeIntegern5;//HugeIntegerobjectn5//outputsthesumofn1andn2n5=n1.add(n2);n1.output();cout<<"+";n2.output();cout<<"=";n5.output();cout<<"nn";//assignsthedifferenceofn2andn4ton5thenoutputsn5n5=n2.subtract(n4);n2.output();cout<<"-";n4.output();cout<<"=";n5.output();cout<<"nn"; //checksforequalitybetweenn1andn1if(n1.isEqualTo(n1)==true){n1.output();cout<<"isequal";n1.output();cout<<"nn";}//endif//checksforinequalitybetweenn1andn2if(n1.isNotEqualTo(n2)==true){n1.output();cout<<"isnotequalto";n2.output();cout<<"nn";}//endif//testsforgreaternumberbetweenn2andn1if(n2.isGreaterThan(n1)==true){n2.output();cout<<"isgreaterthan";n1.output();cout<<"nn";}//endif//testsforsmallernumberbetweenn2andn4if(n2.isLessThan(n4)==true){n4.output();cout<<"islessthan";n2.output();cout<<"nn";}//endif//testsforsmallerorequalnumberbetweenn4andn4if(n4.isLessThanOrEqualTo(n4)==true){n4.output();cout<<"islessthanorequalto";n4.output();cout<<"nn";}//endif//testsforgreaterorequalnumberbetweenn3andn3if(n3.isGreaterThanOrEqualTo(n3)==true){n3.output(); cout<<"isgreaterthanorequalto";n3.output();cout<<"nn";}//endif//testsforzeroatn3if(n3.isZero()!=true){cout<<"n3containsvalue";n3.output();cout<<"nn";}//endifstatementreturn0;}//endmain9.15类定义:#ifndefTICTACTOE_H#defineTICTACTOE_HclassTicTacToe{private:enumStatus{WIN,DRAW,CONTINUE};//enumerationconstantsintboard[3][3];public:TicTacToe();//defaultconstructorvoidmakeMove();//makemovevoidprintBoard();//printboardboolvalidMove(int,int);//validatemoveboolxoMove(int);//xomoveStatusgameStatus();//gamestatus};//endclassTicTacToe#endif类成员函数:#includeusingstd::cin;usingstd::cout;#includeusingstd::setw;#include"TicTacToe.h"//includedefinitonofclassTicTacToeTicTacToe::TicTacToe(){for(intj=0;j<3;j++)//initializeboardfor(intk=0;k<3;k++)board[j][k]=""; }//endTicTacToeconstructorboolTicTacToe::validMove(intr,intc){returnr>=0&&r<3&&c>=0&&c<3&&board[r][c]=="";}//endfunctionvalidMove//mustspecifythattypeStatusispartoftheTicTacToeclass.//SeeChapter24foradiscussionofnamespaces.TicTacToe::StatusTicTacToe::gameStatus(){inta;//checkforawinondiagonalsif(board[0][0]!=""&&board[0][0]==board[1][1]&&board[0][0]==board[2][2])returnWIN;elseif(board[2][0]!=""&&board[2][0]==board[1][1]&&board[2][0]==board[0][2])returnWIN;//checkforwininrowsfor(a=0;a<3;++a)if(board[a][0]!=""&&board[a][0]==board[a][1]&&board[a][0]==board[a][2])returnWIN;//checkforwinincolumnsfor(a=0;a<3;++a)if(board[0][a]!=""&&board[0][a]==board[1][a]&&board[0][a]==board[2][a])returnWIN;//checkforacompletedgamefor(intr=0;r<3;++r)for(intc=0;c<3;++c)if(board[r][c]=="")returnCONTINUE;//gameisnotfinishedreturnDRAW;//gameisadraw}//endfunctiongameStatusvoidTicTacToe::printBoard(){cout<<"012nn";for(intr=0;r<3;++r){cout<(board[r][c]);if(c!=2)cout<<"|";}//endforif(r!=2)cout<<"n____|____|____n||n";}//endforcout<<"nn";}//endfunctionprintBoardvoidTicTacToe::makeMove(){printBoard();while(true){if(xoMove("X"))break;elseif(xoMove("O"))break;}//endwhilestructure}//endfunctionmakeMoveboolTicTacToe::xoMove(intsymbol){intx;inty;do{cout<<"Player"<(symbol)<<"entermove:";cin>>x>>y;cout<<"n";}while(!validMove(x,y));board[x][y]=symbol;printBoard();StatusxoStatus=gameStatus();if(xoStatus==WIN){cout<<"Player"<(symbol)<<"wins!n";returntrue;}//endifelseif(xoStatus==DRAW){ cout<<"Gameisadraw.n";returntrue;}//endelseifelse//CONTINUEreturnfalse;}//endfunctionxoMove测试函数:#include"TicTacToe.h"//includedefinitonofclassTicTacToeintmain(){TicTacToeg;//createsobjectgofclassTicTacToeg.makeMove();//invokesfunctionmakeMovereturn0;}//endmain'