c練習(xí)題及答案_第1頁
c練習(xí)題及答案_第2頁
c練習(xí)題及答案_第3頁
c練習(xí)題及答案_第4頁
c練習(xí)題及答案_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、練習(xí)題(一)  一、編程題。根據(jù)程序要求,寫出函數(shù)的完整定義。   1寫一個函數(shù),找出給定字符串中大寫字母字符(即A-Z這26個字母)的個數(shù)(如字符串”China Computer Wrold”中大寫字母字符的個數(shù)為3個)。函數(shù)的原型:int CalcCapital (char *str); 函數(shù)參數(shù): str為所要處理的字符串;函數(shù)返回值:所給字符串中數(shù)字字符的個數(shù)2寫一個函數(shù),用遞歸函數(shù)完成以下運算:sum(n) = 1 1/2 + 1/3 1/4 + -(1/n)*(-1)n (其中n>0) 函數(shù)原型:float sum(int n); 函數(shù)參數(shù):n為正整數(shù)。

2、函數(shù)返回值:相應(yīng)于給定的n,右邊表達(dá)式運算結(jié)果。提示:你可以使用遞歸表達(dá)式:sum(n) = sum(n-1) -(1/n)*(-1)n   3. 給定新數(shù)值,在一個按節(jié)點所存放數(shù)值從大到小排序的鏈表中,找適當(dāng)位置插一個新節(jié)點,仍保持有序的鏈表,寫一個函數(shù),完成此操作。 函數(shù)的原型:Node * InsNode(Node * head, int newValue); 其中,鏈表節(jié)點的定義如下: struct Nodee int Value; /存放數(shù)值 Node * next; /指向鏈表中的下一個節(jié)點 ; 函數(shù)參數(shù):函數(shù)的第一個參數(shù)head指向鏈表頭一節(jié)點的指針,如果鏈表為空,則h

3、ead的值為NULL。第二個參數(shù)newValue為所給定的插入新節(jié)點的新數(shù)值。 函數(shù)返回值:當(dāng)成功地插入新的節(jié)點時,函數(shù)返回指向新鏈表頭一節(jié)點的指針,否則,若不能申請到內(nèi)存空間,則返回NULL。 4寫一個函數(shù),找出給定數(shù)組中具有最小值的元素。 函數(shù)的原型: char MinCode(char charAry); 函數(shù)參數(shù):charAry所要處理的字符數(shù)組名; 函數(shù)返回值:返回具有最小ASCII碼的字符。   二、理解問答題: 下面的文件stack.h是一個堆棧類模板Stack的完整實現(xiàn)。在這個文件中,首先定義了一個堆棧元素類模板StackItem,然后,在這個類的基礎(chǔ)上定義了堆棧類模

4、板Stack。在Stack中使用鏈表存放堆棧的各個元素,top指針指向鏈表的第一個節(jié)點元素,bottom指針指向鏈表的最后一個節(jié)點元素,成員函數(shù)push()將一個新節(jié)點元素加入(壓進(jìn))到堆棧頂部,pop()從堆棧頂部刪除(彈出)一個節(jié)點元素。為方便起見,程序中加上了行號。閱讀程序,根據(jù)程序后面的問題作出相應(yīng)解答。  1.         /*- -*/2.         /* 文件stack.h */3. 

5、0;       /*- -*/4.         template <class Type>5.         class Stack;6.         /* 定義模板類StackItem */7.      

6、0;  template<class Type>8.         class StackItem9.         10.     public:11.     StackItem(const Type & elem):item(elem) 12.     StackItem() 1

7、3.     private:14.     Type item;15.     StackItem * nextItem;16.     friend class Stack<Type>17.     ;18.     /* 定義模板類Stack */19.     template <class

8、Type>20.     class Stack21.     22.     public:23.     Stack():top( NULL), _(A)_ 24.     Stack();25.     Type pop();26.     void push(const Type &);27.&#

9、160;    bool is_empty() const return _(B) _ ; 28.     private:29.     StackItem<Type> * top;30.     StackItem<Type> * bottom;31.     ;32.     /模板類Stack的函數(shù)成員pop()的實現(xiàn)。33. 

10、;    /從堆棧頂彈出一個節(jié)點,并返回該節(jié)點的值34.     template<class Type>35.     Type Stack<Type>:pop()36.     37.     StackItem<Type> *ptop; /指向頂部節(jié)點的臨時指針38.     Type retVal; /返回值39. 

11、;    _(C) _;40.     retVal = top->item;41.     top = top->nextItem;42.     delete ptop;43.     return retVal;44.     45.     /模板類Stack的函數(shù)成員push()的實現(xiàn)46. &#

12、160;   template<class Type>47.     void Stack<Type>:push(const Type & newItem)48.     49.     StackItem<Type> *pNew = new StackItem<Type>( newItem);50.     _(D)_;51.   

13、;  if (bottom = NULL) bottom = top = pNew;52.     else _(E)_;53.     54.     /模板類Stack的析構(gòu)函數(shù)Stack()的實現(xiàn)55.     template<class Type>56.     Stack<Type>:Stack()57.    

14、 58.     StackItem<Type> *p = top, *q;59.     while(p != NULL) 60.     q = p->nextItem;61.     delete p;62.     p = q;63.     64.       問題1: 程序中有幾

15、處填空,將它們完成。 (A)_(B)_(C)_(D)_(E)_  問題2:程序第4,5行有什么作用?如果沒有這兩行語句,程序還正確嗎?問題3:程序中多處出現(xiàn)const,請分別說明它們各自表示什么含義。問題4:程序中模板類Stack的析構(gòu)函數(shù)主要做了什么事情?為什么要這么做? 問題5:下面的程序使用了stack.h文件中定義的類模板,請說明下列程序中定義堆棧對象的語句(1-5)是否正確。 #include “stack.h”void main() Stack q1; /1Stack<float> q2; /2Stack<float> q3(10); /3Stac

16、k<float> q410; /4Stack<float> *q5 = new Stack<int> /5 /. delete q5;練習(xí)題(一)參考答案一,編程題答案 1.         程序為: int CalcCapital (char *str) if (str = NULL) return 0; /判斷字符指針是否為空  int num_of_Capital = 0; /記錄大寫字母字符個數(shù)的變量,初值為0  for(int i=0; stri !

17、= 0x0; i+) if (stri <= 'A' && stri >= 'Z') num_of_ Capital +; /若是大寫字母,則總數(shù)加1  return num_of_ Capital; /返回大寫字母字符數(shù)  2程序為: float sum(int n) if (n = 1) return 1; else return sum(n-1) -(1.0/n)*(-1)n;   3程序為: Node * insNode(Node * head, int newValue) Node * newN

18、ode = new Node; /申請新的節(jié)點空間 if (newNode = NULL)return NULL;/   newNode->data = newValue; /填充新節(jié)點的內(nèi)容 newNode->next = NULL;   Node *pre, *cur; Pre = head;   if (head = NULL) head = newNode; /插入到空鏈表的表頭 else if(newValue>=head->Value) newNode->next=head; head = newNode; /插入到鏈表的

19、表頭 else /在鏈表尋找插入點 Node *cur,*pre = head; while(pre->next != NULL) cur = pre->next; if(newValue >= cur->Value) break; else pre = cur; if(pre->next!= NULL) newNode->next = cur;/若非末尾,則有下一節(jié)點 pre->next = newNode; /將新節(jié)點插入 return head;   4程序可以有多種寫法,下面是其中一種   char MinCode(char charAry,int len=10) char mixCode = 0x0; for(int i=0; i <len; i+) if (charAry i < mixCode) mixCode = stri; return mixCode;   二、理解問答題: 問題1,答:(A)       

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論