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

下載本文檔

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

文檔簡(jiǎn)介

1、第 一 章 概述1-1 簡(jiǎn)述計(jì)算機(jī)程序設(shè)計(jì)語言的發(fā)展歷程。解: 迄今為止計(jì)算機(jī)程序設(shè)計(jì)語言的發(fā)展經(jīng)歷了機(jī)器語言、匯編語言、高級(jí)語言等階段,C+語言是一種面向?qū)ο蟮木幊陶Z言,也屬于高級(jí)語言。1-2 面向?qū)ο蟮木幊陶Z言有哪些特點(diǎn)?解: 面向?qū)ο蟮木幊陶Z言與以往各種編程語言有根本的不同,它設(shè)計(jì)的出發(fā)點(diǎn)就是為了能更直接的描述客觀世界中存在的事物以及它們之間的關(guān)系。面向?qū)ο蟮木幊陶Z言將客觀事物看作具有屬性和行為的對(duì)象,通過抽象找出同一類對(duì)象的共同屬性(靜態(tài)特征)和行為(動(dòng)態(tài)特征),形成類。通過類的繼承與多態(tài)可以很方便地實(shí)現(xiàn)代碼重用,大大縮短了軟件開發(fā)周期,并使得軟件風(fēng)格統(tǒng)一。因此,面向?qū)ο蟮木幊陶Z言使程

2、序能夠比較直接地反問題域的本來面目,軟件開發(fā)人員能夠利用人類認(rèn)識(shí)事物所采用的一般思維方法來進(jìn)行軟件開發(fā)。C+語言是目前應(yīng)用最廣的面向?qū)ο蟮木幊陶Z言。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ù),便于開發(fā)和維護(hù)。 雖然結(jié)

3、構(gòu)化程序設(shè)計(jì)方法具有很多的優(yōu)點(diǎn),但它仍是一種面向過程的程序設(shè)計(jì)方法,它把數(shù)據(jù)和處理數(shù)據(jù)的過程分離為相互獨(dú)立的實(shí)體。當(dāng)數(shù)據(jù)結(jié)構(gòu)改變時(shí),所有相關(guān)的處理過程都要進(jìn)行相應(yīng)的修改,每一種相對(duì)于老問題的新方法都要帶來額外的開銷,程序的可重用性差。由于圖形用戶界面的應(yīng)用,程序運(yùn)行由順序運(yùn)行演變?yōu)槭录?qū)動(dòng),使得軟件使用起來越來越方便,但開發(fā)起來卻越來越困難,對(duì)這種軟件的功能很難用過程來描述和實(shí)現(xiàn),使用面向過程的方法來開發(fā)和維護(hù)都將非常困難。 1-4 什么是對(duì)象?什么是面向?qū)ο蠓椒??這種方法有哪些特點(diǎn)?解: 從一般意義上講,對(duì)象是現(xiàn)實(shí)世界中一個(gè)實(shí)際存在的事物,它可以是有形的,也可以是無形的。對(duì)象是構(gòu)成世界的一個(gè)

4、獨(dú)立單位,它具有自己的靜態(tài)特征和動(dòng)態(tài)特征。面向?qū)ο蠓椒ㄖ械膶?duì)象,是系統(tǒng)中用來描述客觀事物的一個(gè)實(shí)體,它是用來構(gòu)成系統(tǒng)的一個(gè)基本單位,由一組屬性和一組行為構(gòu)成。面向?qū)ο蟮姆椒▽?shù)據(jù)及對(duì)數(shù)據(jù)的操作方法放在一起,作為一個(gè)相互依存、不可分離的整體-對(duì)象。對(duì)同類型對(duì)象抽象出其共性,形成類。類中的大多數(shù)數(shù)據(jù),只能用本類的方法進(jìn)行處理。類通過一個(gè)簡(jiǎn)單的外部接口,與外界發(fā)生關(guān)系,對(duì)象與對(duì)象之間通過消息進(jìn)行通訊。這樣,程序模塊間的關(guān)系更為簡(jiǎn)單,程序模塊的獨(dú)立性、數(shù)據(jù)的安全性就有了良好的保障。通過實(shí)現(xiàn)繼承與多態(tài)性,還可以大大提高程序的可重用性,使得軟件的開發(fā)和維護(hù)都更為方便。面向?qū)ο蠓椒ㄋ鶑?qiáng)調(diào)的基本原則,就是直接

5、面對(duì)客觀存在的事物來進(jìn)行軟件開發(fā),將人們?cè)谌粘I钪辛?xí)慣的思維方式和表達(dá)方式應(yīng)用在軟件開發(fā)中,使軟件開發(fā)從過分專業(yè)化的方法、規(guī)則和技巧中回到客觀世界,回到人們通常的思維。1-5 什么叫做封裝?解: 封裝是面向?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ù)值信息兩類。 1-8 什么叫二進(jìn)制?使用二進(jìn)制有何優(yōu)點(diǎn)和缺點(diǎn)?解: 二進(jìn)制是基數(shù)為2,每位的權(quán)是以2 為底的冪的進(jìn)制,遵循逢二進(jìn)一原則,基本符號(hào)為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ù)的容量較小,表示同一個(gè)數(shù),二進(jìn)制較其他進(jìn)制需要更多的位數(shù)。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 解: (

7、1) (2)10 = (10)2 = (2)16(2) (9)10 = (1001)2 = (9)16(3) (93)10 = (1011101)2 = (5D)16(4) (-32)10 = (11100000)2 = (E0)16(5) (65535)10 = (11111111 11111111)2 = (FFFF)16(6) (-1)10 = (11111111 11111111)2 = (FFFF)161-10 請(qǐng)將以下數(shù)值轉(zhuǎn)換為十進(jìn)制:(1)(1010)2 (2)(10001111)2 (3)(01011111 11000011)2 (4)(7F)16 (5)(2D3E)16 (6

8、)(F10E)16解: (1)(1010)2 = (10)10(2)(10001111)2 = (143)10(3)(01011111 11000011)2 = (24515)10(4)(7F)16 = (127)10(5)(2D3E)16 = (11582)10(6)(F10E)16 = (61710)101-11 簡(jiǎn)要比較原碼、反碼、補(bǔ)碼等幾種編碼方法。解: 原碼:將符號(hào)位數(shù)字化為 0 或 1,數(shù)的絕對(duì)值與符號(hào)一起編碼,即所謂符號(hào)絕對(duì)值表示的編碼。正數(shù)的反碼和補(bǔ)碼與原碼表示相同。負(fù)數(shù)的反碼與原碼有如下關(guān)系:符號(hào)位相同(仍用1表示),其余各位取反(0變1,1變0)。補(bǔ)碼由該數(shù)反碼的最末位加1

9、求得。 第 二 章 C+簡(jiǎn)單程序設(shè)計(jì)2-1 C+語言有那些主要特點(diǎn)和優(yōu)點(diǎn)?解: C+語言的主要特點(diǎn)表現(xiàn)在兩個(gè)方面,一是全面兼容C,二是支持面向?qū)ο蟮姆椒?。C+是一個(gè)更好的C,它保持了C的簡(jiǎn)潔、高效、接近匯編語言、具有良好的可讀性和可移植性等特點(diǎn),對(duì)C的類型系統(tǒng)進(jìn)行了改革和擴(kuò)充,因此C+比C更安全,C+的編譯系統(tǒng)能檢查出更多的類型錯(cuò)誤。 C+語言最重要的特點(diǎn)是支持面向?qū)ο蟆?-2 下列標(biāo)識(shí)符哪些是合法的?Program, -page, _lock, test2, 3in1, mail, A_B_C_D解: Program, _lock, test2, A_B_C_D是合法的標(biāo)識(shí)符,其它的不是。2

10、-3 例2.1中每條語句的作用是什么?#include void main(void)coutHello!n;coutWelcome to c+!n;解: #include /指示編譯器將文件iostream.h中的代碼/嵌入到該程序中該指令所在的地方void main() /主函數(shù)名,void 表示函數(shù)沒有返回值 /函數(shù)體標(biāo)志coutHello!n; /輸出字符串Hello!到標(biāo)準(zhǔn)輸出設(shè)備(顯示器)上。coutWelcome to c+!n; /輸出字符串Welcome to c+!在屏幕輸出如下:Hello!Welcome to c+!2-4 使用關(guān)鍵字const而不是#define語句的

11、好處有哪些?解: const定義的常量是有類型的,所以在使用它們時(shí)編譯器可以查錯(cuò);而且,這些變量在調(diào)試時(shí)仍然是可見的。2-5 請(qǐng)寫出C+語句聲明一個(gè)常量PI,值為3.1416;再聲明一個(gè)浮點(diǎn)型變量a,把PI的值賦給a。解: const float PI = 3.1416;float a = PI;2-6 在下面的枚舉類型中,Blue的值是多少?enum COLOR WHITE, BLACK = 100, RED, BLUE, GREEN = 300 ;解: Blue = 1022-7 注釋有什么作用?C+中有哪幾種注釋的方法?他們之間有什么區(qū)別?解: 注釋在程序中的作用是對(duì)程序進(jìn)行注解和說明,

12、以便于閱讀。編譯系統(tǒng)在對(duì)源程序進(jìn)行編譯時(shí)不理會(huì)注釋部分,因此注釋對(duì)于程序的功能實(shí)現(xiàn)不起任何作用。而且由于編譯時(shí)忽略注釋部分,所以注釋內(nèi)容不會(huì)增加最終產(chǎn)生的可執(zhí)行程序的大小。適當(dāng)?shù)厥褂米⑨?,能夠提高程序的可讀性。在C+中,有兩種給出注釋的方法:一種是延用C語言方法,使用/*和*/括起注釋文字。另一種方法是使用/,從/開始,直到它所在行的行尾,所有字符都被作為注釋處理。2-8 什么叫做表達(dá)式?x = 5 + 7是一個(gè)表達(dá)式嗎?它的值是多少?解: 任何一個(gè)用于計(jì)算值的公式都可稱為表達(dá)式。x = 5 + 7是一個(gè)表達(dá)式,它的值為12。2-9 下列表達(dá)式的值是多少?1. 201 / 42. 201 %

13、43. 201 / 4.0解: 1 502 13 50.252-10 執(zhí)行完下列語句后,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)?解: 在for循環(huán)設(shè)置條件的第一個(gè);前,用,分隔不同的賦值表達(dá)式。例如:for (x = 0, y = 10; x 100; x+, y+)2-12 執(zhí)行完下列語句后,n的值為多少?int n;for (n = 0; n 100; n+)解: n的值為1002-13 寫一條for語句,計(jì)數(shù)條件為n從100到200,步長(zhǎng)為2;然后用w

14、hile和dowhile語句完成同樣的循環(huán)。解: for循環(huán):for (int n = 100; n = 200; n += 2); while循環(huán):int x = 100;while (n = 200)n += 2; dowhile循環(huán):int n = 100;don += 2; while(n y)x = y;else / y x | y = xy = x;2-17 修改下面這個(gè)程序中的錯(cuò)誤,改正后它的運(yùn)行結(jié)果是什么?#include void main()int iint j;i = 10; /* 給i賦值j = 20; /* 給j賦值 */cout i + j = i + j; /*

15、輸出結(jié)果 */return 0;解: 改正:#include int main()int i;int j;i = 10; / 給i賦值j = 20; /* 給j賦值 */cout i + j = i + j; /* 輸出結(jié)果 */return 0;程序運(yùn)行輸出:i + j = 302-18 編寫一個(gè)程序,運(yùn)行時(shí)提示輸入一個(gè)數(shù)字,再把這個(gè)數(shù)字顯示出來。解: 源程序:#include int main()int i;cout i;cout 您輸入一個(gè)數(shù)字是 i endl;return 0;程序運(yùn)行輸出:請(qǐng)輸入一個(gè)數(shù)字:5您輸入一個(gè)數(shù)字是52-19 C+有哪幾種數(shù)據(jù)類型?簡(jiǎn)述其值域。編程顯示你使用的

16、計(jì)算機(jī)中的各種數(shù)據(jù)類型的字節(jié)數(shù)。解: 源程序:#include int main()cout The size of an int is:tt sizeof(int) bytes.n;cout The size of a short int is:t sizeof(short) bytes.n;cout The size of a long int is:t sizeof(long) bytes.n;cout The size of a char is:tt sizeof(char) bytes.n;cout The size of a float is:tt sizeof(float) by

17、tes.n;cout The size of a double is:t sizeof(double) bytes.n;return 0;程序運(yùn)行輸出:The size of an int is: 4 bytes.The size of a short int is: 2 bytes.The size of a long int is: 4 bytes.The size of a char is: 1 bytes.The size of a float is: 4 bytes.The size of a double is: 8 bytes.2-20 打印ASCII碼為32127的字符。解:

18、#include int main()for (int i = 32; i128; i+)cout (char) i;return 0;程序運(yùn)行輸出:!#$%G()*+,./0123456789:;?ABCDEFGHIJKLMNOP_QRSTUVWXYZabcdefghijklmnopqrstuvwxyzs2-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;c

19、out nNow difference is: x endl;return 0;解: 程序運(yùn)行輸出:Difference is: 50Now difference is: 4294967246注意,第二行的輸出并非 -50,注意x、y、z的數(shù)據(jù)類型。2-22 運(yùn)行下面的程序,觀察其輸出,體會(huì)i+與+i的差別。#include int main()int myAge = 39; / initialize two integersint yourAge = 39;cout I am: myAge years old.n;cout You are: yourAge years oldn;myAge+

20、; / postfix increment+yourAge; / prefix incrementcout One year passes.n;cout I am: myAge years old.n;cout You are: yourAge years oldn;cout Another year passesn;cout I am: myAge+ years old.n;cout You are: +yourAge years oldn;cout Lets print it again.n;cout I am: myAge years old.n;cout You are: yourAg

21、e years oldn;return 0;解: 程序運(yùn)行輸出:I am 39 years oldYou are 39 years oldOne year passesI am 40 years oldYou are 40 years oldAnother year passesI am 40 years oldYou are 41 years oldLets print it againI am 41 years oldYou are 41 years old2-23 什么叫常量?什么叫變量?解: 所謂常量是指在程序運(yùn)行的整個(gè)過程中其值始終不可改變的量,除了用文字表示常量外,也可以為常量命名

22、,這就是符號(hào)常量;在程序的執(zhí)行過程中其值可以變化的量稱為變量,變量是需要用名字來標(biāo)識(shí)的。2-24 變量有哪幾種存儲(chǔ)類型?解: 變量有以下幾種存儲(chǔ)類型:auto存儲(chǔ)類型:采用堆棧方式分配內(nèi)存空間,屬于一時(shí)性存儲(chǔ),其存儲(chǔ)空間可以被若干變量多次覆蓋使用; register存儲(chǔ)類型:存放在通用寄存器中;extern存儲(chǔ)類型:在所有函數(shù)和程序段中都可引用;static存儲(chǔ)類型:在內(nèi)存中是以固定地址存放的,在整個(gè)程序運(yùn)行期間都有效。2-25 寫出下列表達(dá)式的值:1. 2 3 & 6 92. ! ( 4 5) | (6 2解: 1 12 -13 04 02-28 編寫一個(gè)完整的程序,實(shí)現(xiàn)功能:向用戶提問現(xiàn)在

23、正在下雨嗎?,提示用戶輸入Y或N。若輸入為Y,顯示現(xiàn)在正在下雨。; 若輸入為N,顯示現(xiàn)在沒有下雨。;否則繼續(xù)提問現(xiàn)在正在下雨嗎?解: 源程序:#include #include void main()char flag;while(1)cout flag;if ( toupper(flag) = Y)cout 現(xiàn)在正在下雨。;break;if ( toupper(flag) = N)cout 現(xiàn)在沒有下雨。;break;程序運(yùn)行輸出:現(xiàn)在正在下雨嗎?(Yes or No):x現(xiàn)在正在下雨嗎?(Yes or No):l現(xiàn)在正在下雨嗎?(Yes or No):q現(xiàn)在正在下雨嗎?(Yes or No

24、):n現(xiàn)在沒有下雨?;颍含F(xiàn)在正在下雨嗎?(Yes or No):y現(xiàn)在正在下雨。2-29 編寫一個(gè)完整的程序,運(yùn)行時(shí)向用戶提問你考試考了多少分?(0100),接收輸入后判斷其等級(jí),顯示出來。規(guī)則如下:解: #include void main()int i,score;cout score;if (score100 | score0)cout 分?jǐn)?shù)值必須在0到100之間!;elsei = score/10;switch (i)case 10:case 9:cout 你的成績(jī)?yōu)閮?yōu)!;break;case 8:cout 你的成績(jī)?yōu)榱迹?break;case 7:case 6:cout 你的成績(jī)?yōu)橹?/p>

25、!;break;default:cout 你的成績(jī)?yōu)椴睿? 程序運(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), Select one:提示用戶輸入,A表示增加,D表示刪除,S表示排序,Q表示退出,輸入為A、D、S時(shí)分別提示數(shù)據(jù)已經(jīng)增加、刪除、排序。輸入為Q時(shí)程序結(jié)束。要求使用if else語句進(jìn)行判斷,用break、continue控制程序流程。解: #include #include void main()char choice,c;while(1)cout

26、c;choice = toupper(c);if (choice = A)cout 數(shù)據(jù)已經(jīng)增加. endl;continue;else if (choice = D)cout 數(shù)據(jù)已經(jīng)刪除. endl;continue;else if (choice = S)cout 數(shù)據(jù)已經(jīng)排序. endl;continue;else if (choice = Q)break;程序運(yùn)行輸出:Menu: A(dd) D(elete) S(ort) Q(uit), Select one:a數(shù)據(jù)已經(jīng)增加. Menu: A(dd) D(elete) S(ort) Q(uit), Select one:d數(shù)據(jù)已經(jīng)刪

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

28、ce;while(1)cout 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)排序. endl;break;case Q:exit(0);break;default:;程序運(yùn)行輸出:Menu: A(dd) D(elete) S(ort) Q(uit), Select one:a數(shù)據(jù)已經(jīng)增加. Menu: A(dd) D(elete) S(ort) Q(uit), Select one:d數(shù)據(jù)已經(jīng)刪除. Menu: A(dd) D

29、(elete) S(ort) Q(uit), Select one:s數(shù)據(jù)已經(jīng)排序. Menu: A(dd) D(elete) S(ort) Q(uit), Select one:q2-31 用窮舉法找出1100間的質(zhì)數(shù),顯示出來。分別使用while,do-while,for循環(huán)語句實(shí)現(xiàn)。解: 源程序: 使用while循環(huán)語句:#include #include void main()int i,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

30、 (flag)cout i 是質(zhì)數(shù). endl;i+; 使用dowhile循環(huán)語句:#include #include void main()int i,j,k,flag;i = 2;doflag = 1;k = sqrt(i);j = 2;doif(i%j = 0)flag = 0;break;j+;while (j = k);if (flag)cout i 是質(zhì)數(shù). endl;i+;while(i = 100); 使用for循環(huán)語句:#include #include void main()int i,j,k,flag;for(i = 2; i = 100; i+)flag = 1;k =

31、 sqrt(i);for (j = 2; j = k; j+)if(i%j = 0)flag = 0;break;if (flag)cout i 是質(zhì)數(shù). endl;程序運(yùn)行輸出:2是質(zhì)數(shù).3是質(zhì)數(shù).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ù).2-32 比較Break語句與Continue語句的不同用法。解: Break使程序從循環(huán)體和switch語句內(nèi)跳出,繼續(xù)執(zhí)行邏

32、輯上的下一條語句,不能用在別處;continue 語句結(jié)束本次循環(huán),接著開始判斷決定是否繼續(xù)執(zhí)行下一次循環(huán); 2-33 定義一個(gè)表示時(shí)間的結(jié)構(gòu)體,可以精確表示年、月、日、小時(shí)、分、秒;提示用戶輸入年、月、日、小時(shí)、分、秒的值,然后完整地顯示出來。 解: 源程序見實(shí)驗(yàn)指導(dǎo)部分實(shí)驗(yàn)二2-34 在程序中定義一個(gè)整型變量,賦以1100的值,要求用戶猜這個(gè)數(shù),比較兩個(gè)數(shù)的大小,把結(jié)果提示給用戶,直到猜對(duì)為止。分別使用while、dowhile語句實(shí)現(xiàn)循環(huán)。解: /使用while語句#include void main() int n = 18;int m = 0;while(m != n) cout m

33、;if (n m)cout 你猜的值太小了! endl;else if (n m)cout 你猜的值太大了! endl;elsecout 你猜對(duì)了! endl;/使用dowhile語句#include void main() int n = 18;int m = 0;docout m;if (n m)cout 你猜的值太小了! endl;else if (n m)cout 你猜的值太大了! endl;elsecout 你猜對(duì)了! endl;while(n != m); 程序運(yùn)行輸出:請(qǐng)猜這個(gè)數(shù)的值為多少?(0100):50你猜的值太大了!請(qǐng)猜這個(gè)數(shù)的值為多少?(0100):25你猜的值太大了!

34、 請(qǐng)猜這個(gè)數(shù)的值為多少?(0100):10你猜的值太小了!請(qǐng)猜這個(gè)數(shù)的值為多少?(0100):15你猜的值太小了!請(qǐng)猜這個(gè)數(shù)的值為多少?(0100):18你猜對(duì)了! 2-35 定義枚舉類型weekday,包括Sunday到Saturday七個(gè)元素在程序中定義weekday類型的變量,對(duì)其賦值,定義整型變量,看看能否對(duì)其賦weekday類型的值。解: #include enum weekdaySunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday; void main()int i;weekday d = Thursday;cout d

35、= d endl;i = d;cout i = i endl;d = (weekday)6;cout d = d endl;d = weekday( 4 );cout d = d endl; 程序運(yùn)行輸出:d = 4i = 4d = 6d = 4 第三章 函數(shù)3-1 C+中的函數(shù)是什么?什么叫主調(diào)函數(shù),什么叫被調(diào)函數(shù),二者之間有什么關(guān)系?如何調(diào)用一個(gè)函數(shù)? 解: 一個(gè)較為復(fù)雜的系統(tǒng)往往需要?jiǎng)澐譃槿舾勺酉到y(tǒng),高級(jí)語言中的子程序就是用來實(shí)現(xiàn)這種模塊劃分的。C和C+語言中的子程序就體現(xiàn)為函數(shù)。調(diào)用其它函數(shù)的函數(shù)被稱為主調(diào)函數(shù),被其它函數(shù)調(diào)用的函數(shù)稱為被調(diào)函數(shù)。一個(gè)函數(shù)很可能既調(diào)用別的函數(shù)又被另外的函

36、數(shù)調(diào)用,這樣它可能在某一個(gè)調(diào)用與被調(diào)用關(guān)系中充當(dāng)主調(diào)函數(shù),而在另一個(gè)調(diào)用與被調(diào)用關(guān)系中充當(dāng)被調(diào)函數(shù)。調(diào)用函數(shù)之前先要聲明函數(shù)原型。按如下形式聲明:類型標(biāo)識(shí)符 被調(diào)函數(shù)名 (含類型說明的形參表);聲明了函數(shù)原型之后,便可以按如下形式調(diào)用子函數(shù):函數(shù)名(實(shí)參列表)3-2 觀察下面程序的運(yùn)行輸出,與你設(shè)想的有何不同?仔細(xì)體會(huì)引用的用法。源程序:#include int main()int intOne;int &rSomeRef = intOne;intOne = 5;cout intOne:tt intOne endl;cout rSomeRef:t rSomeRef endl;int intTw

37、o = 8;rSomeRef = intTwo; / not what you think!cout nintOne:tt intOne endl;cout intTwo:tt intTwo endl;cout rSomeRef:t rSomeRef endl;return 0;程序運(yùn)行輸出:intOne: 5rSomeRef: 5intOne: 8intTwo: 8rSomeRef: 83-3 比較值調(diào)用和引用調(diào)用的相同點(diǎn)與不同點(diǎn)。解: 值調(diào)用是指當(dāng)發(fā)生函數(shù)調(diào)用時(shí),給形參分配內(nèi)存空間,并用實(shí)參來初始化形參(直接將實(shí)參的值傳遞給形參)。這一過程是參數(shù)值的單向傳遞過程,一旦形參獲得了值便與實(shí)參脫

38、離關(guān)系,此后無論形參發(fā)生了怎樣的改變,都不會(huì)影響到實(shí)參。引用調(diào)用將引用作為形參,在執(zhí)行主調(diào)函數(shù)中的調(diào)用語句時(shí),系統(tǒng)自動(dòng)用實(shí)參來初始化形參。這樣形參就成為實(shí)參的一個(gè)別名,對(duì)形參的任何操作也就直接作用于實(shí)參。3-4 什么叫內(nèi)聯(lián)函數(shù)?它有哪些特點(diǎn)?解: 定義時(shí)使用關(guān)鍵字 inline的函數(shù)叫做內(nèi)聯(lián)函數(shù);編譯器在編譯時(shí)在調(diào)用處用函數(shù)體進(jìn)行替換,節(jié)省了參數(shù)傳遞、控制轉(zhuǎn)移等開銷;內(nèi)聯(lián)函數(shù)體內(nèi)不能有循環(huán)語句和switch語句;內(nèi)聯(lián)函數(shù)的定義必須出現(xiàn)在內(nèi)聯(lián)函數(shù)第一次被調(diào)用之前;對(duì)內(nèi)聯(lián)函數(shù)不能進(jìn)行異常接口聲明;3-5 函數(shù)原型中的參數(shù)名與函數(shù)定義中的參數(shù)名以及函數(shù)調(diào)用中的參數(shù)名必須一致嗎?解: 不必一致,所有的

39、參數(shù)是根據(jù)位置和類型而不是名字來區(qū)分的。 3-6 重載函數(shù)時(shí)通過什么來區(qū)分?解: 重載的函數(shù)的函數(shù)名是相同的,但它們的參數(shù)的個(gè)數(shù)和數(shù)據(jù)類型不同,編譯器根據(jù)實(shí)參和形參的類型及個(gè)數(shù)的最佳匹配,自動(dòng)確定調(diào)用哪一個(gè)函數(shù)。3-7 編寫函數(shù),參數(shù)為兩個(gè)unsigned short int型數(shù),返回值為第一個(gè)參數(shù)除以第二個(gè)參數(shù)的結(jié)果,數(shù)據(jù)類型為short int;如果第二個(gè)參數(shù)為0,則返回值為-1。在主程序中實(shí)現(xiàn)輸入輸出。解: 源程序:#include short int Divider(unsigned short int a, unsigned short int b)if (b = 0)return

40、-1;elsereturn a/b;typedef unsigned short int USHORT;typedef unsigned long int ULONG;int main()USHORT one, two;short int answer;cout one;cout two;answer = Divider(one, two);if (answer -1)cout Answer: answer;elsecout Error, cant divide by zero!;return 0;程序運(yùn)行輸出:Enter two numbers.Number one:8Number two:

41、2Answer: 43-8 編寫函數(shù)把華氏溫度轉(zhuǎn)換為攝氏溫度,公式為:C = (F - 32) * 5/9; 在主程序中提示用戶輸入一個(gè)華氏溫度,轉(zhuǎn)化后輸出相應(yīng)的攝氏溫度。解: 源程序見實(shí)驗(yàn)指導(dǎo)部分實(shí)驗(yàn)三3-9 編寫函數(shù)判斷一個(gè)數(shù)是否是質(zhì)數(shù),在主程序中實(shí)現(xiàn)輸入、輸出。解: #include #include int prime(int i); /判一個(gè)數(shù)是否是質(zhì)數(shù)的函數(shù)void main()int i;cout i;if (prime(i)cout i 是質(zhì)數(shù). endl;elsecout i 不是質(zhì)數(shù). endl;int prime(int i)int j,k,flag;flag = 1;k

42、 = sqrt(i);for (j = 2; j = k; j+)if(i%j = 0)flag = 0;break;if (flag)return 1;elsereturn 0;程序運(yùn)行輸出:請(qǐng)輸入一個(gè)整數(shù):11511151是質(zhì)數(shù).3-10 編寫函數(shù)求兩個(gè)整數(shù)的最大公約數(shù)和最小公倍數(shù)。解: 源程序:#include #include int fn1(int i,int j); /求最大公約數(shù)的函數(shù)void main()int i,j,x,y;cout i ;cout j ;x = fn1(i,j);y = i * j / x;cout i 和 j 的最大公約數(shù)是: x endl;cout i

43、 和 j 的最小公倍數(shù)是: y endl;int fn1(int i, int j)int temp;if (i j)temp = i;i = j;j = i;while(j != 0)temp = i % j;i = j;j = temp;return i;程序運(yùn)行輸出:請(qǐng)輸入一個(gè)正整數(shù):120請(qǐng)輸入另一個(gè)正整數(shù):72120和72的最大公約數(shù)是:24120和72的最小公倍數(shù)是:3603-11 什么叫作嵌套調(diào)用?什么叫作遞歸調(diào)用?解: 函數(shù)允許嵌套調(diào)用,如果函數(shù)1調(diào)用了函數(shù)2,函數(shù)2再調(diào)用函數(shù)3,便形成了函數(shù)的嵌套調(diào)用。函數(shù)可以直接或間接地調(diào)用自身,稱為遞歸調(diào)用。3-12 在主程序中提示輸入整

44、數(shù)n,編寫函數(shù)用遞歸的方法求1 + 2 + + n的值。解: #include #include int fn1(int i);void main()int i;cout i ;cout 從1累加到 i 的和為: fn1(i) endl;int fn1(int i)if (i = 1)return 1;elsereturn i + fn1(i -1);程序運(yùn)行輸出: 請(qǐng)輸入一個(gè)正整數(shù):100從1累加到100的和為:50503-13 編寫遞歸函數(shù)GetPower(int x, int y)計(jì)算x的y次冪, 在主程序中實(shí)現(xiàn)輸入輸出。解: 源程序:#include long GetPower(int

45、 x, int y);int main()int number, power;long answer;cout number;cout power;answer = GetPower(number,power);cout number to the power th power is answer 2; fib(1) = fib(2) = 1;觀察遞歸調(diào)用的過程。解: 源程序見實(shí)驗(yàn)指導(dǎo)部分實(shí)驗(yàn)三3-15 用遞歸的方法編寫函數(shù)求n階勒讓德多項(xiàng)式的值,在主程序中實(shí)現(xiàn)輸入、輸出;解: #include float p(int n, int x);void main()int n,x;cout n;cout x;cout n = n endl;cout x = x endl;cout P n ( x ) = p(n,x) endl;float p(int n, int x)if (n = 0)return 1;else if (n = 1)return x;else

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論