版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、c+語(yǔ)言與面向?qū)ο蟮脑O(shè)計(jì)第1至13章習(xí)題參考答案習(xí)題1參考答案1 用最簡(jiǎn)練的語(yǔ)言解釋下列詞匯在面向?qū)ο蟪绦蛟O(shè)計(jì)中的含義:對(duì)象,類(lèi),方法,接口,消息,封裝,繼承,服務(wù)答:對(duì)象是客觀世界中的實(shí)體在計(jì)算機(jī)中的表示。是一組數(shù)據(jù)成員和方法成員的封裝體。是類(lèi)類(lèi)型的實(shí)例。類(lèi)是一種抽象數(shù)據(jù)類(lèi)型。是一組對(duì)象共性的描述。方法是在一個(gè)類(lèi)中定義的過(guò)程或函數(shù),實(shí)現(xiàn)類(lèi)的功能的代碼。接口是對(duì)象封裝體向外部公布的一組具有公有屬性的方法。是從對(duì)象外部與對(duì)象通信的唯一途徑。消息是對(duì)象之間的通信機(jī)制,對(duì)象的客戶通過(guò)接口方法調(diào)用請(qǐng)求對(duì)象服務(wù)稱(chēng)為消息調(diào)用。對(duì)象之間通過(guò)消息傳遞,互相協(xié)調(diào)、配合,共同實(shí)現(xiàn)軟件系統(tǒng)的整體設(shè)計(jì)目標(biāo)。消息的載體
2、是對(duì)象提供的公有方法,即對(duì)象的接口。封裝有以下兩重含義:首先,是指將描述客觀實(shí)體數(shù)據(jù)特征的數(shù)據(jù)和方法特征的代碼組織在一起,作為一個(gè)整體,并為該整體命名標(biāo)識(shí),以區(qū)別于其它數(shù)據(jù)和程序代碼。其次,通過(guò)對(duì)該整體內(nèi)成員的訪問(wèn)屬性的規(guī)定,使一部分成員的隱藏起來(lái),對(duì)于封裝體外成為不可見(jiàn)的,同時(shí)使另一部分成員對(duì)外開(kāi)放,作為與外部交流的接口。繼承是面向?qū)ο蟪绦蛟O(shè)計(jì)方法中描述的兩個(gè)類(lèi)之間一種增量包含關(guān)系。這兩個(gè)類(lèi)具有一種父子關(guān)系,子類(lèi)通過(guò)為父類(lèi)添加新的成員而創(chuàng)建。繼承提供了利用一個(gè)類(lèi)的代碼創(chuàng)建新類(lèi)的重用方法。繼承關(guān)系也是對(duì)客觀世界分類(lèi)層次關(guān)系的一種模擬。服務(wù)即對(duì)象通過(guò)公有方法向外部提供功能。1. 2 試列舉過(guò)程化
3、、模塊化、結(jié)構(gòu)化等程序設(shè)計(jì)方法的主要特點(diǎn)。面向?qū)ο蟪绦蛟O(shè)計(jì)是如何包容和吸收其它幾種程序設(shè)計(jì)方法的有用成分的。答:過(guò)程化程序設(shè)計(jì)方法以過(guò)程或函數(shù)作為程序的基本構(gòu)造單位。側(cè)重于算法表達(dá)和過(guò)程間參數(shù)傳遞的組織。模塊化程序設(shè)計(jì)方法以獨(dú)立編譯的源程序模塊作為大型應(yīng)用程序的基本組織單位。注重于應(yīng)用程序的開(kāi)發(fā)管理。包括系統(tǒng)開(kāi)發(fā)的任務(wù)分解、模塊間通信管理、可重用代碼庫(kù)的組織、由不同語(yǔ)言生成的目標(biāo)模塊的連接等方面。結(jié)構(gòu)化等程序設(shè)計(jì)方法以單入口單出口的可嵌套基本控制結(jié)構(gòu)作為程序構(gòu)造單位。提倡自頂向下的分析和自底向上的設(shè)計(jì)相結(jié)合的軟件系統(tǒng)構(gòu)造方法。重點(diǎn)關(guān)注程序結(jié)構(gòu)清晰,以獲得程序的可理解性和可維護(hù)性。面向?qū)ο蟪绦蛟O(shè)
4、計(jì)方法包容了以上三種方法的所有積極成分。對(duì)象中包含的方法實(shí)際上就是過(guò)程或函數(shù),方法的參數(shù)傳遞與過(guò)程或函數(shù)的傳遞都是利用堆棧進(jìn)行的。在方法的實(shí)現(xiàn)時(shí)仍然用單入口單出口的基本控制結(jié)構(gòu)編程。系統(tǒng)構(gòu)造仍然使用自頂向下的分析和自底向上的設(shè)計(jì)過(guò)程。并用模塊化方法管理整個(gè)系統(tǒng)的開(kāi)發(fā),整個(gè)軟件系統(tǒng)由若干獨(dú)立編譯的源程序文件組成。面向?qū)ο蠓椒▽?duì)于以前程序設(shè)計(jì)方法的質(zhì)的躍變?cè)谟趯⒅兴惴ㄅc數(shù)據(jù)結(jié)構(gòu)的多對(duì)多依賴(lài)變成了相互間的單一依賴(lài)關(guān)系。1. 3面向?qū)ο蟪绦蛟O(shè)計(jì)方法成功地取代其它程序設(shè)計(jì)方法在程序設(shè)計(jì)領(lǐng)域的主導(dǎo)地位有哪些根本原因?答:面向?qū)ο蟪绦蛟O(shè)計(jì)方法成功地取代其它程序設(shè)計(jì)方法的主要原因是(1)計(jì)算機(jī)軟硬件技術(shù)的超高
5、速發(fā)展,促進(jìn)了計(jì)算機(jī)應(yīng)用領(lǐng)域的迅速擴(kuò)展,帶來(lái)了大規(guī)模復(fù)雜系統(tǒng)的開(kāi)發(fā)需求。 (2) 程序設(shè)計(jì)方法研究中不斷提高的數(shù)據(jù)抽象技術(shù)為復(fù)雜系統(tǒng)的開(kāi)發(fā)帶來(lái)了更有效、更能自然表示問(wèn)題世界的系統(tǒng)構(gòu)造模型。(3) 硬件設(shè)備的性能提高,足以支付新方法的存儲(chǔ)空間冗余和時(shí)間開(kāi)銷(xiāo)的代價(jià)。1. 4 有人說(shuō)對(duì)象是一個(gè)“黑盒子”,應(yīng)該怎樣看待這種說(shuō)法?答:對(duì)象是一個(gè)“黑盒子”,這種說(shuō)法是一個(gè)很貼切的比喻。所謂“黑盒子”,是指從用戶的觀點(diǎn)來(lái)看一個(gè)器件或產(chǎn)品時(shí),并不關(guān)心其內(nèi)部構(gòu)造和原理,而只關(guān)心它的功能及如何使用這些功能。對(duì)象的封裝性使對(duì)象的屬性及功能的具體實(shí)現(xiàn)代碼對(duì)于對(duì)象的客戶是不可見(jiàn)的??蛻糁荒芡ㄟ^(guò)接口方法使用對(duì)象功能。1.
6、 5 試分析“對(duì)象與其所屬的應(yīng)用程序”和“對(duì)象與其所屬的類(lèi)”這兩種關(guān)系的區(qū)別。答:對(duì)象與其所屬的應(yīng)用程序的關(guān)系是個(gè)別和整體的關(guān)系,對(duì)象與其所屬的類(lèi)的關(guān)系是具體實(shí)例和它所對(duì)應(yīng)的抽象概念的關(guān)系,二者不可混為一談。1. 6試歸納總結(jié)子程序、過(guò)程、函數(shù)、方法、對(duì)象接口等概念的共同點(diǎn)及各自的特點(diǎn)。答:它們都是實(shí)現(xiàn)程序功能的代碼塊。子程序相對(duì)主程序而言,過(guò)程則關(guān)注本身的整體性。有時(shí)過(guò)程也特指無(wú)返回值的子程序。函數(shù)是有返回值的子程序,而且函數(shù)與數(shù)學(xué)中的函數(shù)概念一致,函數(shù)返回值與輸入?yún)?shù)是“一一對(duì)應(yīng)”或“一多對(duì)應(yīng)”關(guān)系。函數(shù)的返回值與子程序的輸出參數(shù)的概念是有區(qū)別的,一個(gè)函數(shù)只能有一個(gè)返回值而一個(gè)子程序可能有
7、多個(gè)輸出參數(shù)。方法特指對(duì)象封裝體中的過(guò)程或函數(shù)。對(duì)象接口是對(duì)象的公有方法。1. 7在一個(gè)醫(yī)院里有醫(yī)務(wù)人員、管理人員、后勤人員、臨時(shí)工等人員。醫(yī)務(wù)人員又分為醫(yī)生、護(hù)士、化驗(yàn)員、藥劑師。醫(yī)生又有內(nèi)科、外科、五官科、神經(jīng)科之分。管理人員又分屬為行政管理、設(shè)備管理、藥品管理、財(cái)務(wù)管理等部門(mén)。請(qǐng)用面向?qū)ο蟮挠^點(diǎn)對(duì)上述信息進(jìn)行分析,指出哪些是類(lèi),哪些是對(duì)象,并說(shuō)明類(lèi)與類(lèi)之間存在的繼承關(guān)系。若要根據(jù)上面的簡(jiǎn)要描述設(shè)計(jì)計(jì)算機(jī)醫(yī)院人事管理系統(tǒng),請(qǐng)畫(huà)圖表示上述人事關(guān)系。答:題目中提到的都是類(lèi),沒(méi)有一個(gè)是類(lèi)的實(shí)例,所以沒(méi)有一個(gè)是對(duì)象。其中醫(yī)務(wù)人員是基類(lèi),醫(yī)生、護(hù)士、化驗(yàn)員、藥劑師是它的四個(gè)子類(lèi),而內(nèi)科醫(yī)生、外科醫(yī)生
8、、五官科醫(yī)生、神經(jīng)科醫(yī)生又是醫(yī)生的子類(lèi)。另外管理人員是行政管理人員、設(shè)備管理人員、藥品管理人員、財(cái)務(wù)管理人員等子類(lèi)的基類(lèi)。習(xí)題2參考答案21 c+與c語(yǔ)言的關(guān)系如何? 它們的本質(zhì)區(qū)別是什么?答:c+由c語(yǔ)言繼承而來(lái),并在c語(yǔ)言的基礎(chǔ)上增加了對(duì)面向?qū)ο蟪绦蛟O(shè)計(jì)的支持,是傳統(tǒng)的結(jié)構(gòu)化程序設(shè)計(jì)方法和面向?qū)ο蟪绦蛟O(shè)計(jì)方法的結(jié)合。c+保留了c語(yǔ)言的全部精華、與c語(yǔ)言兼容,又比c語(yǔ)言更適宜于管理大型、復(fù)雜的程序。二者的本質(zhì)區(qū)別是:c是面向過(guò)程的語(yǔ)言,而c+是面向?qū)ο蟮恼Z(yǔ)言。c是戰(zhàn)術(shù)語(yǔ)言,而c+是戰(zhàn)略語(yǔ)言。22 以下單詞哪些是c+合法的標(biāo)識(shí)符?public arrayi x3.5 3rd get_name
9、num1 _sot hi! x-y what? _for答:合法的標(biāo)識(shí)符為:get_name、num1、_sot、_for。23 保留字與一般標(biāo)識(shí)符有什么不同?答: 保留字又稱(chēng)關(guān)鍵字,是系統(tǒng)已預(yù)先定義的一些單詞。這些單詞雖然符合標(biāo)識(shí)符的命名規(guī)則,但由于已經(jīng)被c+語(yǔ)言預(yù)先賦予了特定的含義,因而不能被程序員用作一般的標(biāo)識(shí)符來(lái)定義和使用。24 文件包含命令的形式如何?有什么作用?答: 文件包含命令的作用是讓編譯預(yù)處理器將指定文件的全部?jī)?nèi)容插入到當(dāng)前源文件的該命令行處。它有兩種形式:#include 和#include 文件名。二者的區(qū)別在于,前者主要用于嵌入系統(tǒng)提供的頭文件(一般存于c+系統(tǒng)所在目錄
10、的include子目錄下),后者主要用于嵌入用戶自己定義的文件。對(duì)于前者,c+預(yù)處理器將在include目錄下搜索指定的頭文件; 對(duì)于后者,c+預(yù)處理器先在當(dāng)前目錄中搜索指定文件,若找不到再到include目錄下去搜索。25 什么叫源程序?c+程序在計(jì)算機(jī)上是如何實(shí)現(xiàn)的?答:用c+等高級(jí)語(yǔ)言編寫(xiě)的程序稱(chēng)為源程序。源程序是不能被計(jì)算機(jī)直接識(shí)別和執(zhí)行的。c+程序在計(jì)算機(jī)上的實(shí)現(xiàn)包括編輯、編譯、連接、運(yùn)行幾個(gè)步驟。其中編輯是指將源程序由鍵盤(pán)輸入并保存,得到源程序文件; 編譯是一個(gè)翻譯過(guò)程,將c+源程序翻譯成計(jì)算機(jī)能直接識(shí)別的機(jī)器語(yǔ)言程序,得到目標(biāo)文件; 連接程序把各個(gè)目標(biāo)文件和要用到的庫(kù)文件連接在一
11、起,生成可執(zhí)行文件,可執(zhí)行文件是計(jì)算機(jī)能直接運(yùn)行的文件。26 什么是空語(yǔ)句?它有什么作用?答:空語(yǔ)句是只有一個(gè)分號(hào)的語(yǔ)句。它主要用于語(yǔ)法上需要有一條語(yǔ)句但實(shí)際上又沒(méi)有任何操作可執(zhí)行的場(chǎng)合。27 什么是c+中的塊?主要用于什么地方?答:塊即復(fù)合語(yǔ)句或稱(chēng)分程序,是括在一對(duì)花括號(hào)之間的語(yǔ)句序列,在語(yǔ)法上相當(dāng)于一條單語(yǔ)句,凡是在單語(yǔ)句可用的地方都可以使用復(fù)合語(yǔ)句。復(fù)合語(yǔ)句主要用于語(yǔ)法上要求只能有一條語(yǔ)句,但又難以只用一條簡(jiǎn)單語(yǔ)句表達(dá)的情形,如循環(huán)語(yǔ)句的循環(huán)體等; 或者用于形成局部化的封裝體。28 判斷下列描述的對(duì)與錯(cuò):(1)c+和c語(yǔ)言都是面向?qū)ο蟮恼Z(yǔ)言。(2)一個(gè)c+源程序可以分別存放在幾個(gè)源文件中
12、。(3)c+對(duì)標(biāo)識(shí)符內(nèi)的英文字母是區(qū)分大、小寫(xiě)的。(4)預(yù)處理命令是在程序正常編譯之后執(zhí)行的。(5)一個(gè)源程序若通過(guò)編譯、連接得到了exe文件,執(zhí)行后就能得到正確的結(jié)果。(6)以下四種寫(xiě)法均是c+合法的注釋語(yǔ)句: /* */ / /* */ */ / /*答: (1)錯(cuò) (2)對(duì) (3)對(duì) (4)錯(cuò) (5)錯(cuò) (6)錯(cuò)29分析下面程序的功能。若輸入為9和4,寫(xiě)出程序的運(yùn)行結(jié)果。#includevoid main() int n1, n2 ; cout n1n2; cout ( n1 + n2 )/2= (n1 + n2 )/2 endl; 解答:程序的功能為:從鍵盤(pán)接收兩個(gè)整數(shù),計(jì)算輸出整數(shù)部
13、分它們的平均值的。若輸入為9和4,運(yùn)行結(jié)果為:(9 + 4 )/2=6210 編一個(gè)小程序,完成小時(shí)數(shù)向秒數(shù)的轉(zhuǎn)換。例如,若輸入為2.5(小時(shí)),則輸出為9000(秒)。參考程序:#include void main() float hours, seconds; couthours; seconds=hours*3600; coutthe second is : secondsendl; 習(xí)題3參考答案31 指出下列常量的類(lèi)型: 34.5l 0x345 89f .7e3 8ul -869答:各常量的類(lèi)型依次為:long double、int、float、double、unsigned lon
14、g int、signed int。32 判斷下列描述的對(duì)錯(cuò): (1)c+各基本類(lèi)型的字寬和所能表示的數(shù)的范圍在各種計(jì)算機(jī)上都是相同的。 (2)一個(gè)變量可以多次被賦值,所以可同時(shí)擁有不同的值。 (3)c+中的變量在使用之前必須先聲明,而且必須在程序開(kāi)頭就聲明。 (4)不同類(lèi)型的指針?lè)峙涞降膬?nèi)存空間的大小是一樣的。 (5)將指針加1后,指針指向下一個(gè)字節(jié)。 (6)字符串 abx43xy的長(zhǎng)度為8,在內(nèi)存中占據(jù)9個(gè)字節(jié)。 (7)字符串可作為一個(gè)整體進(jìn)行輸入、輸出,但不能作為整體進(jìn)行賦值、比較等。 (8)在對(duì)數(shù)據(jù)進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換時(shí),可以不遵循隱式轉(zhuǎn)換的原則。 答: (1) 錯(cuò)(2)錯(cuò)(3)錯(cuò)(4)對(duì)(
15、5)錯(cuò)(6)錯(cuò)(7)對(duì)(8)對(duì)33 寫(xiě)一段語(yǔ)句,對(duì)如下變量或常量進(jìn)行聲明: (1) double型變量b1和b2,其中b2的初始值為98.3; (2) int型的符號(hào)常量length,其值為5; (3) 字符串變量string,初始化為please enter b1 : ; (4) 指向b1的指針b1_ptr ; 答案:(1) double b1 , b2 ( 98.3) ; (2) const int length(5 ); (3) char string = please enter b1 : ; (4) double *b1_ptr = &b1 ; 34 在上題的基礎(chǔ)上寫(xiě)一段語(yǔ)句完成下列
16、操作:(1)在屏幕上顯示string; (2)從鍵盤(pán)接收b1的值; (3)將b2的值加上b1的值,仍賦給b2; (4)輸出b1和b2的值; (5)將b1_ptr所指單元的內(nèi)容加1并輸出; 54(1) 答:在屏幕上顯示string; cout string b1;(3)將b2的值加上b1的值,仍賦給b2; b2 = b2 + b1;(4)輸出b1和b2的值; cout b1= b1 b2 = b2 endl ;(5)將b1_ptr所指單元的內(nèi)容加1并輸出; cout +*b1_ptr endl ; 35 分析下面程序的運(yùn)行結(jié)果并上機(jī)驗(yàn)證。 #includevoid main() const do
17、uble pi(3.1415926),e(2.7182818);double r=0.5; cout(int)pi*r*r=(int)pi*r*rendl; coutint(e*1000)=int(e*1000)endl; coutpi=pi e=e= 73 ) (2) ( x != y ) | ( c b ) (3) z & y | x y (4) z | y & x y (5) 200 * x / y (6) double(x) / y +23 (7) x / y + 23 (8) c + y % x (9)x *= int(b/a) + y (10) c c = 2 | y % - x
18、0 (11) +x level; switch(level) case 1: cout one; break; case 1.5: cout one and a half; break; case 2: coutxy; if xy cout x else cout 0 ) cout* ; (4) 下面程序段用于計(jì)算23除以5的余數(shù): float x = 23, y = 5, z; z = x % y; cout23 % 5 = z endl; (5) int i=0, j=9; for ( ; i+ != j- ; ) cout n; switch(n) case 1 : x = x +10;
19、 case 2 : x = x-10; case 3 : x = x*2; default : ; 解答:(1)第一句和第六句錯(cuò)。switch后的表達(dá)式和case后的常量表達(dá)式只能是字符型、整型或枚舉型,不能是浮點(diǎn)型。 (2)第二句錯(cuò)。if后的表達(dá)式要加括號(hào); 句末應(yīng)有分號(hào)。 (3)死循環(huán)。 (4)x、y、z應(yīng)定義為整型(“%”的操作數(shù)應(yīng)為整數(shù))。 (5)死循環(huán)。 (6)各case子句中沒(méi)有break語(yǔ)句,得到的結(jié)果與要求不一致。45 分析下面的程序的循環(huán)次數(shù)并寫(xiě)出運(yùn)行結(jié)果: # include void main() int n=0 , total=0; do total=total+n;
20、n+; while ( n+ 20 ); cout total= total endl ; 答案:循環(huán)次數(shù)為10,運(yùn)行結(jié)果為: total=11046 分析下面程序的功能并寫(xiě)出程序的運(yùn)行結(jié)果: # include void main( ) int i=100, n=0; while (- i ) if ( i % 5 = 0 & i % 7 = 0 ) cout i endl ; n+ ; cout n= n endl ;答案:程序的功能為統(tǒng)計(jì)100以內(nèi)的自然數(shù)中哪些既是5的倍數(shù)、又是7的倍數(shù),以及這樣的數(shù)有多少個(gè)。運(yùn)行結(jié)果為: 70 35 n=2 47 編程求各位數(shù)字的和為偶數(shù)的三位數(shù)(例如
21、163),并統(tǒng)計(jì)這樣的數(shù)有多少個(gè)。參考程序:# include void main() int count = 0 , a , b , c ; for ( int i=100; i= 999; i + ) a=i/100 ; /a為百位數(shù)字 b=(i a*100 )/10 ; /b為十位數(shù)字 c=ia*100b*10 ; /c為個(gè)位數(shù)字 if ( (a+b+c) % 2 = 0 ) coutiendl; count +; coutcount=countendl; 48 編程計(jì)算下面的f(x): x2+6 (4x) f(x) = - x (0x4) x3+7x +9 (x0) 參考程序:# in
22、clude void main() float x, f; coutx; if (4x) f = x*x+6; if (0x & x= 4) f = -x; if (x=0) f=x*x*x+7*x+9; coutf(x) = fendl; 49 編程:輸入一個(gè)長(zhǎng)整數(shù),統(tǒng)計(jì)它的位數(shù)。參考程序:# include void main() long int n; int w; coutn; w = 1 ; while ( n /= 10 ) w+; coutwendl; 410 編程:從鍵盤(pán)輸入一個(gè)以字符$結(jié)尾的字符串,統(tǒng)計(jì)其中0的個(gè)數(shù)、1的個(gè)數(shù)9的個(gè)數(shù)以及其它字符的個(gè)數(shù)。參考程序:# inclu
23、de void main() char ch; int dight10 , other=0, i; for ( i=0; i ch ; while ( ch != $ ) if ( ch = 0 & ch ch; for ( i=0; i=9; i + ) cout i : dighti endl; coutother : otherendl; 411 編程輸出如下圖形: 1 2 2 2 3 3 3 3 3 4 4 4 4 4 4 4參考程序: # include void main() int i,j; for ( i=1; i= 4; i + ) for ( j=1; j=5i; j +
24、) cout” “; for ( j = 1 ; j =2*i-1; j + ) cout i ; cout endl ; 412 編寫(xiě)程序,計(jì)算s = 1 + ( 1 + 2 ) + ( 1 + 2 + 3 ) + + ( 1 + 2 + + n ),n由鍵盤(pán)輸入。參考程序:# include void main() int n, sum=0, a=0; coutn; for ( int i =1; i = n; i+ ) a= a+i; sum=sum+a; coutsumendl; 413 編寫(xiě)程序:根據(jù)公式 e = 1 + 1/1! + 1/2! + 1/3! + .+ 1/n! 計(jì)算
25、e的值,直到最后一項(xiàng)小于10-6為止。參考程序:# include void main() double e=1, a=1; int i=1; do a=a / i; e=e+a; i+; while ( a = 1e-6 ); coute= e endl; 習(xí)題5參考答案5.1 簡(jiǎn)要回答下列問(wèn)題:(1)數(shù)組名可以看作一個(gè)指針,它與一般的指針有什么不同?(2)試說(shuō)明指針變量本身的長(zhǎng)度與它所指向的數(shù)據(jù)的類(lèi)型的長(zhǎng)度的區(qū)別。(3)怎樣為字符串?dāng)?shù)組賦值?(4)怎樣定義具有100個(gè)數(shù)據(jù)記錄的數(shù)據(jù)庫(kù)二維表?答:(1)數(shù)組名是地址常,指針是地址變量。(2)指針指向的數(shù)據(jù)的類(lèi)型稱(chēng)為指針的基類(lèi)型。不同的基類(lèi)型的
26、長(zhǎng)度不同。指針變量本身的長(zhǎng)度由機(jī)器字長(zhǎng)決定,不管指針變量的基類(lèi)型是什么,指針變量的長(zhǎng)度都是一樣的。(3)字符串?dāng)?shù)組是二維字符數(shù)組,可以在定義時(shí)用初始化列表賦初值。如:char name420 = lixiaohe , wangqiang , shihua , liuli ; 或?qū)⒆址當(dāng)?shù)組定義為字符型指針數(shù)組,也可以在定義時(shí)用初始化列表賦值。如:char *name14 = lixiaohe , wangqiang , shihua , liuli ; (4)要定義具有100個(gè)數(shù)據(jù)記錄的數(shù)據(jù)庫(kù)二維表,應(yīng)當(dāng)先定義表的結(jié)構(gòu),利用struct定義一個(gè)結(jié)構(gòu)類(lèi)型,然后定義該結(jié)構(gòu)類(lèi)型的100個(gè)變量,或者定
27、義具有100個(gè)該結(jié)構(gòu)類(lèi)型元素一維數(shù)組。5.2 指出下列程序段中的錯(cuò)誤,并說(shuō)明錯(cuò)誤原原因。 (1)int length=50 ; char namelength; /錯(cuò)!數(shù)組大小必須為常量 (2)const size=10; /錯(cuò)!定義常量時(shí)沒(méi)有指明類(lèi)型 int asize; size=20; /錯(cuò)!不能為常量賦值 int bsize; (3)float x=72; float *p; p = x ; /錯(cuò)!指針變量必須用地址賦值 (4) int x=9 , *x_ptr=&x; int y=78; *x_ptr = &y ; /錯(cuò)!指針變量用法錯(cuò)誤,可改為x_ptr = &y ;或*x_ptr
28、 = y; (5)const int length = 5; int alength = 3343 , 5 , 32 , 56 , 7 , 65 ; /錯(cuò)!初始化數(shù)據(jù)個(gè)數(shù)大于指定的數(shù)組大小(6)int array1 3= 1 , 2 , 3 , 4 , 5 , 6 ; int array23 = 1 , 2 , 3 , 4 , 5 , 6 ; /錯(cuò)!只能缺省第一維大小 int array3 = 1 , 2 , 3 , 4 , 5 , 6 ; /錯(cuò)!只能缺省第一維大小(7) char a =sorry; char b =radio ; a = b ; /錯(cuò)!字符串變量不能相互賦值 (8)int
29、w4; w = 1 , 2 , 3 , 4 ; /錯(cuò)!不能在數(shù)組定義語(yǔ)句之外同時(shí)為多個(gè)數(shù)組元素賦值 (9)int age5 = 12 , 26 , 48 , 29 , 33 , *age_ptr = age ; cout *age *age_ptr endl ; age + ; /錯(cuò)!地址常量不能改變 age_ptr + ; cout *age *age_ptr endl; (10) char s = welcome!; char *p = &s; /錯(cuò)! s是地址常量,前面不能再用取地址運(yùn)算符& (11) char str14= t , h , i , s ; char str24=this
30、; /錯(cuò)!數(shù)組大小應(yīng)包括字符串常量結(jié)束符 char str3 =this; (12)double x=3.6; double *ptr; *ptr=x; /錯(cuò)!指針變量未用地址賦值5.3 寫(xiě)出下面程序的運(yùn)行結(jié)果:# include void main( ) int a5=34 , 256 , 87 , 46 , 90 ; int b 3 = 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ; int x , y , z; x=a2 + a3; y=*a+*(a+4); z= b12+*b +*(b+1)+*(*(b+1)+1); coutx = x y = y z = z
31、endl ; 答:x = 133 y = 124 z = 165.4 寫(xiě)出下面程序的運(yùn)行結(jié)果:# include void main( )char str =there are 3 boys. ; char *p = str; coutstrendl; *(p+10) = 5 ; coutstrendl ; 運(yùn)行結(jié)果為:there are 3 boys.there are 5 boys.5.5 寫(xiě)出下面程序的運(yùn)行結(jié)果:# include void main()const int n=5; int ann, i, j; for ( i = 0 ; i = n - 1 ; i+ ) ai0=1;
32、aii=1; for ( j=1; ji ; j+ ) aij = ai-1j-1+ai-1j; for ( i=0; i= n-1; i+ )for ( j=0; j= i; j+ )cout* ( * ( a + i ) + j ) ; coutendl; 運(yùn)行結(jié)果為: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 15.6 上機(jī)編程:建立并輸出如下的1010矩陣。 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 0 2 3 4 5 6 7 8 9 0 1 9 0 1 2 3 4 5 6 7 8參考程序# include void main() int
33、 a1010 ; for ( int i=0; i=9; i + ) for ( int j=0; j= 9; j + ) aij= (i + j )%10; cout aij ; coutendl; 5.7上機(jī)編程:數(shù)組data中存放了n個(gè)互不相同的數(shù),找到其中的最小數(shù)并從數(shù)組中刪除。 參考程序:# include void main() const int n=10; double datan; int i, k; coutplease enter the data : ; for ( i = 0; idatai; coutthe previous array is : ; for ( i
34、=0; i= n1; i + ) coutdatai ; coutendl; k=0; for ( i=1; i= n1; i + ) /尋找最小數(shù)的位置 if ( dataidatak ) k=i; for ( i=k; i= n2; i + ) /刪除最小數(shù) datai = datai+1 ; coutthe curent array is : ; for ( i=0; i= n2 ; i + ) coutdatai ; coutendl; 習(xí)題6參考答案6.1 指出并改正下列函數(shù)原型語(yǔ)句的語(yǔ)法錯(cuò)誤。(1) int max(int a,b);(2) int small_one(float
35、x; float y; float z;);(3) extern func(int 1_st,int 2_nd,int 3_rd);(4) char lookup(int*, char*;)(5) double *averagefloat,float;(6) double* &average(float f,float f);答:(1) 參數(shù)b沒(méi)有指定類(lèi)型。 改正為 int max(int a, int b);(2) 參數(shù)之間應(yīng)該用逗號(hào)分隔。 改正為 int small_one(float x, float y, float z);(3) 函數(shù)無(wú)返回值類(lèi)型。 改正為 extern int fu
36、nc(int first,int second,int third);(4) 參數(shù)表中不能出現(xiàn)分號(hào)。 改正為 char lookup(int*, char*);(5) 沒(méi)有錯(cuò)誤。(6) 不能同時(shí)使用* 和&運(yùn)算符,兩個(gè)形式參數(shù)不能同名。 改正為 double& average(float f1,float f2);6.2 編程實(shí)現(xiàn):兩個(gè)學(xué)生班各派有9名學(xué)生參加計(jì)算課程對(duì)抗賽,對(duì)十種試題雙方各派一名參賽,最終以單種試題勝于對(duì)方最多的班級(jí)為優(yōu)勝者。 答:題目分析:分別以a、b兩個(gè)數(shù)組按參賽試題的順序登記成績(jī),最后把每組試題的對(duì)應(yīng)元數(shù)進(jìn)行比較,并計(jì)算出一個(gè)班勝于對(duì)手的個(gè)數(shù),即可比較大小。#inclu
37、deint compare(float t1, float t2);void main()float a9,b9; int i, n;n=0; coutenter a、b classs grade:; for(i=0;iaibi; for(i=0;i5) cout class a is win!endl; else cout class b is win!=t2)? 1:0;6.3 下列程序企圖對(duì)a、b兩個(gè)數(shù)組進(jìn)行整理,若aibi,則二者互換,使得a數(shù)組中每個(gè)變量的值都大于或等于b數(shù)組相應(yīng)變量的值。上機(jī)運(yùn)行該程序時(shí)發(fā)現(xiàn),程序并未達(dá)到預(yù)定的目的,請(qǐng)改正程序中的邏輯錯(cuò)誤,使它能得到預(yù)期的結(jié)果。#i
38、ncludevoid swap(double t1, double t2) double t;for (int i=1;i10;i+)if (t1t2)t=t1;t1=t2;t2=t;void main() double a10=0.55,8.21,7.16,-6.6,-34.5,23.4,71.6,-92.8,6.02,-71.5;double b10=-21.1,24.6,-2.8,15.5,-8.2,37.1,6.06,43.5,-16.2,7.05; int i; for(i=0;i10;i+)swap(ai,bi); coutai=;for(i=0;i10; i+) coutai,;
39、 coutendl; coutbi=;for(i=0;i10; i+) coutbi,; coutendl;答案:只需將程序第二行中函數(shù)參數(shù)由傳值調(diào)用改為傳地址調(diào)用即可:void swap(double& t1, double& t2) 6.4 編寫(xiě)一個(gè)函數(shù)使它能夠輸出一個(gè)浮點(diǎn)數(shù)的小數(shù)部分,然后在主函數(shù)中調(diào)用該函數(shù),將由鍵盤(pán)輸入的任意浮點(diǎn)數(shù)的整數(shù)部分和小數(shù)部分分別輸出。參考程序:#includeint separate(double& f);void main()int a;double b; coutb; a=separate(b); coutthe input number is divided to a and bendl;int separate(double& f) int temp;temp=int(f);f=f-temp;return temp;6.5 下面給出了一個(gè)求素?cái)?shù)的函數(shù)is_prime()的定義。編寫(xiě)程序,補(bǔ)充完成main()函數(shù)定義,驗(yàn)證哥德巴赫猜想“任何大于2的偶數(shù)n都可以表示為兩個(gè)素?cái)?shù)之和”在小于等于10
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 麻雀主題課程設(shè)計(jì)意圖
- 連接板沖壓課程設(shè)計(jì)
- 算法與計(jì)算方法課程設(shè)計(jì)
- 2024年學(xué)校安全工作應(yīng)急預(yù)案
- 2024年一年級(jí)語(yǔ)文上全冊(cè)各單元測(cè)試題分解
- 年度其它新型計(jì)算機(jī)外圍設(shè)備戰(zhàn)略市場(chǎng)規(guī)劃報(bào)告
- 年度碳纖維預(yù)浸布市場(chǎng)分析及競(jìng)爭(zhēng)策略分析報(bào)告
- 2025年度專(zhuān)業(yè)打印紙銷(xiāo)售渠道建設(shè)合同4篇
- 2025年度新能源項(xiàng)目出借咨詢及項(xiàng)目管理協(xié)議4篇
- 2025年新型門(mén)窗安裝工程承包合同4篇
- 第21課《鄒忌諷齊王納諫》對(duì)比閱讀 部編版語(yǔ)文九年級(jí)下冊(cè)
- 2024年安全員-C證考試題庫(kù)及答案(1000題)
- 餐廚垃圾收運(yùn)安全操作規(guī)范
- 皮膚內(nèi)科過(guò)敏反應(yīng)病例分析
- 電影《獅子王》的視聽(tīng)語(yǔ)言解析
- 妊娠合并低鉀血癥護(hù)理查房
- 煤礦反三違培訓(xùn)課件
- 2024年中國(guó)航空發(fā)動(dòng)機(jī)集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 當(dāng)代中外公司治理典型案例剖析(中科院研究生課件)
- 動(dòng)力管道設(shè)計(jì)手冊(cè)-第2版
- 2022年重慶市中考物理試卷A卷(附答案)
評(píng)論
0/150
提交評(píng)論