




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C+語(yǔ)言程序設(shè)計(jì)(清華大學(xué)鄭莉)課后習(xí)題答案第 一 章 概述1-1 簡(jiǎn)述計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言的發(fā)展歷程。解: 迄今為止計(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ò)抽象找出同一類(lèi)對(duì)象的共同屬性(靜態(tài)特征)和行為(動(dòng)態(tài)特征),形成類(lèi)。通過(guò)類(lèi)的繼承與多態(tài)可以很方便地實(shí)現(xiàn)代碼重用,大大縮短了軟件開(kāi)發(fā)周期,并使
2、得軟件風(fēng)格統(tǒng)一。因此,面向?qū)ο蟮木幊陶Z(yǔ)言使程序能夠比較直接地反問(wèn)題域的本來(lái)面目,軟件開(kāi)發(fā)人員能夠利用人類(lèi)認(rèn)識(shí)事物所采用的一般思維方法來(lái)進(jìn)行軟件開(kāi)發(fā)。C+語(yǔ)言是目前應(yīng)用最廣的面向?qū)ο蟮木幊陶Z(yǔ)言。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ù)分解成許多易于
3、控制和處理的子任務(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ò)程都要進(jìn)行相應(yīng)的修改,每一種相對(duì)于老問(wèn)題的新方法都要帶來(lái)額外的開(kāi)銷(xiāo),程序的可重用性差。由于圖形用戶界面的應(yīng)用,程序運(yùn)行由順序運(yùn)行演變?yōu)槭录?qū)動(dòng),使得軟件使用起來(lái)越來(lái)越方便,但開(kāi)發(fā)起來(lái)卻越來(lái)越困難,對(duì)這種軟件的功能很難用過(guò)程來(lái)描述和實(shí)現(xiàn),使用面向過(guò)程的方法來(lái)開(kāi)發(fā)和維護(hù)都將非常困難。 1-4 什么是對(duì)象?什么是面向?qū)ο蠓椒??這種方法有哪些特點(diǎn)?解: 從一般意義上講,對(duì)象是現(xiàn)實(shí)世界中一個(gè)實(shí)際存在的事物,它可以是
4、有形的,也可以是無(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ù)及對(duì)數(shù)據(jù)的操作方法放在一起,作為一個(gè)相互依存、不可分離的整體-對(duì)象。對(duì)同類(lèi)型對(duì)象抽象出其共性,形成類(lèi)。類(lèi)中的大多數(shù)數(shù)據(jù),只能用本類(lèi)的方法進(jìn)行處理。類(lèi)通過(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ù)都更為
5、方便。面向?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 什么叫做封裝?解: 封裝是面向?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)
6、等主要內(nèi)容。1-7 簡(jiǎn)述計(jì)算機(jī)內(nèi)部的信息可分為幾類(lèi)?解: 計(jì)算機(jī)內(nèi)部的信息可以分成控制信息和數(shù)據(jù)信息二大類(lèi);控制信息可分為指令和控制字兩類(lèi);數(shù)據(jù)信息可分為數(shù)值信息和非數(shù)值信息兩類(lèi)。 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)-
7、32 (5)65535 (6)-1 解: (1) (2)10 = (10)2 = (2)16(2) (9)10 = (1001)2 = (9)16(3) (93)10 = ()2 = (5D)16(4) (-32)10 = ()2 = (E0)16(5) (65535)10 = ( )2 = (FFFF)16(6) (-1)10 = ( )2 = (FFFF)161-10 請(qǐng)將以下數(shù)值轉(zhuǎn)換為十進(jìn)制:(1)(1010)2 (2)()2 (3)( )2 (4)(7F)16 (5)(2D3E)16 (6)(F10E)16解: (1)(1010)2 = (10)10(2)()2 = (143)10(3
8、)( )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求得。 第 二 章 C+簡(jiǎn)單程序設(shè)計(jì)2-1 C+語(yǔ)言有那些主要特點(diǎn)和優(yōu)點(diǎn)?解: C+語(yǔ)言的主要特點(diǎn)表現(xiàn)在兩個(gè)方面,一是全面兼容C,二是支持面向?qū)ο?/p>
9、的方法。C+是一個(gè)更好的C,它保持了C的簡(jiǎn)潔、高效、接近匯編語(yǔ)言、具有良好的可讀性和可移植性等特點(diǎn),對(duì)C的類(lèi)型系統(tǒng)進(jìn)行了改革和擴(kuò)充,因此C+比C更安全,C+的編譯系統(tǒng)能檢查出更多的類(lèi)型錯(cuò)誤。 C+語(yǔ)言最重要的特點(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-3 例2.1中每條語(yǔ)句的作用是什么?#include void main(void)coutHello!n;coutWelcome to c+!
10、n;解: #include /指示編譯器將文件iostream.h中的代碼/嵌入到該程序中該指令所在的地方void main() /主函數(shù)名,void 表示函數(shù)沒(méi)有返回值 /函數(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語(yǔ)句的好處有哪些?解: const定義的常量是有類(lèi)型的,所以在使用它們時(shí)編譯器可以查錯(cuò);而且,這些變量在調(diào)試時(shí)仍然是可見(jiàn)的。2-5 請(qǐng)寫(xiě)出C+語(yǔ)句聲明一
11、個(gè)常量PI,值為3.1416;再聲明一個(gè)浮點(diǎn)型變量a,把PI的值賦給a。解: const float PI = 3.1416;float a = PI;2-6 在下面的枚舉類(lèi)型中,Blue的值是多少?enum COLOR WHITE, BLACK = 100, RED, BLUE, GREEN = 300 ;解: Blue = 1022-7 注釋有什么作用?C+中有哪幾種注釋的方法?他們之間有什么區(qū)別?解: 注釋在程序中的作用是對(duì)程序進(jìn)行注解和說(shuō)明,以便于閱讀。編譯系統(tǒng)在對(duì)源程序進(jìn)行編譯時(shí)不理會(huì)注釋部分,因此注釋對(duì)于程序的功能實(shí)現(xiàn)不起任何作用。而且由于編譯時(shí)忽略注釋部分,所以注釋內(nèi)容不會(huì)增加最
12、終產(chǎn)生的可執(zhí)行程序的大小。適當(dāng)?shù)厥褂米⑨專軌蛱岣叱绦虻目勺x性。在C+中,有兩種給出注釋的方法:一種是延用C語(yǔ)言方法,使用/*和*/括起注釋文字。另一種方法是使用/,從/開(kāi)始,直到它所在行的行尾,所有字符都被作為注釋處理。2-8 什么叫做表達(dá)式?x = 5 + 7是一個(gè)表達(dá)式嗎?它的值是多少?解: 任何一個(gè)用于計(jì)算值的公式都可稱為表達(dá)式。x = 5 + 7是一個(gè)表達(dá)式,它的值為12。2-9 下列表達(dá)式的值是多少?1. 201 / 42. 201 % 43. 201 / 4.0解: 1 502 13 50.252-10 執(zhí)行完下列語(yǔ)句后,a、b、c三個(gè)變量的值為多少?a = 30;b = a+;
13、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í)行完下列語(yǔ)句后,n的值為多少?int n;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 (int n = 100; n = 200; n += 2); while循
14、環(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; /* 輸出結(jié)果 */return 0;解: 改正:#include int main()int i;int j;i = 10; / 給i賦值j = 20
15、; /* 給j賦值 */cout i + j = i + j; /* 輸出結(jié)果 */return 0;程序運(yùn)行輸出:i + j = 302-18 編寫(xiě)一個(gè)程序,運(yùn)行時(shí)提示輸入一個(gè)數(shù)字,再把這個(gè)數(shù)字顯示出來(lái)。解: 源程序:#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ù)類(lèi)型?簡(jiǎn)述其值域。編程顯示你使用的計(jì)算機(jī)中的各種數(shù)據(jù)類(lèi)型的字節(jié)數(shù)。解: 源程序:#include int main()cout The size of an int is:tt s
16、izeof(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) bytes.n;cout The size of a double is:t sizeof(double) bytes.n;return 0;程序運(yùn)行
17、輸出: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的字符。解: #include int main()for (int i = 32; i128; i+)cout (char) i;return 0;程序運(yùn)行輸
18、出:!#$%G()*+,./:;?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;cout nNow difference is: x endl;return 0;解: 程序運(yùn)行輸出:Difference is: 50Now difference i
19、s: 注意,第二行的輸出并非 -50,注意x、y、z的數(shù)據(jù)類(lèi)型。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+; / postfix increment+yourAge; / prefix incrementcout One year passes.n;cout I am: myAge year
20、s 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: yourAge years oldn;return 0;解: 程序運(yùn)行輸出:I am 39 years oldYou are 39 years oldOne year passesI am 40 y
21、ears 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è)過(guò)程中其值始終不可改變的量,除了用文字表示常量外,也可以為常量命名,這就是符號(hào)常量;在程序的執(zhí)行過(guò)程中其值可以變化的量稱為變量,變量是需要用名字來(lái)標(biāo)識(shí)的。2-24 變量有哪幾種存儲(chǔ)類(lèi)型?解: 變量有以下幾種存儲(chǔ)類(lèi)型:auto存儲(chǔ)類(lèi)型:采用堆棧方式分配內(nèi)
22、存空間,屬于一時(shí)性存儲(chǔ),其存儲(chǔ)空間可以被若干變量多次覆蓋使用; register存儲(chǔ)類(lèi)型:存放在通用寄存器中;extern存儲(chǔ)類(lèi)型:在所有函數(shù)和程序段中都可引用;static存儲(chǔ)類(lèi)型:在內(nèi)存中是以固定地址存放的,在整個(gè)程序運(yùn)行期間都有效。2-25 寫(xiě)出下列表達(dá)式的值:1. 2 3 & 6 92. ! ( 4 5) | (6 2解: 1 12 -13 04 02-28 編寫(xiě)一個(gè)完整的程序,實(shí)現(xiàn)功能:向用戶提問(wèn)現(xiàn)在正在下雨嗎?,提示用戶輸入Y或N。若輸入為Y,顯示現(xiàn)在正在下雨。; 若輸入為N,顯示現(xiàn)在沒(méi)有下雨。;否則繼續(xù)提問(wèn)現(xiàn)在正在下雨嗎?解: 源程序:#include #include void
23、 main()char flag;while(1)cout flag;if ( toupper(flag) = Y)cout 現(xiàn)在正在下雨。;break;if ( toupper(flag) = N)cout 現(xiàn)在沒(méi)有下雨。;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):n現(xiàn)在沒(méi)有下雨?;颍含F(xiàn)在正在下雨嗎?(Yes or No):y現(xiàn)在正在下雨。2-29 編寫(xiě)一個(gè)完整的程序,運(yùn)行時(shí)向用戶提問(wèn)你考試考了多少分?(0100),接收輸入后判斷其等級(jí),顯示出
24、來(lái)。規(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)橹校?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:
25、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語(yǔ)句進(jìn)行判斷,用break、continue控制程序流程。解: #include #include void main()char choice,c;while(1)cout c;choice = toupper(c);if (choice = A)cout 數(shù)據(jù)已經(jīng)增加. endl;continue;else if (choice = D)cout 數(shù)據(jù)已經(jīng)
26、刪除. 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)刪除. 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)
27、, 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語(yǔ)句。解: 源程序:#include #include void main()char choice;while(1)cout choice;switch(toupper(choice)case A:cout 數(shù)據(jù)已經(jīng)增加. endl;break;case D:cout 數(shù)據(jù)已經(jīng)刪
28、除. 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(elete) S(ort) Q(uit), Select one:s數(shù)據(jù)已經(jīng)排序. Menu: A(dd) D(elete) S(ort) Q(uit), Select one:q2-
29、31 用窮舉法找出1100間的質(zhì)數(shù),顯示出來(lái)。分別使用while,do-while,for循環(huán)語(yǔ)句實(shí)現(xiàn)。解: 源程序: 使用while循環(huán)語(yǔ)句:#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 (flag)cout i 是質(zhì)數(shù). endl;i+; 使用dowhile循環(huán)語(yǔ)句:#include #include void main()int i,j,k,flag;i = 2;d
30、oflag = 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)語(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ù). endl;程序運(yùn)行輸出:2是質(zhì)
31、數(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語(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í)、分、秒;提
32、示用戶輸入年、月、日、小時(shí)、分、秒的值,然后完整地顯示出來(lái)。 解: 源程序見(jiàn)實(shí)驗(yàn)指導(dǎo)部分實(shí)驗(yàn)二2-34 在程序中定義一個(gè)整型變量,賦以1100的值,要求用戶猜這個(gè)數(shù),比較兩個(gè)數(shù)的大小,把結(jié)果提示給用戶,直到猜對(duì)為止。分別使用while、dowhile語(yǔ)句實(shí)現(xiàn)循環(huán)。解: /使用while語(yǔ)句#include void main() int n = 18;int m = 0;while(m != n) cout m;if (n m)cout 你猜的值太小了! endl;else if (n m)cout 你猜的值太大了! endl;elsecout 你猜對(duì)了! endl;/使用dowhile語(yǔ)句#
33、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你猜的值太大了! 請(qǐng)猜這個(gè)數(shù)的值為多少?(0100):10你猜的值太小了!請(qǐng)猜這個(gè)數(shù)的值為多少?(0100):15你猜的值太小了!請(qǐng)猜這個(gè)數(shù)的值為多少?(0100):18你猜對(duì)了! 2-35 定義枚舉類(lèi)
34、型weekday,包括Sunday到Saturday七個(gè)元素在程序中定義weekday類(lèi)型的變量,對(duì)其賦值,定義整型變量,看看能否對(duì)其賦weekday類(lèi)型的值。解: #include enum weekdaySunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday; void main()int i;weekday d = Thursday;cout d = d endl;i = d;cout i = i endl;d = (weekday)6;cout d = d endl;d = weekday( 4 );cout d = d end
35、l; 程序運(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í)語(yǔ)言中的子程序就是用來(lái)實(shí)現(xiàn)這種模塊劃分的。C和C+語(yǔ)言中的子程序就體現(xiàn)為函數(shù)。調(diào)用其它函數(shù)的函數(shù)被稱為主調(diào)函數(shù),被其它函數(shù)調(diào)用的函數(shù)稱為被調(diào)函數(shù)。一個(gè)函數(shù)很可能既調(diào)用別的函數(shù)又被另外的函數(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ù)原型。按如下形式聲明:類(lèi)型標(biāo)識(shí)符 被調(diào)函數(shù)名 (含類(lèi)型說(shuō)明的形
36、參表);聲明了函數(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 intTwo = 8;rSomeRef = intTwo; / not what you think!cout nintOne:tt intOne endl;cout intTwo:tt intT
37、wo 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í)參來(lái)初始化形參(直接將實(shí)參的值傳遞給形參)。這一過(guò)程是參數(shù)值的單向傳遞過(guò)程,一旦形參獲得了值便與實(shí)參脫離關(guān)系,此后無(wú)論形參發(fā)生了怎樣的改變,都不會(huì)影響到實(shí)參。引用調(diào)用將引用作為形參,在執(zhí)行主調(diào)函數(shù)中的調(diào)用語(yǔ)句時(shí),系統(tǒng)自動(dòng)用實(shí)參來(lái)初始化形參。這樣形參就成為實(shí)參的一個(gè)別名,對(duì)形參的任何操作也
38、就直接作用于實(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)移等開(kāi)銷(xiāo);內(nèi)聯(lián)函數(shù)體內(nèi)不能有循環(huán)語(yǔ)句和switch語(yǔ)句;內(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ù)名必須一致嗎?解: 不必一致,所有的參數(shù)是根據(jù)位置和類(lèi)型而不是名字來(lái)區(qū)分的。 3-6 重載函數(shù)時(shí)通過(guò)什么來(lái)區(qū)分?解: 重載的函數(shù)的函數(shù)名是相同的,但它們的參數(shù)的個(gè)數(shù)和數(shù)據(jù)類(lèi)型不同,編譯器根據(jù)實(shí)參和形參的類(lèi)型及個(gè)數(shù)的最佳匹配
39、,自動(dòng)確定調(diào)用哪一個(gè)函數(shù)。3-7 編寫(xiě)函數(shù),參數(shù)為兩個(gè)unsigned short int型數(shù),返回值為第一個(gè)參數(shù)除以第二個(gè)參數(shù)的結(jié)果,數(shù)據(jù)類(lèi)型為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 -1;elsereturn a/b;typedef unsigned short int USHORT;typedef unsigned long int ULONG;int main(
40、)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:2Answer: 43-8 編寫(xiě)函數(shù)把華氏溫度轉(zhuǎn)換為攝氏溫度,公式為:C = (F - 32) * 5/9; 在主程序中提示用戶輸入一個(gè)華氏溫度,轉(zhuǎn)化后輸出相應(yīng)的攝氏溫度。解: 源程序見(jiàn)
41、實(shí)驗(yàn)指導(dǎo)部分實(shí)驗(yàn)三3-9 編寫(xiě)函數(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 = sqrt(i);for (j = 2; j = k; j+)if(i%j = 0)flag = 0;break;if (flag)return 1;elsereturn 0;程序運(yùn)
42、行輸出:請(qǐng)輸入一個(gè)整數(shù):11511151是質(zhì)數(shù).3-10 編寫(xiě)函數(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 和 j 的最小公倍數(shù)是: y endl;int fn1(int i, int j)int temp;if (i j)temp = i;i = j;j = i;while(j != 0)
43、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 在主程序中提示輸入整數(shù)n,編寫(xiě)函數(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 編寫(xiě)遞歸函數(shù)GetPower(int x, int y)計(jì)算x的y次冪, 在主程序中實(shí)現(xiàn)輸入輸出。解: 源程序:#include long GetPowe
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)院住院綜合樓建設(shè)項(xiàng)目發(fā)展前景與實(shí)施方案分析
- 公民道德建設(shè)行動(dòng)計(jì)劃
- 地塊平整項(xiàng)目實(shí)施方案優(yōu)化升級(jí)
- 標(biāo)準(zhǔn)化廠房建設(shè)項(xiàng)目設(shè)計(jì)方案解析
- 提升品牌美譽(yù)度的有效途徑計(jì)劃
- 技術(shù)研發(fā)路線圖計(jì)劃
- 創(chuàng)造長(zhǎng)期價(jià)值的工作計(jì)劃設(shè)計(jì)
- 班主任的時(shí)間管理與工作效率計(jì)劃
- 人事檔案信息化管理計(jì)劃
- 個(gè)人信用評(píng)分與貸款利率的關(guān)系試題及答案
- 電動(dòng)吸引器的應(yīng)用及護(hù)理培訓(xùn)課件
- 人教版英語(yǔ)五年級(jí)下冊(cè)Unit-2復(fù)習(xí)課件
- 家庭農(nóng)場(chǎng)相關(guān)規(guī)章制度
- 能源與環(huán)境概論(盧平)教案
- 24小時(shí)值班和領(lǐng)導(dǎo)帶班制度
- GB∕T 17602-2018 工業(yè)己烷-行業(yè)標(biāo)準(zhǔn)
- GB 38454-2019 墜落防護(hù) 水平生命線裝置
- 中考物理命題培訓(xùn)講座
- 生產(chǎn)安全事故風(fēng)險(xiǎn)評(píng)估報(bào)告(參考模板)
- 125萬(wàn)噸硫鐵礦斜坡道施工組織設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)10層框架—剪力墻結(jié)構(gòu)體系設(shè)計(jì)計(jì)算書(shū)
評(píng)論
0/150
提交評(píng)論