![《面向?qū)ο蟪绦蛟O(shè)計(jì)》課程作業(yè)及答案_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/1/ad48de9a-69f4-4b1b-b3ae-8e3e91d139cc/ad48de9a-69f4-4b1b-b3ae-8e3e91d139cc1.gif)
![《面向?qū)ο蟪绦蛟O(shè)計(jì)》課程作業(yè)及答案_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/1/ad48de9a-69f4-4b1b-b3ae-8e3e91d139cc/ad48de9a-69f4-4b1b-b3ae-8e3e91d139cc2.gif)
![《面向?qū)ο蟪绦蛟O(shè)計(jì)》課程作業(yè)及答案_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/1/ad48de9a-69f4-4b1b-b3ae-8e3e91d139cc/ad48de9a-69f4-4b1b-b3ae-8e3e91d139cc3.gif)
![《面向?qū)ο蟪绦蛟O(shè)計(jì)》課程作業(yè)及答案_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/1/ad48de9a-69f4-4b1b-b3ae-8e3e91d139cc/ad48de9a-69f4-4b1b-b3ae-8e3e91d139cc4.gif)
![《面向?qū)ο蟪绦蛟O(shè)計(jì)》課程作業(yè)及答案_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/1/ad48de9a-69f4-4b1b-b3ae-8e3e91d139cc/ad48de9a-69f4-4b1b-b3ae-8e3e91d139cc5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、面向?qū)ο蟪绦蛟O(shè)計(jì)課程作業(yè)及答案作業(yè)1:是非題1. 頭文件中一般存放著變量和常量的定義、函數(shù)的原型以及類的定義。1. 錯2. 程序的編譯是以文件為單位的,因此將程序分到多個文件中可以減少每次對程序修改所帶來的編譯工作量。4. 對填空題下面是一個求數(shù)組元素之和的程序。主程序中定義并初始化了一個數(shù)組,然后計(jì)算該數(shù)組各元素的和,并輸出結(jié)果。函數(shù)sum計(jì)算數(shù)組元素之和。填充程序中不完整的部分。_A_int sum(int ,int;void main(int ia5 = 2,3,6,8,10;B ;sumOfArray = sum(ia,5;cout << "Sum of arra
2、y:" << sumOfArray << endl;int sum(int array,int lenint iSum = 0;for(int i = 0; C ; D E ;return iSum;答案:A #include B int sumOfArray;C i < lenD i+E iSum += arrayi;閱讀理解題寫出下列程序的運(yùn)行結(jié)果:/file1.cppstatic int i = 20;int x;static int g(int preturn i + p;void f(int vx=g(v;/file2.cpp#include
3、extern int x;void f(int;void main(int i=5;f(i;cout << x;回答以下問題:1. 程序的運(yùn)行結(jié)果是什么樣的?2. 為什么文件file2.cpp中要包含頭文件 ?3. 在函數(shù)main(中是否可以直接調(diào)用函數(shù)g(?為什么?4. 如果把文件file1.cpp中的兩個函數(shù)定義的位置換一下,程序是否正確?為什么?答案:1. 程序的運(yùn)行結(jié)果:25因?yàn)槌绦蛑行枰胏out對象進(jìn)行輸出,而cout是在C+標(biāo)準(zhǔn)I/O庫iostream中定義的類ostream的一個對象。2 在函數(shù)main(中不可以直接調(diào)用函數(shù)g(,因?yàn)間(是靜態(tài)函數(shù),只在它所在的文
4、件內(nèi)可見。3 如果把文件file1.cpp中的兩個函數(shù)定義的位置換一下,程序不正確,因?yàn)镃+規(guī)定所有使用的變量和函數(shù)需要先聲明,后使用。在函數(shù)f中用到了函數(shù)g,所以函數(shù)f不能出現(xiàn)在函數(shù)g的定義或聲明之前。文件file1.cpp中的變量i的作用域從它的定義開始到文件結(jié)束。File2.cpp中的變量i的作用域從它的定義開始到main函數(shù)結(jié)束。編程題寫一個函數(shù),完成在鏈表末尾增加一個節(jié)點(diǎn)的操作。函數(shù)的原型為:Node * AddNode(Node * & head, int newData;其中,鏈表節(jié)點(diǎn)的定義如下:struct Node int data; /存放數(shù)據(jù)Node * next
5、; /指向鏈表中的下一個節(jié)點(diǎn);函數(shù)參數(shù):函數(shù)的第一個參數(shù)head指向鏈表的第一個節(jié)點(diǎn),如果鏈表為空,則head的值為NULL。第二個參數(shù)newData為要插入的新節(jié)點(diǎn)中存放的數(shù)據(jù)。函數(shù)返回值:當(dāng)成功地插入新的節(jié)點(diǎn)時,函數(shù)返回指向新節(jié)點(diǎn)的指針,否則,如果不能申請到內(nèi)存空間,則返回NULL。Node * AddNode(Node *& head, int newData/在這里寫出函數(shù)的實(shí)現(xiàn)答案:Node * AddNode(Node * &head, int newData/申請新的節(jié)點(diǎn)空間Node * newNode = new Node;if (newNode = NULLr
6、eturn NULL;/填充新節(jié)點(diǎn)的內(nèi)容newNode->data = newData;newNode->next = NULL;/插入到鏈表的結(jié)尾if (head = NULLhead = newNode;else/尋找鏈表的最后一個節(jié)點(diǎn)Node *tail = head;while(tail->next != NULLtail = tail->next;/將新節(jié)點(diǎn)插入到最后tail->next = newNode; return newNode;作業(yè)2:是非題1. 在不同作用域中的變量可以同名。對2. 派生類的成員函數(shù)可以直接訪問基類的所有成員。2. 錯填空題
7、#include _A_;void main(int a6=2,4,8,6,9,14;int x1=_B_; /調(diào)用f1函數(shù)求出a中前4各元素之和。int x2=f1(a,6;cout< int f1(int a, int nint i,s=0;for(i=0;i return s;答案:A int f1(int a, int n;B f1(a,4改錯題1. 下面的函數(shù)將浮點(diǎn)型指針參數(shù)para所指向的值賦給一個局部指針變量pFloat所指向的空間,然后輸出*pFloat的值。#include void func(float * parafloat * pFloat;pFloat = pa
8、ra;cout << pFloat;錯誤為:_改正方法為:_答案錯誤為:沒有給指針申請空間,就直接賦值改正的方法為:先為pFloat申請空間,再賦值。2. 下列程序片段對二維數(shù)組的每個元素賦值unsigned short SomeArray54;for (int i = 1; i<=5; i+for (int j = 1; j<=4; j+SomeArrayij = i+j;錯誤為:_改正方法為:_答案錯誤為:訪問數(shù)組元素的下標(biāo)不對改正的方法為:將兩個for循環(huán)的循環(huán)初始值改為0,循環(huán)結(jié)束條件分別改為i<5和j<4。 編程題寫一個函數(shù),找出給定字符串中小寫字
9、母字符的個數(shù)。函數(shù)的原型為:int CalcAlpha(char *str;函數(shù)參數(shù): str為所要處理的字符串;函數(shù)返回值:所給字符串中小寫字母字符的個數(shù)int CalcAlpha(char *str /在這里寫上程序的實(shí)現(xiàn)答案:int CalcAlpha(char *str/判斷字符指針是否為空if(str = NULL return 0;/記錄小寫字母字符個數(shù)的變量int num=0;/依次檢查各個字符,如果是小寫字母,則總數(shù)加1for(int i=0; stri!=0x0; i+if(stri>='a' && stri<='z'
10、;num+;/返回數(shù)字字符個數(shù)return num;作業(yè)3:是非題1. 函數(shù)的參數(shù)和返回值類型可以是簡單數(shù)據(jù)類型,也可以是指針、引用、數(shù)組和類。3. 錯2. 如果派生類的成員函數(shù)的原型與基類中被定義為虛函數(shù)的成員函數(shù)原型相同,那么,這個函數(shù)自動繼承基類中虛函數(shù)的特性。5. 對填空題#include _A_; int f2(int* a, int n_ B_; for(i=1;i if(max return max;void main(int bMM=3,12,6,20,9,7,34,50,25,66;_C_; /求出b4至b8 之間的最大值并賦給x1_D_; /求出b0至b5 之間的最大值并賦
11、給x2cout< 答案:A const int MM=10;B int i,max=a0;C int x1=f2(b+4, 5;D int x2=f2(b, 6;閱讀理解題二、 valarray是C+的標(biāo)準(zhǔn)模板庫中的一個類模板,類模板的每個實(shí)例類實(shí)現(xiàn)了某個具體的數(shù)據(jù)類型的數(shù)組,如valarray 是一個整型的數(shù)組類。該類的使用和一般的數(shù)組非常類似,可以通過 運(yùn)算符來訪問數(shù)組中的每個元素。C+的標(biāo)準(zhǔn)模板庫中還有一個模板函數(shù)abs(,其函數(shù)原型為:template valarray abs(const valarray & x; 該函數(shù)的作用是將作為參數(shù)的數(shù)組x的每個元素的值取絕對值
12、,并返回得到的新的數(shù)組。如原來的數(shù)組為:4 -1 -3 0 -34將這個數(shù)組作為參數(shù)傳遞給函數(shù)abs后,函數(shù)返回的數(shù)組就變成:4 1 3 0 34要求:閱讀下列程序,回答后面的問題。/*/#include #include / 該頭文件中定義了模板類valarray和模板函數(shù)abs( #define ARRAY_SIZE 10 typedef valarray INTVALARRAY; void main(INTVALARRAY val_array(ARRAY_SIZE; /定義一長度為ARRAY_SIZE的數(shù)組對象/賦初始值for (int i = 0; i < ARRAY_SIZE;
13、 i+val_arrayi = -i;cout << "Size of val_array = " << val_array.size( << "n"cout << "The values of val_array before calling abs(:n"for (i = 0; i < ARRAY_SIZE; i+cout << val_arrayi << " "cout << "n"INTVALARR
14、AY abs_array = abs(val_array;cout << "The result of val_array after calling abs(:n"for (i = 0; i < ARRAY_SIZE; i+cout << abs_arrayi << " "cout << "n"/*/問題1:寫出程序的輸出結(jié)果問題2:關(guān)于程序中的語句:INTVALARRAY val_array(ARRAY_SIZE;下列說法哪些是正確的,哪些是錯誤的?在下表相應(yīng)的位置寫上“對”或
15、“錯”題號ABCDE對/錯(A)該語句定義了一個對象val_array,這個對象是類valarray 的實(shí)例(B)該語句說明了一個函數(shù)原型,函數(shù)的名字為val_array,參數(shù)為ARRAY_SIZE,函數(shù)的返回值類型為INTVALARRAY(C)板類valarray一定有一個只帶一個參數(shù)的構(gòu)造函數(shù)(D)模板類valarray一定有一個只帶兩個參數(shù)的構(gòu)造函數(shù)(E)ARRAY_SIZE將作為參數(shù)傳遞給val_array的構(gòu)造函數(shù),初始化val_array對象問題3:(本小題共12分)下面是模板函數(shù)abs(的實(shí)現(xiàn)。這個實(shí)現(xiàn)中有錯誤,指出錯誤并寫出正確的實(shí)現(xiàn)。注意:函數(shù)頭是正確的,不要改變,所有的錯誤
16、出現(xiàn)在函數(shù)體中。template valarray abs(const valarray & x for(int i=0; i xi*=-1; return x;這個函數(shù)實(shí)現(xiàn)中有以下錯誤:(1)_(2)_(3)_正確的函數(shù)實(shí)現(xiàn)應(yīng)為:template valarray abs(const valarray & x 問題4:(本小題3分)從上面的程序中,你可以推斷出,valarray模板類中至少重載了哪個或哪些C+的運(yùn)算符?答:重載了_運(yùn)算符答案:問題1:程序的輸出結(jié)果為:Size of val_array = 10The values of val_array before ca
17、lling abs(:0 -1 -2 -3 -4 -5 -6 -7 -8 -9The result of val_array after calling abs(:0 1 2 3 4 5 6 7 8 9問題2題號ABCDE對/錯對錯對錯對問題3答案:該函數(shù)實(shí)現(xiàn)有以下錯誤:(1)函數(shù)的參數(shù)x為const參數(shù),不能在函數(shù)體中被改變(2)在函數(shù)中應(yīng)該創(chuàng)建一個臨時對象,這個對象的內(nèi)容由參數(shù)x的內(nèi)容運(yùn)算而來(3)函數(shù)返回的應(yīng)是臨時對象,而不是參數(shù)正確的函數(shù)實(shí)現(xiàn)為:template valarray abs(const valarray & x INTVALARRAY ret_array(x; /
18、利用拷貝構(gòu)造函數(shù)構(gòu)造臨時對象for (int i = 0; i < x.size(; i+if (ret_arrayi < 0ret_arrayi *= -1; /取絕對值return ret_array; /返回臨時對象或者template valarray abs1(const valarray & x INTVALARRAY ret_array(x.size(; /構(gòu)造一個與x長度相同的對象for (int i = 0; i < x.size(; i+if (xi < 0ret_arrayi = xi * (-1; /取絕對值elseret_arrayi
19、= xi;return ret_array; /返回臨時對象問題4答案:重載了取數(shù)組下標(biāo)的運(yùn)算符編程題2(本每小題15分)寫一個函數(shù),找出給定字符串中具有最大ASCII碼的字符。如字符串“world”中字符w具有最大的ASCII碼。函數(shù)的原型為:char MaxCharacter(char *str;函數(shù)參數(shù):str指向所要處理的字符串;函數(shù)返回值:如果str不空,則返回具有最大ASCII碼的字符,否則返回空字符0x0或0。char MaxCharacter(char *str答案:程序可以有多種寫法,下面是其中的四種第一種:char MaxCharacter(char *strif (str
20、 = NULLreturn 0x0;char maxChar = 0x0;for(int i=0; stri != 0x0; i+if (stri > maxCharmaxChar = stri;return maxChar;第二種:char MaxCharacter(char *strif (str = NULLreturn 0x0;char maxChar = 0x0;for(int i=0; i < strlen(str; i+if (stri > maxCharmaxChar = stri;return maxChar;第三種:char MaxCharacter(ch
21、ar *strif (str = NULL | str0 = 0x0return 0x0;char maxChar = str0;for(int i=1; stri!= 0x0; i+if (stri > maxCharmaxChar = stri;return maxChar;第四種:char MaxCharacter(char *strif (str = NULL | str0 = 0x0return 0x0;char maxChar = str0;int i=1;while(stri != 0x0if (stri > maxCharmaxChar = stri;i+;retu
22、rn maxChar;作業(yè)4:是非題1. 函數(shù)重載既要求兩函數(shù)參數(shù)對應(yīng)的類型不同又要求參數(shù)個數(shù)不同。錯2. 在基類中被說明為虛函數(shù)的類的成員函數(shù)必須在每個派生類中說明為虛函數(shù),才能具有多態(tài)的特征。錯填空題#include class AA private:int a;int b;public:AA(int aa, int bb=10_A_; /將aa的值賦給a_B_; /將bb的值賦給b_C_; _D_; ;int AA:f1( return a+b;int AA:f2( return a*b;void main(AA x(2,3, y(8;cout< 答案:A a=aa;B b=bb;
23、C int f1(;D int f2(;閱讀理解題三、下面的文件queue.h是一個隊(duì)列類模板Queue的完整實(shí)現(xiàn)。在這個文件中首先定義了一個隊(duì)列元素類模板QueueItem,然后在這個類的基礎(chǔ)上定義了隊(duì)列類模板Queue。在Queue中使用鏈表存放隊(duì)列的各個元素,front指針指向鏈表的第一個節(jié)點(diǎn)元素,back指針指向鏈表的最后一個節(jié)點(diǎn)元素,成員函數(shù)add(將一個新節(jié)點(diǎn)元素加入到隊(duì)列結(jié)尾,remove(從隊(duì)列開頭刪除一個節(jié)點(diǎn)元素。為方便起見,程序中加上了行號。閱讀程序,根據(jù)程序后面的問題作出相應(yīng)解答。/*-/* 文件queue.h */*-/template class Queue;/* 定
24、義模板類QueueItem */template class QueueItempublic:QueueItem(const Type & elem:item(elem QueueItem( private:Type item;QueueItem * nextItem;friend class Queue ; ;/* 定義模板類Queue */template class Queue public:Queue(:front( NULL, _(A_ Queue(;Type remove(;void add(const Type &bool is_empty( const retu
25、rn _(B_ ; private:QueueItem *front; QueueItem *back; ;/模板類Queue的函數(shù)成員remove(的實(shí)現(xiàn)/從隊(duì)列頭取出一個節(jié)點(diǎn),并返回該節(jié)點(diǎn)的值template Type Queue :remove( QueueItem *pFront; /指向頭節(jié)點(diǎn)的臨時指針Type retVal; /返回值_(C_;retVal = front->item;front = front->nextItem;delete pFront;return retVal;/模板類Queue的函數(shù)成員add(的實(shí)現(xiàn)template void Queue :
26、add(const Type & newItem QueueItem *pNew = new QueueItem ; pNew->item = newItem;_(D_;if (front = NULLfront = back = pNew;elseback->nextItem = pNew;_(E_;template Queue :Queue( QueueItem *p = front, *q; while(p != NULLq = p->nextItem;delete p;p = q;問題1:(每個填空3分,共15分 程序中有幾處填空,將它們完成。(A)_(B)_
27、(C)_(D)_(E)_問題2:(本小題3分)題中程序第1,2行為什么要說明一下類模板Queue?如果沒有這兩行語句,程序還正確嗎?問題3:(本小題4分)程序第22,23行各有一個const,它們各自表示什么含義:問題4:(本小題3分)程序中模板類Queue的析構(gòu)函數(shù)主要做了什么事情?為什么要這么做?問題5:(本小題5分,每答對一個給1分)下面的程序使用了queue.h文件中定義的類模板,說明程序中哪些定義隊(duì)列對象的語句是不正確的,哪些是正確的。#include “queue.h”void main(Queue q1; / 1Queue q2; / 2Queue q3(100; / 3Queu
28、e q4100; / 4Queue *q5 = new Queue ; / 5/.delete q5;語句號12345對/錯答案:問題1:答案為:(A)back(NULL(B)front = NULL 或 back = NULL(C)pFront = front(D)pNew->nextItem = NULL(E)back = pNew問題2:答:不正確。因?yàn)樵陬怮ueueItem模板類的定義中用到了模板類Queue,而此時Queue還沒有定義,所以要先聲明一下,告訴編譯程序Queue是一個模板類,它將在程序的其他地方定義。如果沒有這個說明,編譯程序就不知道標(biāo)識符Queue代表什么樣的含
29、義了。問題3:答:第22行的const修飾的是函數(shù)的參數(shù),表示在這個函數(shù)體中不能改它所修飾的參數(shù)所對應(yīng)的實(shí)際參數(shù)的值。第23行的const修飾的是模板類Queue的成員函數(shù)is_empty(,它表示在函數(shù)is_empty(的函數(shù)體中不能改變?nèi)魏螖?shù)據(jù)成員的值。問題4:答:析構(gòu)函數(shù)中主要是釋放鏈表中存放的各個節(jié)點(diǎn)的空間。因?yàn)镼ueue對象在其生存期間可能加入了很多節(jié)點(diǎn),從堆中申請了一些內(nèi)存空間,這些空間應(yīng)該隨著對象的消亡而釋放掉,所以需要在析構(gòu)函數(shù)中來釋放這些空間。問題5: 語句號12345錯對/錯錯對對編程題三、定義一個日期類Date,該類對象存放一個日期,可以提供的操作有:int GetYea
30、r (; /取年份int GetMonth (; /取月份int GetDay ( ; /取日子值void SetDate (int year, int month, int day; /設(shè)置日期值下面是測試你所定義的日期類的程序:#include #include “date.h”void main(Date d1(1999, 1, 14; /用所給日期定義一個日期變量Date d2; /定義一個具有缺省值的日期,缺省值為1980年1月1日Date d3(d1; /用已有日期x構(gòu)造一個新對象d2.SetDate(1999,3,13;cout << "Date:"
31、;cout << d1.GetYear( << '.' << d1.GetMonth( << '.'<< d1.GetDay( << endl;cout << "Date:"cout << d2.GetYear( << '.' << d2.GetMonth( << '.'<< d2.GetDay( << endl;cout << "Date:"cout <<
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年單杯牙刷架行業(yè)深度研究分析報告
- 2025年聚碳酸酯項(xiàng)目可行性研究報告
- 中國體育小鎮(zhèn)建設(shè)規(guī)劃與運(yùn)營管理分析報告
- 純化纖毛毯行業(yè)行業(yè)發(fā)展趨勢及投資戰(zhàn)略研究分析報告
- 北京某保險經(jīng)紀(jì)項(xiàng)目可行性研究報告
- 2025年度大型商業(yè)綜合體物業(yè)維護(hù)及售后服務(wù)合同
- 2025年度高端紅酒全球購銷合作合同范本
- 2025年度新型綠色住宅買賣合同示范文本
- 2025年度大型工礦設(shè)備買賣合同協(xié)議書
- 2025年度城市地下綜合管廊清包勞務(wù)合同規(guī)范
- 房地產(chǎn)調(diào)控政策解讀
- 五年級數(shù)學(xué)(小數(shù)乘法)計(jì)算題專項(xiàng)練習(xí)及答案
- 產(chǎn)前診斷室護(hù)理工作總結(jié)
- 2024-2025學(xué)年八年級數(shù)學(xué)人教版上冊寒假作業(yè)(綜合復(fù)習(xí)能力提升篇)(含答案)
- 《AP內(nèi)容介紹》課件
- 醫(yī)生定期考核簡易程序述職報告范文(10篇)
- 市政工程人員績效考核制度
- 公園景區(qū)安全生產(chǎn)
- 安全創(chuàng)新創(chuàng)效
- 《中國糖尿病防治指南(2024版)》更新要點(diǎn)解讀
- 初級創(chuàng)傷救治課件
評論
0/150
提交評論