C++面向?qū)ο蟪绦蛟O(shè)計習(xí)題解答與上機(jī)指導(dǎo)(第二版)源程序_第1頁
C++面向?qū)ο蟪绦蛟O(shè)計習(xí)題解答與上機(jī)指導(dǎo)(第二版)源程序_第2頁
C++面向?qū)ο蟪绦蛟O(shè)計習(xí)題解答與上機(jī)指導(dǎo)(第二版)源程序_第3頁
C++面向?qū)ο蟪绦蛟O(shè)計習(xí)題解答與上機(jī)指導(dǎo)(第二版)源程序_第4頁
C++面向?qū)ο蟪绦蛟O(shè)計習(xí)題解答與上機(jī)指導(dǎo)(第二版)源程序_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、C+面向?qū)ο蟪绦蛟O(shè)計習(xí)題解答與上機(jī)指導(dǎo)(第2版)習(xí)題參考答案源代碼使用源程序的幾點(diǎn)注意事項(xiàng)由于源程序在復(fù)制、編輯、解壓縮等過程中可能引起部分符號(主要是標(biāo)點(diǎn)符號,如分號、冒號、逗號、引號)的字體、半全角等發(fā)生變化,在編譯時可能被檢出語法錯誤,只要使用“替換”功能,糾正后即能順利運(yùn)行。有的C+系統(tǒng)(如VisualC+6.0)沒有完全實(shí)現(xiàn)C+標(biāo)準(zhǔn),它所提供的不帶后綴的.h的頭文件不支持友元運(yùn)算符重載函數(shù),在VisualC+6.0中編譯會出錯,這時可采用帶后綴的.h頭文件。將程序中的#includeusingnamespacestd;修改成#include即可順利運(yùn)行。第2章C+基礎(chǔ)【2.2】下面是

2、一個C程序,改寫它,使它采用C+風(fēng)格的I/O語句。#includeintmain()inta,b,d,min;printf(Entertwonumbers:);scanf(%d%d,&a,&b);min=ab?b:a;for(d=2;dmin;d+)if(a%d)=0)&(b%d)=0)break;if(d=min)printf(Nocommondenominatorsn);return0;printf(Thelowestcommondenominatoris%dn,d);return0;【解】#includeusingnamespacestd;intmain()inta,b,d,min;co

3、uta;cinb;min=ab?b:a;for(d=2;dmin;d+)if(a%d)=0)&(b%d)=0)break;if(d=min)coutNocommondenominatorsn;return0;coutThelowestcommondenominatorisendld;return0;【2.24】寫出下列程序的運(yùn)行結(jié)果。#includeusingnamespacestd;inti=15;intmain()inti;i=100;:i=i+1;cout:iendl;return0;運(yùn)行結(jié)果:101Pleaseanykeytocontinue?!?.25】寫出下列程序的運(yùn)行結(jié)果。#in

4、cludeusingnamespacestd;voidf(int&m,intn)inttemp;temp=m;m=n;n=temp;intmain()inta=5,b=10;f(a,b);coutabendl;return0;結(jié)果:1010Pleaseanykeytocontinue。【2.26】分析下面程序的輸出結(jié)果。#includeusingnamespacestd;int&f(int&i)i+=10;returni;intmain()intk=0;int&m=f(k);coutkendl;m=20;coutkendl;return0;運(yùn)行結(jié)果:1020Pleaseanykeytocont

5、inue?!?.27】編寫一個C+風(fēng)格的程序,用動態(tài)分配空間的方法計算Fibonacci數(shù)列的前20項(xiàng)并存儲到動態(tài)分配的空間中?!窘狻繉?shí)現(xiàn)本題功能的程序如下:#includeusingnamespacestd;intmain()int*p=newint20;/動態(tài)分配20個整型內(nèi)存空間*p=1;*(p+1)=1;/對前面2個內(nèi)存空間賦值1cout*pt*(p+1)t;P=p+2;/p指向第3個內(nèi)存空間for(inti=3;i=20;i+)*p=*(p-1)+*(p-2);cout*pt;if(i%5=0)coutendl;p+;/p指向下一個內(nèi)存空間;return0;【2.28】編寫一個C+風(fēng)

6、格的程序,建立一個被稱為sroot的函數(shù),返回其參數(shù)的二次方根。重載函數(shù)sroot三次,讓它返回整數(shù)、長整數(shù)與雙精度數(shù)的二次方根(計算二次方根時,可以使用標(biāo)準(zhǔn)庫函數(shù)sqrt)?!窘狻繉?shí)現(xiàn)本題功能的程序如下:#include#includeusingnamespacestd;doublesroot(inti)returnsqrt(i);doublesroot(longl)returnsqrt(l);doublesroot(doubled)returnsqrt(d);intmain()inti=12;longl=1234;doubled=12.34;sroot(i)endl;sroot(i)end

7、l;sroot(l)endl;sroot(d)endl;coutl的二次方根是coutd的二次方根是return0;【2.29】編寫一個C+風(fēng)格的程序,解決百錢問題:將一元人民幣兌換成1、2、5分的硬幣,有多少種換法?【解】實(shí)現(xiàn)本題功能的程序如下:#includeiostreamusingnamespacestd;intmain()inti,j,sum=0;for(i=0;i=20;i+)for(j=0;j=50;j+)if(100-5*i-2*j=0)sum+;cout100-5*i-2*jtjtiendl;coutsumissumendl;return0;【2.30】編寫一個C+風(fēng)格的程序

8、,輸入兩個整數(shù),將它們按由小到大的順序輸出。要求使用變量的引用。【解】實(shí)現(xiàn)本題功能的程序如下:#includeiostreamusingnamespacestd;intmain()voidchange(int&,int&);inta,b;cinab;if(ab)change(a,b);coutabendl;return0;voidchange(int&a1,int&b1)inttemp;temp=a1;a1=b1;b1=temp;【2.31】編寫C+風(fēng)格的程序,用二分法求解f(x)=O的根?!窘狻繉?shí)現(xiàn)本題功能的程序如下:#include#includeusingnamespacestd;inl

9、inefloatf(floatx)return2*x*x*x-4*x*x+3*x-6;intmain()floatleft,right,middle,ym,yl,yr;coutpleasetwonumber:leftright;yl=f(left);yr=f(right);domiddle=(right+left)/2;ym=f(middle);if(yr*ym0)right=middle;yr=ym;elseleft=middle;yl=ym;while(fabs(ym)=1e-6);coutnRootis:middle;return0;第3章類和對象(一)【3.18】寫出下面程序的運(yùn)行結(jié)果

10、。#includeusingnamespacestd;classtestpublic:test();test();private:inti;test:test()i=25;for(intctr=0;ctr10;ctr+)coutCountingatctrn;testanObject;intmain()return0;【3.19】寫出下面程序的運(yùn)行結(jié)果。#includeusingnamespacestd;classTestprivate:intval;public:Test()coutdefault.endl;Test(intn)val=n;coutCon.endl;Test(constTest

11、&t)val=t.val;coutCopycon.endl;intmain()Testt1(6);Testt2=t1;Testt3;t3=t1;return0;【3.20】指出下列程序中的錯誤,并說明為什么#includeusingnamespacestd;classStudentpublic:voidprintStu();private:charname10;intage;floataver;intmain()Studentp1,p2,p3;p1.age=30;return0;【3.21】指出下列程序中的錯誤,并說明為什么#includeusingnamespacestd;classStud

12、entintsno;intage;voidprintStu();voidsetSno(intd);voidprintStu()coutnSnoissno,;coutageisage.endl;voidsetSno(ints)sno=s;voidsetAge(inta)age=a;intmain()Studentlin;lin.setSno(20021);lin.setAge(20);lin.printStu();【3.22】指出下列程序中的錯誤,并說明為什么#includeusingnamespacestd;classPointpublic:intx,y;private:Point()x=1;

13、y=2;intmain()Pointcpoint;cpoint.x=2;return0;【3.23】下面是一個計算器類的定義,請完成該類成員函數(shù)的實(shí)現(xiàn)classcounterpublic:counter(intnumber);voidincrement();voiddecrement();intgetvalue();intprint();private:/給原值加1/給原值減1/取得計數(shù)器值/顯示計數(shù)intvalue;【解】classcounterpublic:counter(intnumber);voidincrement();voiddecrement();intgetvalue();in

14、tprint();private:/給原值加1/給原值減1/取得計數(shù)器值/顯示計數(shù)intvalue;counter:counter(intnumber)value=number;voidcounter:increment()value+;voidcounter:decrement()value-;intcounter:getvalue()returnvalue;intcounter:print()coutvalueisvalueendl;return0;【3.24】根據(jù)注釋語句的提示,實(shí)現(xiàn)類Date的成員函數(shù)。#includeusingnamespacestd;classDatepublic:

15、voidprintDate();/顯示日期voidsetDay(intd);/設(shè)置日的值voidsetMonth(intm);/設(shè)置月的值voidsetYear(inty);/設(shè)置年的值private:intday,month,year;intmain()DatetestDay;testDay.setDay(5);testDay.setMonth(10);testDay.setYear(2003);testDay.printDate();return0;【解】voidDate:printDate()coutnDateisday.;coutmonth.yearendl;voidDate:setD

16、ay(intd)day=d;voidDate:setMonth(intm)month=m;voidDate:setYear(inty)year=y;【3.25】建立類cylinder,cylinder的構(gòu)造函數(shù)被傳遞了兩個double值,分別表示圓柱體的半徑和高度。用類cylinder計算圓柱體的體積,并存儲在一個double變量中。在類cylinder中包含一個成員函數(shù)vol,用來顯示每個cylinder對象的體積?!窘狻繉?shí)現(xiàn)本題功能的程序如下:#includeusingnamespacestd;classcylinderpublic:cylinder(doublea,doubleb);vo

17、idvol();private:doubler,h;doublevolume;cylinder:cylinder(doublea,doubleb)r=a;h=b;volume=3.141592*r*r*h;voidcylinder:vol()coutvolumeis:volumen;intmain()cylinderx(2.2,8.09);x.vol();return0;【3.26】構(gòu)建一個類Stock,含字符數(shù)組stockcode及整型數(shù)據(jù)成員quan、雙精度型數(shù)據(jù)成員price。構(gòu)造函數(shù)含3個參數(shù):字符數(shù)組na及q、p。當(dāng)定義Stock的類對象時,將對象的第1個字符串參數(shù)賦給數(shù)據(jù)成員sto

18、ckcode,第2和第3個參數(shù)分別賦給quan、price。未設(shè)置第2和第3個參數(shù)時,quan的值為1000,price的值為&98。成員函數(shù)print沒有形參,需使用this指針,顯示對象數(shù)據(jù)成員的內(nèi)容。假設(shè)類Stoc第1個對象的三個參數(shù)分別為:600001,3000和5.67,第2個對象的第1個數(shù)據(jù)成員的值是600001,第2和3數(shù)據(jù)成員的值取默認(rèn)值。要求編寫程序分別顯示這兩個對象數(shù)據(jù)成員的值?!窘狻繉?shí)現(xiàn)本題功能的程序如下:#includeusingnamespacestd;constintSIZE=80;classStockpublic:Stock()strcpy(stockcode,)

19、;Stock(charcode,intq=1000,doublep=8.98)strcpy(stockcode,code);quan=q;price=p;voidprint(void)coutstockcode;coutquanpriceendl;private:charstockcodeSIZE;intquan;doubleprice;intmain()Stockst1(600001,3000,5.67);st1.print();Stockst2(600002);st2.print();return0;第4章類和對象(二)【4.12】以下程序的運(yùn)行結(jié)果是()。#includeusingnam

20、espacestd;classBpublic:B()B(inti,intj)x=i;y=j;voidprintb()coutx,yendl;private:intx,y;classApublic:A()A(intI,intj);voidprinta();private:Bc;A:A(inti,intj):c(i,j)voidA:printa()c.printb();intmain()Aa(7,8);printa();return0;A)8,9B)7,8C)5,6D)9,10【4.13】以下程序的運(yùn)行結(jié)果是()。#includeusingnamespacestd;classApublic:voidset(inti,intj)x=i;y=j;intget_y()returny;private:intx,y;classboxpublic:voidset(intl,intw,ints,intp)length=l;width=w;label.set(s,p);intget_area()returnlength*width;private:intlength,width;Alabel;intmain()boxb;set(4

溫馨提示

  • 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

提交評論