C語(yǔ)言程序設(shè)計(jì)(鄭莉)課后習(xí)題答案_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)(鄭莉)課后習(xí)題答案_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)(鄭莉)課后習(xí)題答案_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì)(鄭莉)課后習(xí)題答案_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì)(鄭莉)課后習(xí)題答案_第5頁(yè)
已閱讀5頁(yè),還剩32頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、C+吾言程序設(shè)計(jì)(清華大學(xué)鄭莉)課后習(xí)題答案第一章概述對(duì)這種軟件的功能很難用過(guò)程來(lái)描述和實(shí)現(xiàn),使用面向過(guò)程的方法來(lái)開(kāi)發(fā)和維護(hù)都將非常困難。1-1簡(jiǎn)述計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言的發(fā)展歷程。1-4什么是對(duì)象什么是面向?qū)ο蠓椒ㄟ@種方法有哪些特點(diǎn)解:迄今為止計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言的發(fā)展經(jīng)歷了機(jī)器語(yǔ)言、匯編語(yǔ)言、高級(jí)語(yǔ)言等階段,C+語(yǔ)言是一種面向?qū)ο蟮木幊陶Z(yǔ)言,也屬于高級(jí)語(yǔ)言。1-2面向?qū)ο蟮木幊陶Z(yǔ)言有哪些特點(diǎn)解:面向?qū)ο蟮木幊陶Z(yǔ)言與以往各種編程語(yǔ)言有根本的不同,它設(shè)計(jì)的出發(fā)點(diǎn)就是為了能更直接的描述客觀世界中存在的事物以及它們之間的關(guān)系。面向?qū)ο蟮木幊陶Z(yǔ)言將客觀事物看作具有屬性和行為的對(duì)象,通過(guò)抽象找出同一類對(duì)象的

2、共同屬性(靜態(tài)特征)和行為(動(dòng)態(tài)特征),形成類。通過(guò)類的繼承與多態(tài)可以很方便地實(shí)現(xiàn)代碼重用,大大縮短了軟件開(kāi)發(fā)周期,并使得軟件風(fēng)格統(tǒng)一。因此,面向?qū)ο蟮木幊陶Z(yǔ)言使程序能夠比較直接地反問(wèn)題域的本來(lái)面目,軟件開(kāi)發(fā)人員能夠利用人類認(rèn)識(shí)事物所采用的一般思維方法來(lái)進(jìn)行軟件開(kāi)發(fā)。C+鋪言是目前應(yīng)用最廣的面向?qū)ο蟮木幊陶Z(yǔ)言。解:從一般意義上講,對(duì)象是現(xiàn)實(shí)世界中一個(gè)實(shí)際存在的事物,它可以是有形的,也可以是無(wú)形的。對(duì)象是構(gòu)成世界的一個(gè)獨(dú)立單位,它具有自己的靜態(tài)特征和動(dòng)態(tài)特征。面向?qū)ο蠓椒ㄖ械膶?duì)象,是系統(tǒng)中用來(lái)描述客觀事物的一個(gè)實(shí)體,它是用來(lái)構(gòu)成系統(tǒng)的一個(gè)基本單位,由一組屬性和一組行為構(gòu)成。面向?qū)ο蟮姆椒▽?shù)據(jù)及

3、對(duì)數(shù)據(jù)的操作方法放在一起,作為一個(gè)相互依存、不可分離的整體-對(duì)象。對(duì)同類型對(duì)象抽象出其共性,形成類。類中的大多數(shù)數(shù)據(jù),只能用本類的方法進(jìn)行處理。類通過(guò)一個(gè)簡(jiǎn)單的外部接口,與外界發(fā)生關(guān)系,對(duì)象與對(duì)象之間通過(guò)消息進(jìn)行通訊。這樣,程序模塊間的關(guān)系更為簡(jiǎn)單,程序模塊的獨(dú)立性、數(shù)據(jù)的安全性就有了良好的保障。通過(guò)實(shí)現(xiàn)繼承與多態(tài)性,還可以大大提高程序的可重用性,使得軟件的開(kāi)發(fā)和維護(hù)都更為方便。面向?qū)ο蠓椒ㄋ鶑?qiáng)調(diào)的基本原則,就是直接面對(duì)客觀存在的事物來(lái)進(jìn)行軟件開(kāi)發(fā),將人們?cè)谌粘I钪辛?xí)慣的思維方式和表達(dá)方式應(yīng)用在軟件開(kāi)發(fā)中,使軟件開(kāi)發(fā)從過(guò)分專業(yè)化的方法、規(guī)則和技巧中回到客觀世界,回到人們通常的思維。1-5什么

4、叫做封裝1-3什么是結(jié)構(gòu)化程序設(shè)計(jì)方法這種方法有哪些優(yōu)點(diǎn)和缺點(diǎn)解:結(jié)構(gòu)化程序設(shè)計(jì)的思路是:自頂向下、逐步求精;其程序結(jié)構(gòu)是按功能劃分為若干個(gè)基本模塊;各模塊之間的關(guān)系盡可能簡(jiǎn)單,在功能上相對(duì)獨(dú)立;每一模塊內(nèi)部均是由順序、選擇和循環(huán)三種基本結(jié)構(gòu)組成; 其模塊化實(shí)現(xiàn)的具體方法是使用子程序。結(jié)構(gòu)化程序設(shè)計(jì)由于采用了模塊分解與功能抽象,自頂向下、分而治之的方法,從而有效地將一個(gè)較復(fù)雜的程序系統(tǒng)設(shè)計(jì)任務(wù)分解成許多易于控制和處理的子任務(wù),便于開(kāi)發(fā)和維護(hù)。雖然結(jié)構(gòu)化程序設(shè)計(jì)方法具有很多的優(yōu)點(diǎn),但它仍是一種面向過(guò)程的程序設(shè)計(jì)方法,它把數(shù)據(jù)和處理數(shù)據(jù)的過(guò)程分離為相互獨(dú)立的實(shí)體。當(dāng)數(shù)據(jù)結(jié)構(gòu)改變時(shí),所有相關(guān)的處理過(guò)

5、程都要進(jìn)行相應(yīng)的修改,每一種相對(duì)于老問(wèn)題的新方法都要帶來(lái)額外的開(kāi)銷,程序的可重用性差。由于圖形用戶界面的應(yīng)用,程序運(yùn)行由順序運(yùn)行演變?yōu)槭录?qū)動(dòng), 使得軟件使用起來(lái)越來(lái)越方便, 但開(kāi)發(fā)起來(lái)卻越來(lái)越困難,解:封裝是面向?qū)ο蠓椒ǖ囊粋€(gè)重要原則,就是把對(duì)象的屬性和服務(wù)結(jié)合成一個(gè)獨(dú)立的系統(tǒng)單位,并盡可能隱蔽對(duì)象的內(nèi)部細(xì)節(jié)。1-6面向?qū)ο蟮能浖こ贪男┲饕獌?nèi)容解:面向?qū)ο蟮能浖こ淌敲嫦驅(qū)ο蠓椒ㄔ谲浖こ填I(lǐng)域的全面應(yīng)用,它包括面向?qū)ο蟮姆治觯∣OA)、面向?qū)ο蟮脑O(shè)計(jì)(OOD)、面向?qū)ο蟮木幊蹋∣OP)、面向?qū)ο蟮臏y(cè)試(OOT)和面向?qū)ο蟮能浖S護(hù)(OOSM)等主要內(nèi)容。1-7簡(jiǎn)述計(jì)算機(jī)內(nèi)部的信息可分為

6、幾類解: 計(jì)算機(jī)內(nèi)部的信息可以分成控制信息和數(shù)據(jù)信息二大類;控制 信息可分為指令和控制字兩類;數(shù)據(jù)信息可分為數(shù)值信息和非 數(shù)值信息兩類。碼,即所謂"符號(hào)絕對(duì)值表示"的編碼。正數(shù)的反碼和補(bǔ)碼與原碼表示相同。負(fù)數(shù)的反碼與原碼有如下關(guān)系:符符位相同(仍用1表示),其余各位取反(0變1,1變0)。補(bǔ)碼由該數(shù)反碼的最末位加1求得。1-8什么叫二進(jìn)制使用二進(jìn)制有何優(yōu)點(diǎn)和缺點(diǎn)解:二進(jìn)制是基數(shù)為2,每位的權(quán)是以2為底的冪的進(jìn)制,遵循逢二進(jìn)一原則,基本符符為0和1。采用二進(jìn)制碼表示信息,有如下幾個(gè)優(yōu)點(diǎn):1.易于物理實(shí)現(xiàn);2.二進(jìn)制數(shù)運(yùn)算簡(jiǎn)單;3.機(jī)器可靠性高;4.通用性強(qiáng)。其缺點(diǎn)是它表示數(shù)的

7、容量較小,表示同一個(gè)數(shù),二進(jìn)制較其他進(jìn)制需要更多的位數(shù)。第二章C+喻單程序設(shè)計(jì)2-1C+斑言有那些主要特點(diǎn)和優(yōu)點(diǎn)1-9 請(qǐng)將以下十進(jìn)制數(shù)值轉(zhuǎn)換為二進(jìn)制和十六進(jìn)制補(bǔ)碼:( 1) 2 ( 2 ) 9 ( 3) 93( 4) -32 ( 5) 65535 ( 6) -1解:( 1) (2) 10 = ( 10) 2 = (2) 16( 2) (9) 10 = ( 1001) 2 = (9) 16( 3) ( 93) 10 =( 1011101 ) 2 = ( 5D)16( 4) (-32) 10 = ()2 =( E0) 16( 5) ( 65535) 10 =( )2 = ( FFFF)16( 6

8、) ( -1) 10 =( )2 =( FFFF) 162-2 下列標(biāo)識(shí)符哪些是合法的解:C+鋪言的主要特點(diǎn)表現(xiàn)在兩個(gè)方面,一是全面兼容C,二是支持面向?qū)ο蟮姆椒?。C+$一個(gè)更好的C,它保持了C的簡(jiǎn)潔、高效、接近匯編語(yǔ)言、具有良好的可讀性和可移植性等特點(diǎn),對(duì)C的類型系統(tǒng)進(jìn)行了改革和擴(kuò)充,因此C+北匕C更安全,C+的編譯系統(tǒng)能檢查出更多的類型錯(cuò)誤。C+語(yǔ)言最重要的特點(diǎn)是支持面向?qū)ο?。Program,-page,_lock,test2,3in1,mail,A_B_C_D解:Program,_lock,test2,A_B_C_D是合法的標(biāo)識(shí)符,其它的不是。1-10請(qǐng)將以下數(shù)值轉(zhuǎn)換為十進(jìn)制:(1)(1

9、010)2(2)()2(3)(01011111)2(4)(7F)16(5)(2D3E)16(6)(F10E)16解:(1) (1010)2=(10)10(2) ()2=(143)10(3) (01011111)2=(24515)10(4) (7F)16=(127)10(5) (2D3E)16=(11582)10(6) (F10E)16=(61710)101-11簡(jiǎn)要比較原碼、反碼、補(bǔ)碼等幾種編碼方法。2-3例中每條語(yǔ)句的作用是什么#include<>voidmain(void)cout<<"Hello!n"cout<<"Welc

10、ometoc+!n"解:#include<>201/42. 201%43. 201/解:150解:原碼:將符符位數(shù)字化為0或1,數(shù)的絕對(duì)值與符符一起編21n+=2;3while(n<=200);2-10執(zhí)行完下列語(yǔ)句后,a、b、c三個(gè)變量的值為多少a=30;b=a+;c=+a;解:a:32;b:30;c:32;2-11在一個(gè)for循環(huán)中,可以初始化多個(gè)變量嗎如何實(shí)現(xiàn)2-14if(x=3)和if(x=3)這兩條語(yǔ)句的差別是什么解:語(yǔ)句if(x=3)把3賦給x,賦值表達(dá)式的值為true,作為if語(yǔ)句的條件;語(yǔ)句if(x=3)首先判斷x的值是否為3,若相等條件表達(dá)式的值為

11、ture,否則為false。2-15什么叫做作用域什么叫做局部變量什么叫做全局變量,如何使用全局變量解:在for循環(huán)設(shè)置條件的第一個(gè)""前,用,分隔不同的賦值表達(dá)式。例如:for(x=0,y=10;x<100;x+,y+)2-12執(zhí)行完下列語(yǔ)句后,n的值為多少intn;for(n=0;n<100;n+)解:n的值為1002-13寫(xiě)一條for語(yǔ)句,計(jì)數(shù)條件為n從100到200,步長(zhǎng)為2;然后用while和dowhile語(yǔ)句完成同樣的循環(huán)。解:for循環(huán):for(intn=100;n<=200;n+=2);while循環(huán):intx=100;while(n<

12、;=200)n+=2;dowhile循環(huán):intn=100;do解:作用域是一個(gè)標(biāo)識(shí)符在程序正文中有效的區(qū)域。局部變量,一般來(lái)講就是具有塊作用域的變量;全局變量,就是具有文件作用域的變量。2-16已知x、y兩個(gè)變量,寫(xiě)一條簡(jiǎn)單的if語(yǔ)句,把較小的的值賦給原本值較大的變量。解:if(x>y)x=y;elsen"cout<<"Thesizeofashortintis:t"<<sizeof(short)<<bytes.n"cout<<"Thesizeofalongintis:t"<

13、<sizeof(long)<<"bytes.n"cout<<"Thesizeofacharis:tt"<<sizeof(char)<<"bytes.n"cout<<"Thesizeofafloatis:tt"<<sizeof(float)<<"bytes.n"cout<<"Thesizeofadoubleis:t"<<sizeof(double)<<b

14、ytes.n"return0;程序運(yùn)行輸出:Thesizeofanintis:4bytes.Thesizeofashortintis:2bytes.Thesizeofalongintis:4bytes.Thesizeofacharis:1bytes.Thesizeofafloatis:4bytes.Thesizeofadoubleis:8bytes.2-20打印ASCII碼為32127的字符解:#include <>int main()for (int i = 32; i<128; i+)cout << (char) i;return 0;程序運(yùn)行輸出:

15、!"#$%G'()*+ , ./09:;<>ABCDEFGHIJKLMNOP_QRSTUVWXYZF' abcdefghijklmnopqrstuvwxyz<|>s2-21 運(yùn)行下面的程序,觀察其輸出,與你的設(shè)想是否相同#include <>int main()unsigned int x;unsigned int y = 100;unsigned int z = 50;x= y - z;cout << "Difference is: " << x;x = z - y;cout <&

16、lt; "nNow difference is: " << x <<endl;return 0;解:程序運(yùn)行輸出:Difference is: 50Now difference is: 46注意,第二行的輸出并非-50,注意x、 y 、 z 的數(shù)據(jù)類型。2-22運(yùn)行下面的程序,觀察其輸出,體會(huì)i+與+i的差別。#include <>int main()int myAge = 39; n"cout << "You are: " << yourAge << " yea

17、rs oldn"myAge+; .n"cout << "I am: " << myAge << " years old.n"cout << "You are: " << yourAge << " years oldn"cout << "Another year passesn"cout << "I am: " << myAge+ << &

18、quot; years old.n"cout << "You are: " << +yourAge << " years oldn"cout<<"Let'sprintitagain.n"cout<<"Iam:"<<myAge<<"yearsold.n"cout<<"Youare:"<<yourAge<<"yearsoldn&quo

19、t;return0;解:程序運(yùn)行輸出:Iam39yearsoldYouare39yearsoldOneyearpassesIam40yearsoldYouare40yearsoldAnotheryearpassesIam40yearsoldYouare41yearsoldLet'sprintitagainIam41yearsoldYouare41yearsold2-23什么叫常量什么叫變量解:所謂常量是指在程序運(yùn)行的整個(gè)過(guò)程中其值始終不可改變的量,除了用文字表示常量外,也可以為常量命名,這就是符號(hào)常量;在程序的執(zhí)行過(guò)程中其值可以變化的量稱為變量,變量是需要用名字來(lái)標(biāo)識(shí)的。2-24變量有

20、哪幾種存儲(chǔ)類型解:變量有以下幾種存儲(chǔ)類型:auto存儲(chǔ)類型:采用堆棧方式分配內(nèi)存空間,屬于一時(shí)性存儲(chǔ),其存儲(chǔ)空間可以被若干變量多次覆蓋使用;register存儲(chǔ)類型:存放在通用寄存器中;extern存儲(chǔ)類型:在所有函數(shù)和程序段中都可引用;static存儲(chǔ)類型:在內(nèi)存中是以固定地址存放的,在整個(gè)程序運(yùn)行期間都有效。2-25寫(xiě)出下列表達(dá)式的值:1. 2<3&&6<92. !(4<7)3. !(3>5)|(6<2)解:1. true2. false3. true2-26若a=1,b=2,c=3,下列各式的結(jié)果是什么1. a|b-c2. a人b&-

21、c3. a&b|c4. a|b&c解:1 -12 13 34 32-27若a=1,下列各式的結(jié)果是什么1. !a|a2. a|a3. a人acout<<"現(xiàn)在正在下雨嗎(YesorNo)cin>>flag;if(toupper(flag)='Y')cout<<"現(xiàn)在正在下雨。"break;if(toupper(flag)='N')cout<<"現(xiàn)在沒(méi)有下雨。"break;程序運(yùn)行輸出:現(xiàn)在正在下雨嗎(YesorNo):x現(xiàn)在正在下雨嗎(YesorNo

22、):l現(xiàn)在正在下雨嗎(YesorNo):q現(xiàn)在正在下雨嗎(YesorNo):n現(xiàn)在沒(méi)有下雨?;颍含F(xiàn)在正在下雨嗎(YesorNo):y現(xiàn)在正在下雨。4.a>>2解:1 12 -13 04 02-29編寫(xiě)一個(gè)完整的程序,運(yùn)行時(shí)向用戶提問(wèn)"你考試考了多少分(0100)",接收輸入后判斷其等級(jí),顯示出來(lái)。規(guī)則如下:解:#include<>2-28編寫(xiě)一個(gè)完整的程序,實(shí)現(xiàn)功能:向用戶提問(wèn)"現(xiàn)在正在voidmain()下雨嗎",提示用戶輸入丫或N。若輸入為Y,顯示"現(xiàn)在正在下雨。";若輸入為N,顯不"現(xiàn)在沒(méi)有下雨

23、。";否則繼續(xù)提inti,score;問(wèn)"現(xiàn)在正在下雨嗎"cout<<"你考試考了多少分(0100):"解:源程序:cin>>score;if(score>100|score<0)cout<<"分?jǐn)?shù)值必須在0到100之間!"#include<>else#include<>voidmain()charflag;while(1)i=score/10;switch(i)case10:case9:cout<<"你的成績(jī)?yōu)閮?yōu)!"br

24、eak;case8:cout<<"你的成績(jī)?yōu)榱迹?quot;break;case7:case6:cout<<"你的成績(jī)?yōu)橹校?quot;break;default:cout<<"你的成績(jī)?yōu)椴睿?quot;程序運(yùn)行輸出:你考試考了多少分(0100):85你的成績(jī)?yōu)榱迹?-30(1)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的菜單程序,運(yùn)行時(shí)顯示"Menu:A(dd)D(elete)S(ort)Q(uit),Selectone:"提示用戶輸入,A表示增加,D表示刪除,S表示排序,Q表示退出,輸入為A、D、S時(shí)分別提示"數(shù)據(jù)已經(jīng)增加、

25、刪除、排序。"輸入為Q時(shí)程序結(jié)束。要求使用ifelse語(yǔ)句進(jìn)行判斷,用break、continue控制程序流程。elseif(choice='S')cout<<"數(shù)據(jù)已經(jīng)排序."<<endl;continue;elseif(choice='Q')break;程序運(yùn)行輸出:Menu:A(dd)D(elete)S(ort)Q(uit),Selectone:a數(shù)據(jù)已經(jīng)增加.Menu:A(dd)D(elete)S(ort)Q(uit),Selectone:d數(shù)據(jù)已經(jīng)刪除.Menu:A(dd)D(elete)S(ort

26、)Q(uit),Selectone:s數(shù)據(jù)已經(jīng)排序.Menu:A(dd)D(elete)S(ort)Q(uit),Selectone:q(2)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的菜單程序,運(yùn)行時(shí)顯示"Menu:A(dd)D(elete)S(ort)Q(uit),Selectone:"提示用戶輸入,A表示增加,D表示刪除,S表示排序,Q表示退出,輸入為A、D、S時(shí)分別提示"數(shù)據(jù)已經(jīng)增加、刪除、排序。"輸入為Q時(shí)程序結(jié)束。要求使用Switch語(yǔ)句。解:源程序:#include<>#include<>解:#include<>#include<

27、;>voidmain()charchoice,c;while(1)cout<<"Menu:A(dd)D(elete)S(ort)Q(uit),Selectone:"cin>>c;choice=toupper(c);if(choice='A')cout<<"數(shù)據(jù)已經(jīng)增加."<<endl;continue;elseif(choice='D')cout<<"數(shù)據(jù)已經(jīng)刪除."<<endl;continue;voidmain()char

28、choice;while(1)cout<<"Menu:A(dd)D(elete)S(ort)Q(uit),Selectonecin>>choice;switch(toupper(choice)case'A':cout<<"數(shù)據(jù)已經(jīng)增加."<<endl;break;case'D':cout<<"數(shù)據(jù)已經(jīng)刪除."<<endl;break;case'S':cout<<"數(shù)據(jù)已經(jīng)排序."<<

29、endl;break;case'Q':exit(0);break;default:使用 for 循環(huán)語(yǔ)句:#include <>#include <>void main()int i,j,k,flag;for(i = 2; i <= 100; i+)flag = 1;k = sqrt(i);for (j = 2; j <= k; j+)if(i%j = 0)flag = 0;break;if (flag)cout << i << "是質(zhì)數(shù) ."程序運(yùn)行輸出:2 是質(zhì)數(shù).3 是質(zhì)數(shù).<<

30、endl;#include<>voidmain()程序運(yùn)行輸出:inti,j,k,flag;Menu:A(dd)D(elete)S(ort)Q(uit),Selectone:ai=2;數(shù)據(jù)已經(jīng)增加.doMenu:A(dd)D(elete)S(ort)Q(uit),Selectone:dflag=1;數(shù)據(jù)已經(jīng)刪除.k=sqrt(i);Menu:A(dd)D(elete)S(ort)Q(uit),Selectone:sj=2;數(shù)據(jù)已經(jīng)排序.doMenu:A(dd)D(elete)S(ort)Q(uit),Selectone:qif(i%j=0)flag=0;2-31用窮舉法找出1100

31、間的質(zhì)數(shù),顯示出來(lái)。分別使用while,break;do-while,for循環(huán)語(yǔ)句實(shí)現(xiàn)。j+;while(j<=k);解:if(flag)源程序:cout<<i<<"是質(zhì)數(shù)."使用while循環(huán)語(yǔ)句:i+;#include<>while(i<=100);#include<><<endl;voidmain()inti,j,k,flag;i=2;while(i<=100)flag=1;k=sqrt(i);j=2;while(j<=k)if(i%j=0)flag=0;break;j+;if(fl

32、ag)cout<<i<<"是質(zhì)數(shù)."<<endl;i+;使用dowhile循環(huán)語(yǔ)句:#include<>5 是質(zhì)數(shù).7 是質(zhì)數(shù).11 是質(zhì)數(shù).13 是質(zhì)數(shù).17 是質(zhì)數(shù).19 是質(zhì)數(shù).23 是質(zhì)數(shù).29 是質(zhì)數(shù).31 是質(zhì)數(shù).37 是質(zhì)數(shù).41 是質(zhì)數(shù).43 是質(zhì)數(shù).47 是質(zhì)數(shù).53 是質(zhì)數(shù).59 是質(zhì)數(shù).61 是質(zhì)數(shù).67 是質(zhì)數(shù).71 是質(zhì)數(shù).73 是質(zhì)數(shù).79 是質(zhì)數(shù).83 是質(zhì)數(shù).89 是質(zhì)數(shù).97 是質(zhì)數(shù).解:nNumberone:"cin>>one;cout<<"Num

33、bertwo:"cin>>two;answer=Divider(one,two);if(answer>-1)cout<<"Answer:"<<answer;elsecout<<"Error,can'tdividebyzero!"return0;程序運(yùn)行輸出:Entertwonumbers.Numberone:8Numbertwo:2Answer:43-8編寫(xiě)函數(shù)把華氏溫度轉(zhuǎn)換為攝氏溫度,公式為:C=(F-32)*5/9;在主程序中提示用戶輸入一個(gè)華氏溫度,轉(zhuǎn)化后輸出相應(yīng)的攝氏溫度。解

34、:源程序見(jiàn) "實(shí)驗(yàn)指導(dǎo)"部分實(shí)驗(yàn)三2-32比較Break語(yǔ)句與Continue語(yǔ)句的不同用法。解:Break使程序從循環(huán)體和switch語(yǔ)句內(nèi)跳出,繼續(xù)執(zhí)行邏輯上的下一條語(yǔ)句,不能用在別處;continue語(yǔ)句結(jié)束本次循環(huán),接著開(kāi)始判斷決定是否繼續(xù)執(zhí)行下一次循環(huán);2-33定義一個(gè)表示時(shí)間的結(jié)構(gòu)體,可以精確表示年、月、日、小時(shí)、分、秒;提示用戶輸入年、月、日、小時(shí)、分、秒的值,然后完整地顯示出來(lái)。解:源程序見(jiàn)"實(shí)驗(yàn)指導(dǎo)"部分實(shí)驗(yàn)二2-34在程序中定義一個(gè)整型變量,賦以1100的值,要求用戶猜這個(gè)數(shù),比較兩個(gè)數(shù)的大小,把結(jié)果提示給用戶,直到猜對(duì)為止。分別使用

35、while、do-while語(yǔ)句實(shí)現(xiàn)循環(huán)。3-9編寫(xiě)函數(shù)判斷一個(gè)數(shù)是否是質(zhì)數(shù),在主程序中實(shí)現(xiàn)輸入、輸出。解:#include<>#include<>intprime(inti);<<endl;elsecout<<i<<"不是質(zhì)數(shù)."<<endl;intprime(inti)intj,k,flag;flag=1;k=sqrt(i);for(j=2;j<=k;j+)if(i%j=0)flag=0;break;if(flag)return1;elsereturn0;程序運(yùn)行輸出:請(qǐng)輸入一個(gè)整數(shù):1151

36、1151是質(zhì)數(shù).3-10編寫(xiě)函數(shù)求兩個(gè)整數(shù)的最大公約數(shù)和最小公倍數(shù)。解:源程序:#include<>#include<>intfn1(inti,intj);n"(7);(20);cout<<"NowJackis"cout<<()<<"yearsoldand"cout<<()<<"poundsweight."return0;程序運(yùn)行輸出:JackisaDogwhois2yearsoldand10poundsweight.NowJackis7ye

37、GetBottom()constreturnitsBottom;intGetRight()constreturnitsRight;voidSetTop(inttop)itsTop=top;voidSetLeft(intleft)itsLeft=left;voidSetBottom(intbottom)itsBottom=bottom;voidSetRight(intright)itsRight=right;intGetArea()const;private:intitsTop;intitsLeft;intitsBottom;intitsRight

38、;Rectangle:Rectangle(inttop,intleft,intbottom,intright)itsTop=top;itsLeft=left;itsBottom=bottom;itsRight=right;intRectangle:GetArea()constintWidth=itsRight-itsLeft;intHeight=itsTop-itsBottom;return(Width*Height);intmain()RectangleMyRectangle(100,20,50,80);4-9 設(shè)計(jì)并測(cè)試一個(gè)名為Rectangle 的矩形類, 其屬性為矩形的左下角與右上角兩

39、個(gè)點(diǎn)的坐標(biāo),能計(jì)算矩形的面積。解:源程序:#include <>class Rectanglepublic:Rectangle (int top, int left, int bottom, int right);Rectangle () int GetTop() const return itsTop; int GetLeft() const return itsLeft; intArea=();cout<<"Area:"<<Area<<"n"return0;程序運(yùn)行輸出:Area:3000UpperLe

40、ftXCoordinate:204-10設(shè)計(jì)一個(gè)用于人事管理的People(人員)類。考慮到通用性,這里只抽象出所有類型人員都具有的屬性:number(編號(hào))、sex(性別)、birthday(出生日期)、id(身份證號(hào))等等。其中"出生日期"定義為一個(gè)"日期"類內(nèi)嵌子對(duì)象。用成員函數(shù)實(shí)現(xiàn)對(duì)人員信息的錄入和顯示。要求包括:構(gòu)造函數(shù)和析構(gòu)函數(shù)、拷貝構(gòu)造函數(shù)、內(nèi)聯(lián)成員函數(shù)、帶缺省形參值的成員函數(shù)、聚集。4-12定義一個(gè)"數(shù)據(jù)類型"datatype類,能處理包含字符型、整型、浮點(diǎn)型三種類型的數(shù)據(jù),給出其構(gòu)造函數(shù)。解:本題用作實(shí)驗(yàn)四的選做題,

41、因此不給出答案。解:#include<>4-11定義一個(gè)矩形類,有長(zhǎng)、寬兩個(gè)屬性,有成員函數(shù)計(jì)算矩形的面積解:#include<>classRectanglepublic:Rectangle(floatlen,floatwidth)Length=len;Width=width;Rectangle();floatGetArea()returnLength*Width;floatGetLength()returnLength;floatGetWidth()returnWidth;private:floatLength;floatWidth;voidmain()floatle

42、ngth,width;cout<<"請(qǐng)輸入矩形的長(zhǎng)度:"cin>>length;cout<<"請(qǐng)輸入矩形的寬度:"cin>>width;Rectangler(length,width);cout<<"長(zhǎng)為"<<length<<"寬為"<<width<<為:"<<()<<endl;程序運(yùn)行輸出:請(qǐng)輸入矩形的長(zhǎng)度:5請(qǐng)輸入矩形的寬度:4長(zhǎng)為5寬為4的矩形的面積為:20classd

43、atatypeenumcharacter,integer,floating_pointvartype;unioncharc;inti;floatf;public:datatype(charch)vartype=character;c=ch;datatype(intii)vartype=integer;i=ii;datatype(floatff)vartype=floating_point;f=ff;voidprint();voiddatatype:print()switch(vartype)casecharacter:cout<<"字符型:"<<c&

44、lt;<endl;"的矩形的面積break;caseinteger:cout<<"整型:"<<i<<endl;break;casefloating_point:cout<<"浮點(diǎn)型:"<<f<<endl;break;voidmain()datatypeA('c'),B(12),C;();();();程序運(yùn)行輸出:字符型:c整型:12浮點(diǎn)型:#include<>classTreeintages;public:Tree(intn=0);Tree

45、();voidgrow(intyears)voidage();Tree:Tree(intn)ages=n;4-13定義一個(gè)Circle類,有數(shù)據(jù)成員半徑Radius,成員函數(shù)GetArea(),計(jì)算圓的面積,構(gòu)造一個(gè)Circle的對(duì)象進(jìn)行測(cè)試。Tree:Tree()age();解:#include<>voidTree:grow(intyears)classCirclepublic:Circle(floatradius)Radius=radius;Circle()floatGetArea()return*Radius*Radius;private:floatRadius;voidma

46、in()floatradius;cout<<"請(qǐng)輸入圓的半徑:"cin>>radius;Circlep(radius);cout<<"半徑為"<<radius<<"的圓的面積為:"<<()<<endl;ages+=years;voidTree:age()cout<<"這棵樹(shù)的年齡為"<<ages<<endl;voidmain()Treet(12);();(4);程序運(yùn)行輸出:這棵樹(shù)的年齡為12這棵

47、樹(shù)的年齡為16程序運(yùn)行輸出:請(qǐng)輸入圓的半徑:5半徑為5的圓的面積為:第五章C+®序的基本結(jié)構(gòu)4-14定義一個(gè)tree類,有成員ages,成員函數(shù)grow(intyears)對(duì)ages力口上years,age()顯示tree對(duì)象的ages的值。5-1什么叫做作用域有哪幾種類型的作用域解:解:作用域討論的是標(biāo)識(shí)符的有效范圍,作用域是一個(gè)標(biāo)識(shí)符在程序正文中有效的區(qū)域。C+的作用域分為函數(shù)原形作用域、塊作BackfrommyFunction!用域(局部作用域)、類作用域和文件作用域.xfrommain:5yfrommain:75-2什么叫做可見(jiàn)性可見(jiàn)性的一般規(guī)則是什么解:類的靜態(tài)數(shù)據(jù)成員是類

48、的數(shù)據(jù)成員的一種特例,采用 static 關(guān)鍵字來(lái)聲明。對(duì)于類的普通數(shù)據(jù)成員,每一個(gè)類的對(duì)象都擁有一個(gè)拷貝,就是說(shuō)每個(gè)對(duì)象的同名數(shù)據(jù)成員可以分別存儲(chǔ)不同的數(shù)值,這也是保證對(duì)象擁有自身區(qū)別于其它對(duì)象的特征的需要,但是靜態(tài)數(shù)據(jù)成員,每個(gè)類只要一個(gè)拷貝,由所有該類的對(duì)象共同維護(hù)和使用,這個(gè)共同維護(hù)、使用也就實(shí)現(xiàn)了同一類的不同對(duì)象之間的數(shù)據(jù)共享。解:可見(jiàn)性是標(biāo)識(shí)符是否可以引用的問(wèn)題;可見(jiàn)性的一般規(guī)則是:標(biāo)識(shí)符要聲明在前,引用在后,在同一作用域中,不能聲明同名的標(biāo)識(shí)符。對(duì)于在不同的作用域聲明的標(biāo)識(shí)符,遵循的原則是:若有兩個(gè)或多個(gè)具有包含關(guān)系的作用域,外層聲明的標(biāo)識(shí)符如果在內(nèi)層沒(méi)有聲明同名標(biāo)識(shí)符時(shí)仍可見(jiàn),

49、如果內(nèi)層聲明了同名標(biāo)識(shí)符則外層標(biāo)識(shí)符不可見(jiàn)。5-3下面的程序的運(yùn)行結(jié)果是什么,實(shí)際運(yùn)行一下,看看與你的設(shè)想有何不同。#include<>voidmyFunction();intx=5,y=7;intmain()cout<<"xfrommain:"<<x<<"n"cout<<"yfrommain:"<<y<<"nn"myFunction();cout<<"BackfrommyFunction!nn"co

50、ut<<"xfrommain:"<<x<<"n"cout<<"yfrommain:"<<y<<"n"return0;voidmyFunction()inty=10;cout<<"xfrommyFunction:"<<x<<"n"cout<<"yfrommyFunction:"<<y<<"nn"解

51、:程序運(yùn)行輸出:xfrommain:5yfrommain:7xfrommyFunction:5yfrommyFunction:105-4假設(shè)有兩個(gè)無(wú)關(guān)系的類Engine和Fuel,使用時(shí),怎樣允許Fuel成員訪問(wèn)Engine中的私有和保護(hù)的成員解:源程序:classfuel;classenginefriendclassfuel;private;intpowerlevel;public;engine()powerLevel=0;voidengine_fn(fuel&f);classfuelfriendclassengine;private;intfuelLevel;public:fuel

52、()fuelLevel=0;voidfuel_fn(engine&e);5-5什么叫做靜態(tài)數(shù)據(jù)成員它有何特點(diǎn)5-6什么叫做靜態(tài)函數(shù)成員它有何特點(diǎn)5-7定義一個(gè)Cat類,擁有靜態(tài)數(shù)據(jù)成員HowManyCats,記錄Cat 的 個(gè) 體 數(shù) 目 ; 靜 態(tài) 成 員 函 數(shù) GetHowMany ( ) , 存 取 HowManyCats 。設(shè)計(jì)程序測(cè)試這個(gè)類,體會(huì)靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)的用法。delete CatHousei;TelepathicFunction();return 0;void TelepathicFunction()cout << "There a

53、re " << Cat:GetHowMany() << " cats alive!n"程序運(yùn)行輸出:There are 1 cats alive!There are 2 cats alive!There are 3 cats alive!There are 4 cats alive!There are 5 cats alive!There are 4 cats alive!There are 3 cats alive!There are 2 cats alive!There are 1 cats alive!There are 0 cats

54、 alive!5-8 什么叫做友元函數(shù)什么叫做友元類解:友元函數(shù)是使用 friend 關(guān)鍵字聲明的函數(shù),它可以訪問(wèn)相應(yīng)類的保護(hù)成員和私有成員。 友元類是使用 friend 關(guān)鍵字聲明的類,它的所有成員函數(shù)都是相應(yīng)類的友元函數(shù)。5-9 如果類 A 是類 B 的友元,類B 是類 C 的友元,類D 是類 A的派生類, 那么類 B 是類 A 的友元嗎類 C 是類 A 的友元嗎類 D 是類 B 的友元嗎解:使用static關(guān)鍵字聲明的函數(shù)成員是靜態(tài)的,靜態(tài)函數(shù)成員屬于整個(gè)類,同一個(gè)類的所有對(duì)象共同維護(hù),為這些對(duì)象所共享。靜態(tài)函數(shù)成員具有以下兩個(gè)方面的好處,一是由于靜態(tài)成員函數(shù)只能直接訪問(wèn)同一個(gè)類的靜態(tài)數(shù)

55、據(jù)成員,可以保證不會(huì)對(duì)該類的其余數(shù)據(jù)成員造成負(fù)面影響;二是同一個(gè)類只維護(hù)一個(gè)靜態(tài)函數(shù)成員的拷貝,節(jié)約了系統(tǒng)的開(kāi)銷,提高程序的運(yùn)行效率。解:源程序:#include<>classCatpublic:Cat(intage):itsAge(age)HowManyCats+;virtualCat()HowManyCats-;virtualintGetAge()returnitsAge;virtualvoidSetAge(intage)itsAge=age;staticintGetHowMany()returnHowManyCats;private:intitsAge;staticintHo

56、wManyCats;intCat:HowManyCats=0;voidTelepathicFunction();intmain()constintMaxCats=5;Cat*CatHouseMaxCats;inti;for(i=0;i<MaxCats;i+)CatHousei=newCat(i);TelepathicFunction();解:類B不是類A的友元,友元關(guān)系不具有交換性;類C不是類A的友元,友元關(guān)系不具有傳遞性;類D不是類B的友元,友元關(guān)系不能被繼承。5-10靜態(tài)成員變量可以為私有的嗎聲明一個(gè)私有的靜態(tài)整型成員變量。for(i=0;i<MaxCats;i+)解:可以,例

57、如:private:staticinta;intmain()DogJack;();();cout << " Jack is " << () << " years oldn"return 0;5-11在一個(gè)文件中定義一個(gè)全局變量n,主函數(shù)main(),在另一個(gè)文件中定義函數(shù)fn1(),在main()中對(duì)n賦值,再調(diào)用fn1(),在fn1()中也對(duì)n賦值,顯示n最后的值。解:#include<>#include""intn;voidmain()n=20;fn1();cout<<"n的值為"<<n;.n"private:myColoritsColor;Mammal:Mammal():itsAge(1),itsWeight(5)cout<<"Mammalconstructor.n"Mammal:Mammal()cout<<"Mammaldestructor.n"Dog:Dog():itsColor(WHITE)cout<<"Dogconstructor.n"程序運(yùn)行輸出:Mammalconstructor.

溫馨提示

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

評(píng)論

0/150

提交評(píng)論