首頁 考試吧論壇 Exam8視線 考試商城 網(wǎng)絡(luò)課程 模擬考試 考友錄 實(shí)用文檔 求職招聘 論文下載
2011中考 | 2011高考 | 2012考研 | 考研培訓(xùn) | 在職研 | 自學(xué)考試 | 成人高考 | 法律碩士 | MBA考試
MPA考試 | 中科院
四六級(jí) | 職稱英語 | 商務(wù)英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT
新概念英語 | 成人英語三級(jí) | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學(xué)習(xí) | 法語 | 德語 | 韓語
計(jì)算機(jī)等級(jí)考試 | 軟件水平考試 | 職稱計(jì)算機(jī) | 微軟認(rèn)證 | 思科認(rèn)證 | Oracle認(rèn)證 | Linux認(rèn)證
華為認(rèn)證 | Java認(rèn)證
公務(wù)員 | 報(bào)關(guān)員 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 期貨從業(yè)資格 | 司法考試 | 法律顧問 | 導(dǎo)游資格
報(bào)檢員 | 教師資格 | 社會(huì)工作者 | 外銷員 | 國際商務(wù)師 | 跟單員 | 單證員 | 物流師 | 價(jià)格鑒證師
人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業(yè)資格 | 廣告師職業(yè)水平
駕駛員 | 網(wǎng)絡(luò)編輯
衛(wèi)生資格 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 執(zhí)業(yè)護(hù)士
會(huì)計(jì)從業(yè)資格考試會(huì)計(jì)證) | 經(jīng)濟(jì)師 | 會(huì)計(jì)職稱 | 注冊(cè)會(huì)計(jì)師 | 審計(jì)師 | 注冊(cè)稅務(wù)師
注冊(cè)資產(chǎn)評(píng)估師 | 高級(jí)會(huì)計(jì)師 | ACCA | 統(tǒng)計(jì)師 | 精算師 | 理財(cái)規(guī)劃師 | 國際內(nèi)審師
一級(jí)建造師 | 二級(jí)建造師 | 造價(jià)工程師 | 造價(jià)員 | 咨詢工程師 | 監(jiān)理工程師 | 安全工程師
質(zhì)量工程師 | 物業(yè)管理師 | 招標(biāo)師 | 結(jié)構(gòu)工程師 | 建筑師 | 房地產(chǎn)估價(jià)師 | 土地估價(jià)師 | 巖土師
設(shè)備監(jiān)理師 | 房地產(chǎn)經(jīng)紀(jì)人 | 投資項(xiàng)目管理師 | 土地登記代理人 | 環(huán)境影響評(píng)價(jià)師 | 環(huán)保工程師
城市規(guī)劃師 | 公路監(jiān)理師 | 公路造價(jià)師 | 安全評(píng)價(jià)師 | 電氣工程師 | 注冊(cè)測(cè)繪師 | 注冊(cè)計(jì)量師
繽紛校園 | 實(shí)用文檔 | 英語學(xué)習(xí) | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲

計(jì)算機(jī)等級(jí)考試二級(jí)C++練習(xí)題(2)及解答

一、編程題。根據(jù)程序要求,寫出函數(shù)的完整定義。

 

1.寫一個(gè)函數(shù),找出給定字符串中大寫字母字符(即’A’-‘Z’26個(gè)字母)的個(gè)數(shù)(如字符串”China Computer Wrold”中大寫字母字符的個(gè)數(shù)為3個(gè))。

函數(shù)的原型          int CalcCapital (char *str);

函數(shù)參數(shù)  str為所要處理的字符串;

函數(shù)返回值:所給字符串中數(shù)字字符的個(gè)數(shù)

 

2.寫一個(gè)函數(shù),用遞歸函數(shù)完成以下運(yùn)算:

sum(n) =  1 – 1/2 + 1/3 – 1/4 + … -(1/n)*(-1)n        (其中n>0

函數(shù)原型         float sum(int n);

函數(shù)參數(shù)n為正整數(shù)。

函數(shù)返回值:相應(yīng)于給定的n,右邊表達(dá)式運(yùn)算結(jié)果。

提示:你可以使用遞歸表達(dá)式: sum(n) = sum(n-1) -(1/n)*(-1)n

 

3. 給定新數(shù)值,在一個(gè)按節(jié)點(diǎn)所存放數(shù)值從大到小排序的鏈表中,找適當(dāng)位置插一個(gè)新節(jié)點(diǎn),仍保持有序的鏈表,寫一個(gè)函數(shù),完成此操作。

函數(shù)的原型   Node * InsNode(Node * head,  int newValue);

其中,鏈表節(jié)點(diǎn)的定義如下:

struct Nodee{

    int Value;     //存放數(shù)值

    Node * next;     //指向鏈表中的下一個(gè)節(jié)點(diǎn)

};

函數(shù)參數(shù):函數(shù)的第一個(gè)參數(shù)head指向鏈表頭一節(jié)點(diǎn)的指針,如果鏈表為空,則head的值為NULL。第二個(gè)參數(shù)newValue為所給定的插入新節(jié)點(diǎn)的新數(shù)值。

函數(shù)返回值:當(dāng)成功地插入新的節(jié)點(diǎn)時(shí),函數(shù)返回指向新鏈表頭一節(jié)點(diǎn)的指針,否則,若不能申請(qǐng)到內(nèi)存空間,則返回NULL。

      

4.寫一個(gè)函數(shù),找出給定數(shù)組中具有最小值的元素。

函數(shù)的原型

 char MinCode(char charAry[]);

函數(shù)參數(shù)charAry所要處理的字符數(shù)組名;

函數(shù)返回值:返回具有最小ASCII碼的字符。

 

二、理解問答題:

下面的文件stack.h是一個(gè)堆棧類模板Stack的完整實(shí)現(xiàn)。在這個(gè)文件中,首先定義了一個(gè)堆棧元素類模板StackItem,然后,在這個(gè)類的基礎(chǔ)上定義了堆棧類模板Stack。在Stack中使用鏈表存放堆棧的各個(gè)元素,top指針指向鏈表的第一個(gè)節(jié)點(diǎn)元素,bottom指針指向鏈表的最后一個(gè)節(jié)點(diǎn)元素,成員函數(shù)push()將一個(gè)新節(jié)點(diǎn)元素加入(壓進(jìn))到堆棧頂部,pop()從堆棧頂部刪除(彈出)一個(gè)節(jié)點(diǎn)元素。為方便起見,程序中加上了行號(hào)。閱讀程序,根據(jù)程序后面的問題作出相應(yīng)解答。

 

1.         /*---------------------------------------------------------- -------------------*/

2.         /********************* 文件stack.h ************************/

3.         /*---------------------------------------------------------- -------------------*/

4.         template <class Type>

5.         class Stack;

6.         /***************** 定義模板類StackItem ******************/

7.         template<class Type>

8.         class StackItem

9.         {

10.       public:

11.         StackItem(const Type & elem):item(elem) {}

12.         ~StackItem() {}

13.       private:

14.         Type item;

15.         StackItem * nextItem;

16.       friend  class Stack<Type>;

17.     };

18.     /***************** 定義模板類Stack *********************/

19.     template <class Type>

20.     class Stack

21.     {

22.       public:

23.         Stack():top( NULL), ____(A)_____ {}

24.         ~Stack();

25.         Type pop();

26.         void push(const Type &);

27.         bool is_empty() const { return ____(B) ______ ; }

28.       private:

29.         StackItem<Type> * top;

30.         StackItem<Type> * bottom;

31.     };

32.     //模板類Stack的函數(shù)成員pop()的實(shí)現(xiàn)。

33.     //從堆棧頂彈出一個(gè)節(jié)點(diǎn),并返回該節(jié)點(diǎn)的值

34.     template<class Type>

35.     Type Stack<Type>::pop()

36.     {

37.       StackItem<Type> *ptop;      //指向頂部節(jié)點(diǎn)的臨時(shí)指針

38.       Type retVal;                        //返回值

39.       ______(C) ________;

40.       retVal = top->item;

41.       top = top->nextItem;

42.       delete ptop;

43.       return retVal;

44.     }

45.     //模板類Stack的函數(shù)成員push()的實(shí)現(xiàn)

46.     template<class Type>

47.     void Stack<Type>::push(const Type & newItem)

48.     {

49.       StackItem<Type> *pNew = new StackItem<Type>( newItem);

50.         ______(D)___________;

51.       if (bottom == NULL)  bottom = top = pNew;

52.       else   _____(E)_________;

53.     }

54.     //模板類Stack的析構(gòu)函數(shù)~Stack()的實(shí)現(xiàn)

55.     template<class Type>

56.     Stack<Type>::~Stack()

57.     {

58.       StackItem<Type> *p = top, *q;

59.       while(p != NULL) {

60.         q = p->nextItem;

61.         delete p;

62.         p = q;

63.       }

64.     }

 

問題1 程序中有幾處填空,將它們完成。

A_________________________________________________

B_________________________________________________

C_________________________________________________

D_________________________________________________

E_________________________________________________

 

問題2程序第4,5行有什么作用?如果沒有這兩行語句,程序還正確嗎?

問題3程序中多處出現(xiàn)const,請(qǐng)分別說明它們各自表示什么含義。

問題4程序中模板類Stack的析構(gòu)函數(shù)主要做了什么事情?為什么要這么做?

問題5下面的程序使用了stack.h文件中定義的類模板,請(qǐng)說明下列程序中定義堆棧對(duì)象的語句(1-5)是否正確。

       #include “stack.h”

       void main()

       {

               Stack  q1;                                                          //       1

              Stack<float> q2;                                                //         2

              Stack<float> q3(10);                                          //         3

              Stack<float> q4[10];                                          //         4

              Stack<float> *q5 = new Stack<int>;            //       5

               //....

               delete q5;

       }

 

答:

語句號(hào)

1

2

3

4

5

對(duì)/錯(cuò)

 

 

 

 

 

1 2 3 下一頁
文章搜索
版權(quán)聲明:如果計(jì)算機(jī)等級(jí)考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請(qǐng)與我們聯(lián)系800@exam8.com,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本計(jì)算機(jī)等級(jí)考試網(wǎng)內(nèi)容,請(qǐng)注明出處。