版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度農(nóng)業(yè)科技創(chuàng)新基金管理合同
- 二零二五年度環(huán)保材料原材料采購合同3篇
- 二零二五年智能路燈系統(tǒng)研發(fā)與推廣應(yīng)用合同3篇
- 2025版紅磚建材買賣合同(保溫隔熱專用)2篇
- 主題餐廳裝修合同協(xié)議
- 塑料廢渣回收服務(wù)合同
- 高考地理一輪專項復(fù)習(xí)必刷題:北美洲與美國(原卷版+解析版)
- 地產(chǎn)開發(fā)項目土地使用權(quán)合同
- 水生態(tài)修復(fù)工程承包合同
- 2024年新媒體運營代理合同
- 房地產(chǎn)調(diào)控政策解讀
- 五年級數(shù)學(xué)(小數(shù)乘法)計算題專項練習(xí)及答案
- 產(chǎn)前診斷室護(hù)理工作總結(jié)
- 《AP內(nèi)容介紹》課件
- 醫(yī)生定期考核簡易程序述職報告范文(10篇)
- 市政工程人員績效考核制度
- 公園景區(qū)安全生產(chǎn)
- 安全創(chuàng)新創(chuàng)效
- 《中國糖尿病防治指南(2024版)》更新要點解讀
- 初級創(chuàng)傷救治課件
- 2024年社會工作者(中級)-社會綜合能力考試歷年真題可打印
評論
0/150
提交評論