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è),還剩94頁(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、精選優(yōu)質(zhì)文檔-傾情為你奉上C+語(yǔ)言程序設(shè)計(jì)(清華大學(xué)鄭莉)課后習(xí)題答案專心-專注-專業(yè)第 一 章 概述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ò)抽象找出同一類對(duì)象的共同屬性(靜態(tài)特征)和行為(動(dòng)態(tài)特征),形成類。通過(guò)類的繼承與多態(tài)可以很方便地

2、實(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ǔ)言是目前應(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ì)由于采用了模塊分解與功能抽象,自頂向下、分而治之的方法,從而有效地將

3、一個(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ò)程都要進(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)越困難,對(duì)這種軟件的功能很難用過(guò)程來(lái)描述和實(shí)現(xiàn),使用面向過(guò)程的方法來(lái)開(kāi)發(fā)和維護(hù)都將非常困難。 1-4 什么是對(duì)象?什么是面向?qū)ο蠓椒??這種方法有哪些特點(diǎn)?解: 從一般意義上講,對(duì)

4、象是現(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ù)及對(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)性,還可以大大提高

5、程序的可重用性,使得軟件的開(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 什么叫做封裝?解: 封裝是面向?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è)試

6、(OOT)和面向?qū)ο蟮能浖S護(hù)(OOSM)等主要內(nèi)容。1-7 簡(jiǎn)述計(jì)算機(jī)內(nèi)部的信息可分為幾類?解: 計(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ǔ)碼

7、:(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 = ()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

8、)10(2)()2 = (143)10(3)( )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)?解:

9、C+語(yǔ)言的主要特點(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ū)ο蟆?-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 <iostream

10、.h>void main(void)cout<<"Hello!n"cout<<"Welcome to c+!n"解: #include <iostream.h> /指示編譯器將文件iostream.h中的代碼/嵌入到該程序中該指令所在的地方void main() /主函數(shù)名,void 表示函數(shù)沒(méi)有返回值 /函數(shù)體標(biāo)志cout<<"Hello!n" /輸出字符串Hello!到標(biāo)準(zhǔn)輸出設(shè)備(顯示器)上。cout<<"Welcome to c+!n" /輸

11、出字符串Welcome to c+!在屏幕輸出如下:Hello!Welcome to c+!2-4 使用關(guān)鍵字const而不是#define語(yǔ)句的好處有哪些?解: const定義的常量是有類型的,所以在使用它們時(shí)編譯器可以查錯(cuò);而且,這些變量在調(diào)試時(shí)仍然是可見(jiàn)的。2-5 請(qǐng)寫(xiě)出C+語(yǔ)句聲明一個(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

12、;解: Blue = 1022-7 注釋有什么作用?C+中有哪幾種注釋的方法?他們之間有什么區(qū)別?解: 注釋在程序中的作用是對(duì)程序進(jìn)行注解和說(shuō)明,以便于閱讀。編譯系統(tǒng)在對(duì)源程序進(jìn)行編譯時(shí)不理會(huì)注釋部分,因此注釋對(duì)于程序的功能實(shí)現(xiàn)不起任何作用。而且由于編譯時(shí)忽略注釋部分,所以注釋內(nèi)容不會(huì)增加最終產(chǎn)生的可執(zhí)行程序的大小。適當(dāng)?shù)厥褂米⑨?,能夠提高程序的可讀性。在C+中,有兩種給出注釋的方法:一種是延用C語(yǔ)言方法,使用"/*"和"*/"括起注釋文字。另一種方法是使用"/",從"/"開(kāi)始,直到它所在行的行尾,所有字符都被作為

13、注釋處理。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+;c = +a;解: a:32 ; b:30 ; c:32;2-11 在一個(gè)for循環(huán)中,可以初始化多個(gè)變量嗎?如何實(shí)現(xiàn)?解: 在for循環(huán)設(shè)置條件的第一個(gè)""前,用,分隔不同的賦值表達(dá)式。例如

14、: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循環(huán):int x = 100;while (n <= 200)n += 2; dowhile循環(huán):int n = 100;don += 2; while(n

15、<= 200);2-14 if ( x = 3 ) 和 if (x = = 3) 這兩條語(yǔ)句的差別是什么?解: 語(yǔ)句if(x = 3)把3賦給x,賦值表達(dá)式的值為true,作為if語(yǔ)句的條件;語(yǔ)句if(x = 3)首先判斷x的值是否為3,若相等條件表達(dá)式的值為ture,否則為false。2-15 什么叫做作用域?什么叫做局部變量?什么叫做全局變量,如何使用全局變量? 解: 作用域是一個(gè)標(biāo)識(shí)符在程序正文中有效的區(qū)域。局部變量,一般來(lái)講就是具有塊作用域的變量;全局變量,就是具有文件作用域的變量。 2-16 已知x、y兩個(gè)變量,寫(xiě)一條簡(jiǎn)單的if語(yǔ)句,把較小的的值賦給原本值較大的變量。解: if

16、 (x > y)x = y;else / y > x | y = xy = x;2-17 修改下面這個(gè)程序中的錯(cuò)誤,改正后它的運(yùn)行結(jié)果是什么?#include <iostream.h>void main()int iint j;i = 10; /* 給i賦值j = 20; /* 給j賦值 */cout << "i + j = << i + j; /* 輸出結(jié)果 */return 0;解: 改正:#include <iostream.h>int main()int i;int j;i = 10; / 給i賦值j = 20; /

17、* 給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 <iostream.h> int main()int i;cout << "請(qǐng)輸入一個(gè)數(shù)字:"cin >> i;cout << "您輸入一個(gè)數(shù)字是" << i << endl;return 0;

18、程序運(yùn)行輸出:請(qǐng)輸入一個(gè)數(shù)字:5您輸入一個(gè)數(shù)字是52-19 C+有哪幾種數(shù)據(jù)類型?簡(jiǎn)述其值域。編程顯示你使用的計(jì)算機(jī)中的各種數(shù)據(jù)類型的字節(jié)數(shù)。解: 源程序:#include <iostream.h> 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) <&

19、lt; " 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(f

20、loat) << " bytes.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

21、 a float is: 4 bytes.The size of a double is: 8 bytes.2-20 打印ASCII碼為32127的字符。解: #include <iostream.h>int main()for (int i = 32; i<128; i+)cout << (char) i;return 0;程序運(yùn)行輸出:!"#$%G'()*+,./:;<>?ABCDEFGHIJKLMNOP_QRSTUVWXYZ'abcdefghijklmnopqrstuvwxyz<|>s2-21 運(yùn)行下面的程序

22、,觀察其輸出,與你的設(shè)想是否相同?#include <iostream.h>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 differe

23、nce is: 注意,第二行的輸出并非 -50,注意x、y、z的數(shù)據(jù)類型。2-22 運(yùn)行下面的程序,觀察其輸出,體會(huì)i+與+i的差別。#include <iostream.h>int main()int myAge = 39; / initialize two integersint yourAge = 39;cout << "I am: " << myAge << " years old.n"cout << "You are: " << yourAge <

24、< " years oldn"myAge+; / postfix increment+yourAge; / prefix incrementcout << "One year passes.n"cout << "I am: " << myAge << " years old.n"cout << "You are: " << yourAge << " years oldn"cout <

25、;< "Another year passesn"cout << "I am: " << myAge+ << " years old.n"cout << "You are: " << +yourAge << " years oldn"cout << "Let's print it again.n"cout << "I am: " <<

26、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 years oldYou are 40 years oldAnother year passesI am 40 years oldYou are 41 years oldLet's pr

27、int 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ǔ)類型?解: 變量有以下幾種存儲(chǔ)類型:auto存儲(chǔ)類型:采用堆棧方式分配內(nèi)存空間,屬于一時(shí)性存儲(chǔ),其存儲(chǔ)空間可以被若干變量多次覆蓋使用; register存儲(chǔ)類型:存放在通用寄存器中;extern存儲(chǔ)類型:在所有函數(shù)和程序段中都可引用;static存儲(chǔ)類型

28、:在內(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 & -c3. a & b | c4. a | b & c解: 1 -12 13 34 32-27 若a = 1,下列各式的結(jié)果是什么?1. ! a | a2. a | a3. a

29、a4. a >> 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 <iostream.h>#include <stdlib.h> void main()char flag;while(1)cout << "現(xiàn)在正在下雨嗎?(Yes or No):

30、"cin >> 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

31、 編寫(xiě)一個(gè)完整的程序,運(yùn)行時(shí)向用戶提問(wèn)"你考試考了多少分?(0100)",接收輸入后判斷其等級(jí),顯示出來(lái)。規(guī)則如下:解: #include <iostream.h> void main()int i,score;cout << "你考試考了多少分?(0100):"cin >> score;if (score>100 | score<0)cout << "分?jǐn)?shù)值必須在0到100之間!"elsei = score/10;switch (i)case 10:case 9:cout

32、<< "你的成績(jī)?yōu)閮?yōu)!"break;case 8:cout << "你的成績(jī)?yōu)榱迹?quot;break;case 7:case 6: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), Select one:"提示用戶輸入,A表

33、示增加,D表示刪除,S表示排序,Q表示退出,輸入為A、D、S時(shí)分別提示"數(shù)據(jù)已經(jīng)增加、刪除、排序。"輸入為Q時(shí)程序結(jié)束。要求使用if else語(yǔ)句進(jìn)行判斷,用break、continue控制程序流程。解: #include <iostream.h>#include <stdlib.h> void main()char choice,c;while(1)cout << "Menu: A(dd) D(elete) S(ort) Q(uit), Select one:"cin >> c;choice = toup

34、per(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')brea

35、k;程序運(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:q (2)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的菜單程序,運(yùn)行時(shí)顯示"Menu: A(dd) D(elete) S(ort) Q(uit), Select one:&

36、quot;提示用戶輸入,A表示增加,D表示刪除,S表示排序,Q表示退出,輸入為A、D、S時(shí)分別提示"數(shù)據(jù)已經(jīng)增加、刪除、排序。"輸入為Q時(shí)程序結(jié)束。要求使用Switch語(yǔ)句。解: 源程序:#include <iostream.h>#include <stdlib.h> void main()char choice;while(1)cout << "Menu: A(dd) D(elete) S(ort) Q(uit), Select one:"cin >> choice;switch(toupper(choi

37、ce)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)

38、, 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-31 用窮舉法找出1100間的質(zhì)數(shù),顯示出來(lái)。分別使用while,do-while,for循環(huán)語(yǔ)句實(shí)現(xiàn)。解: 源程序: 使用while循環(huán)語(yǔ)句:#include <iostream.h>#include <math

39、.h> 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 <iostream.h>#include <math.h> void main()int i,j,k,flag;i = 2;dofl

40、ag = 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 <iostream.h>#include <math.h> void main()int i,j,k,flag;for(i = 2; i <= 100; i+)flag = 1;k = sqrt(i);for

41、 (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語(yǔ)句與Continue語(yǔ)句的不同用法。解:

42、 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ì)為止。分別使用while、dowhile語(yǔ)句實(shí)現(xiàn)循環(huán)。解: /使用while語(yǔ)句#include <iostre

43、am.h> void main() int n = 18;int m = 0;while(m != n) cout << "請(qǐng)猜這個(gè)數(shù)的值為多少?(0100):"cin >> m;if (n > m)cout << "你猜的值太小了!" << endl;else if (n < m)cout << "你猜的值太大了!" << endl;elsecout << "你猜對(duì)了!" << endl;/使用dow

44、hile語(yǔ)句#include <iostream.h> void main() int n = 18;int m = 0;docout << "請(qǐng)猜這個(gè)數(shù)的值為多少?(0100):"cin >> m;if (n > m)cout << "你猜的值太小了!" << endl;else if (n < m)cout << "你猜的值太大了!" << endl;elsecout << "你猜對(duì)了!" <<

45、; 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 定義枚舉類型weekday,包括Sunday到Saturday七個(gè)元素在程序中定義weekday類型的變量,對(duì)其賦值,定義整型變量,看看能否對(duì)其賦weekday類型的值。解: #include <iostream.h> enum weekda

46、ySunday,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

47、 );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í)語(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)用

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

49、 "rSomeRef:t" << rSomeRef << endl;int intTwo = 8;rSomeRef = intTwo; / not what you think!cout << "nintOne:tt" << intOne << endl;cout << "intTwo:tt" << intTwo << endl;cout << "rSomeRef:t" << rSomeRef &

50、lt;< 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ì)形參的任何操作也就直接作用于實(shí)參。3-4 什么叫內(nèi)聯(lián)函數(shù)?它有哪些

51、特點(diǎn)?解: 定義時(shí)使用關(guān)鍵字 inline的函數(shù)叫做內(nèi)聯(lián)函數(shù);編譯器在編譯時(shí)在調(diào)用處用函數(shù)體進(jìn)行替換,節(jié)省了參數(shù)傳遞、控制轉(zhuǎn)移等開(kāi)銷;內(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)區(qū)分的。 3-6 重載函數(shù)時(shí)通過(guò)什么來(lái)區(qū)分?解: 重載的函數(shù)的函數(shù)名是相同的,但它們的參數(shù)的個(gè)數(shù)和數(shù)據(jù)類型不同,編譯器根據(jù)實(shí)參和形參的類型及個(gè)數(shù)的最佳匹配,自動(dòng)確定調(diào)用哪一個(gè)函數(shù)。3-7 編寫(xiě)函數(shù),參數(shù)為

52、兩個(gè)unsigned short int型數(shù),返回值為第一個(gè)參數(shù)除以第二個(gè)參數(shù)的結(jié)果,數(shù)據(jù)類型為short int;如果第二個(gè)參數(shù)為0,則返回值為-1。在主程序中實(shí)現(xiàn)輸入輸出。解: 源程序:#include <iostream.h>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()USHORT

53、 one, two;short int answer;cout << "Enter two numbers.n Number one: "cin >> one;cout << "Number two: "cin >> two;answer = Divider(one, two);if (answer > -1)cout << "Answer: " << answer;elsecout << "Error, can't divid

54、e 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)"實(shí)驗(yàn)指導(dǎo)"部分實(shí)驗(yàn)三3-9 編寫(xiě)函數(shù)判斷一個(gè)數(shù)是否是質(zhì)數(shù),在主程序中實(shí)現(xiàn)輸入、輸出。解: #include <iostream.h>#include <math.h>int prime(int i); /判一個(gè)數(shù)是否是質(zhì)數(shù)

55、的函數(shù)void main()int i;cout << "請(qǐng)輸入一個(gè)整數(shù):"cin >> 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;

56、if (flag)return 1;elsereturn 0;程序運(yùn)行輸出:請(qǐng)輸入一個(gè)整數(shù):11511151是質(zhì)數(shù).3-10 編寫(xiě)函數(shù)求兩個(gè)整數(shù)的最大公約數(shù)和最小公倍數(shù)。解: 源程序:#include <iostream.h>#include <math.h>int fn1(int i,int j); /求最大公約數(shù)的函數(shù)void main()int i,j,x,y;cout << "請(qǐng)輸入一個(gè)正整數(shù):"cin >> i ;cout << "請(qǐng)輸入另一個(gè)正整數(shù):"cin >> j ;

57、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

58、;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 在主程序中提示輸入整數(shù)n,編寫(xiě)函數(shù)用遞歸的方法求1 + 2 + + n的值。解: #include <iostream.h>#include <math.h&g

59、t;int fn1(int i);void main()int i;cout << "請(qǐng)輸入一個(gè)正整數(shù):"cin >> 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

60、 x, int y)計(jì)算x的y次冪, 在主程序中實(shí)現(xiàn)輸入輸出。解: 源程序:#include <iostream.h>long GetPower(int x, int y);int main()int number, power;long answer;cout << "Enter a number: "cin >> number;cout << "To what power? "cin >> power;answer = GetPower(number,power);cout << number << " to the " << power << "th power is " <<answer << endl;return 0;long GetPower(int x, int y)if(y = 1)return x;elsereturn (x * GetPower(x,y-1);程序運(yùn)行輸出:Enter a number: 3To w

溫馨提示

  • 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)論