




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
練習(xí)題(一)
一、編程題。根據(jù)程序要求,寫出函數(shù)的完整定義。
1.寫一個(gè)函數(shù),找出給定字符串中大寫字母字符(即'A'-Z這26個(gè)字母)的個(gè)數(shù)(如
字符串"ChinaComputerWrold”中大寫字母字符的個(gè)數(shù)為3個(gè))。
函數(shù)的原型:intCalcCapital(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ù)原型:floatsum(intn);
函數(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*lnsNode(Node*head,intnewValue);
其中,鏈表節(jié)點(diǎn)的定義如下:
structNodee{
intValue;〃存放數(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)的指針,否則,
若不能申請到內(nèi)存空間,則返回NULL。
4.寫一個(gè)函數(shù),找出給定數(shù)組中具有最小值的元素。
函數(shù)的原型:
charMinCode(charcharAry[]);
函數(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)元素。為方便起見,程序中加上了行號。
閱讀程序,根據(jù)程序后面的問題作出相應(yīng)解答。
1./*---------------------------------------------------------------……
2./*********************文件stack.h
***************/
3./*---------------------------------------------------------------------------
4.template
5.classStack;
6./*****************定義模板類Stackitem
***************/
7.template
8.classStackitem
9.(
10.public:
11.Stackltem(constType&elem):item(elem){}
12.~Stackltem(){}
13.private:
14.Typeitem;
15.Stackitem*nextitem;
16.friendclassStack;
17.);
18I*****************定義板/avStack*********************/
19.template
20.classStack
21.(
22.public:
23.Stack():top(NULL),_____(A){)
24.~Stack。;
25.Typepop();
26.voidpush(constType&);
27.boolis_empty()const{return(B);}
28.private:
29.Stackitem*top;
30.Stackitem*bottom;
31.};
32.〃模板類Stack的函數(shù)成員pop()的實(shí)現(xiàn)。
33.〃從堆棧頂彈出一個(gè)節(jié)點(diǎn),并返回該節(jié)點(diǎn)的值
34.template
35.TypeStack::pop()
36.{
37.Stackitem*ptop;〃指向頂部節(jié)點(diǎn)的臨時(shí)指針
38.TyperetVal;//返回值
39.(C);
40.retVal=top->item;
41.top=top->nextitem;
42.deleteptop;
43.returnretVal;
44.}
45.〃模板類Stack的函數(shù)成員push。的實(shí)現(xiàn)
46.template
47.voidStack::push(constType&newltem)
48.(
49.Stackitem*pNew=newStackltem(newltem)
50.(D);
51.if(bottom==NULL)bottom=top=pNew;
52.else_____(E)_________;
53.)
54.〃模板類Stack的析構(gòu)函數(shù)~Stack。的實(shí)現(xiàn)
55.template
56.Stack:Stack()
57.(
58.Stackitem*p=top,*q;
59.while(p!=NULL){
60.q=p->nextitem;
61.deletep;
62.p=q;
63.)
64.)
問題1:程序中有幾處填空,將它們完成。
(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"
voidmain()
Stackq1;//1
Stackq2;//2
Stackq3(10);//3
Stackq4[10];//4
Stack*q5=newStack;//5
deleteq5;
)
答:
語句號
1
2
3
4
5
對/錯
一,編程題答案
1.程序?yàn)椋?/p>
intCalcCapital(char*str)
(
if(str==NULL)return0;〃判斷字符指針是否為空
intnum_of_Capital=0;〃記錄大寫字母字符個(gè)數(shù)的變量,初值為0
for(inti=0;str[i]!=0x0;i++)
if(str[i]<='A'&&str[i]>='Z')num_of_Capital++;〃若是大寫字母,則總
數(shù)加1
returnnum_of_Capital;〃返回大寫字母字符數(shù)
)
2.程序?yàn)椋?/p>
floatsum(intn)
(
if(n==1)return1;
elsereturnsum(n-1)-(1.0/n)*(-1)n;
)
3.程序?yàn)椋?/p>
Node*insNode(Node*head,intnewValue)
(
Node*newNode=newNode;〃申請新的節(jié)點(diǎn)空間
if(newNode==NULL)returnNULL;//
newNode->data=newValue;//填充新節(jié)點(diǎn)的內(nèi)容
newNode->next=NULL;
Node*pre,*cur;
Pre=head:
if(head==NULL)head=newNode;〃插入至ij空鏈表的表頭
else
if(newValue>=head->Value){
newNode->next=head;
head=newNode;〃插入到鏈表的表頭
)
else{〃在鏈表尋找插入點(diǎn)
Node*cur,*pre=head;
while(pre->next!=NULL){
cur=pre->next;
if(newValue>=cur->Value)break;
elsepre=cur;
)
if(pre->next!=NULL)newNode->next=cur;〃若非末尾,則有下一節(jié)點(diǎn)
pre->next=newNode;〃將新節(jié)點(diǎn)插入
returnhead;
4.程序可以有多種寫法,下面是其中一種
charMinCode(charcharAry[],intlen=10)
(
charmixCode=0x0;
for(inti=0;i
(
if(charAry[i]<mixCode)
mixCode=str[i];
)
returnmixCode;
)
二、理解問答題:
問題1,答:
(A)bottom(NULL)
(B)top==NULL;
(C)ptop=top;
(D)pNew->nextitem=top;
(E)top=pNew;
問題2,答:不正確。因?yàn)轭怱tackitem模板類的定義中用到了模板類Stack,Stack
還沒有定義,所以,必須先聲明Stack是一個(gè)模板類,否則,編譯程序就不知道標(biāo)識符Stack
代表什么樣的含義,無法進(jìn)行編譯。
問題3,答:第11、26和47行的const修飾的都是函數(shù)的參數(shù),表示在這個(gè)函數(shù)體
中不能改它所修飾的參數(shù)的值。第27行的const修飾的是模板類Stack的成員函數(shù)
is_empty(),它表示在函數(shù)is_empty()的函數(shù)體中不能改變?nèi)魏螖?shù)據(jù)成員的值。
問題4,答:析構(gòu)函數(shù)中主要是釋放存放的各個(gè)節(jié)點(diǎn)所占涌空間。因?yàn)镾tack對象在其
生存期間可能加入了很多節(jié)點(diǎn),從堆中申請了一些內(nèi)存空間。這些空間應(yīng)隨著對象的消亡而
釋放抻,所以,需要在析構(gòu)函數(shù)中釋放這些空間。
問題5,答:
語句號
2
3
4
5
對/錯
錯
對.
錯
錯
對
一,[理解問答題]請回答下面有模板的定義問題:
1.下列模板的定義是否合法的?若為非法的,請簡單扼要說明理由。
(1)非法的,兩次聲明不一樣
(2)合法的
(3)非法的,兩個(gè)類型參數(shù)的名字不能相同
(4)非法的,參數(shù)U沒有類型說明
(5)合法的
2.關(guān)于類List的如下定義中有若干錯誤,請指出其所在行號并改正(但不求補(bǔ)充
實(shí)現(xiàn)成員函數(shù))。
1templateclassListitem;
2
3templateclassList
4{
5public:
6List():front(NULL),end(NULL){}〃有錯
7List(constList&);〃有錯
8-List();
9voidinsert(Listltem*ptr,elemTypevalue);〃有錯
10intremove(elemTypevalue);〃有錯
11intsize(){returnsize;}
12private:
13ListItern*front;〃有錯
14Listltem*end;〃有錯,以上錯均已改正
15);
二,[理解問答題]
問題1.答:程序的輸出結(jié)果為:
Sizeofval_array=10
Thevaluesofval_arraybeforecallinginv():
0123456789
Theresultofval_arrayaftercallinginv():
0-1-2-3-4-5-6-7-8-9
問題2.答:
題號
A
B
C
D
E
對/錯
對
錯
對
錯
對
問題3.答:該函數(shù)實(shí)現(xiàn)有以下錯誤:
(1)函數(shù)的參數(shù)x為const參數(shù),不能在函數(shù)體中被改變
(2)在函數(shù)中應(yīng)該創(chuàng)建一個(gè)臨時(shí)對象,這個(gè)對象的內(nèi)容由參數(shù)x的內(nèi)容運(yùn)算而
來
(3)函數(shù)返回的應(yīng)是臨時(shí)對象,而不是參數(shù)
正確的函數(shù)實(shí)現(xiàn)為:
templateval_aryinv(constval_ary&x)
(
INTARYret_array(x);〃利用拷貝構(gòu)造函數(shù)構(gòu)造臨時(shí)對象
for(inti=0;i<x.size();i++)ret_array*=-1;〃符號取反
returnret_array;//返回臨時(shí)對象
)
或者
templateval_aryinv(constval_ary&x)
(
INTARYret_array(x.size());〃構(gòu)造一個(gè)與x長度相同的對象
for(inti=0;i<x.size();i++)ret_array=x*(-1);〃符號取反
returnret_array;//返回臨時(shí)對象
)
問題4.答:重載了取數(shù)組下標(biāo)的運(yùn)算符'口'
三,[理解問答題]
答:輸出結(jié)果為:
classCla_Base:Hello!
classCla_Sub:2000〃動態(tài)聯(lián)編和函數(shù)重載的結(jié)果應(yīng)訪問
Cla_Sub
DisplyinclassCla_Basewithoutparameter!
classCla_Sub:Hi!
DisplyinclassCla_Subwithoutparameter!
Thereare6objects//Sub1,Cla_Sub[5]共建6個(gè)對象
Thereare1objects//還有一個(gè)對象Sub1
(1)下列敘述中錯誤的是
A)二叉樹不是線性結(jié)構(gòu)
B)線性表是非線性結(jié)構(gòu)
C)線性鏈表是線性結(jié)構(gòu)
D)棧與隊(duì)列是線性結(jié)構(gòu)
(2)一棵二叉樹中所含最少的結(jié)點(diǎn)數(shù)是
A)0
B)1
C)2
D)3
(3)在最壞情況下,冒泡排序所需要的比較次數(shù)為
A)n/2
B)(n+1)/2
C)n(n-1)/2
D)n(n+1)/2
(4)數(shù)據(jù)結(jié)構(gòu)分為
A)表、隊(duì)列、堆棧和樹
B)邏輯結(jié)構(gòu)
C)存儲結(jié)構(gòu)
D)邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)
(5)在面向?qū)ο蠓椒ㄖ?,?shí)現(xiàn)信息隱蔽是通過對象的某一特性來實(shí)現(xiàn)的,這個(gè)特性是
A)封裝
B)類
C)對象
D)繼承
(1)在軟件生存周期中,能準(zhǔn)確地確定軟件系統(tǒng)必須做什么和必須具備哪些功能的階段是
A)概要設(shè)計(jì)
B)需求分析
C)可行性分析
D)詳細(xì)設(shè)計(jì)
(2)在數(shù)據(jù)流圖(DFD)中,帶有名字的箭頭表示
A)模塊之間的調(diào)用關(guān)系
B)程序的組成成份
C)數(shù)據(jù)的流向
D)控制程序的執(zhí)行順序
(3)下述關(guān)于數(shù)據(jù)庫系統(tǒng)的敘述中正確的是
A)數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的一致性是指數(shù)據(jù)類型一致
B)數(shù)據(jù)庫系統(tǒng)比文件系統(tǒng)能管理更多的數(shù)據(jù)
C)數(shù)據(jù)庫系統(tǒng)減少了數(shù)據(jù)冗余
D)數(shù)據(jù)庫系統(tǒng)避免了一切冗余
(4)下列關(guān)于關(guān)系運(yùn)算的敘述中正確的是
A)投影、選擇、連接是從二維表的行的方向來進(jìn)行運(yùn)算
B)投影、選擇、連接是從二維表的列的方向來進(jìn)行運(yùn)算
C)并、交、差是從二維表的列的方向來進(jìn)行運(yùn)算
D)以上三種說法都不對
(5)數(shù)據(jù)的獨(dú)立性是數(shù)據(jù)庫技術(shù)的重要特點(diǎn)之一。所謂數(shù)據(jù)獨(dú)立性是指
A)數(shù)據(jù)與程序獨(dú)立存放
B)不同的數(shù)據(jù)被存放在不同的文件中
C)不同的數(shù)據(jù)只能被對應(yīng)的應(yīng)用程序所使用
D)以上三種說法都不對
(1)以下關(guān)于友元函數(shù)的敘述不正確的是
A)友元函數(shù)提供了類之間數(shù)據(jù)共享的一個(gè)途徑
B)一個(gè)友元函數(shù)可以訪問任何類的任何成員
C)友元函數(shù)破壞了數(shù)據(jù)的封裝
D)友元函數(shù)增加了程序設(shè)計(jì)的靈活性
(2)設(shè)有語句
intn,m:
chara[5],b;
cin2>>n>>a>>m>>b;
為了分別將I。和20分別賦給n和m,look賦給a,t賦給b,則正確的輸入為
A)10,,look,,20,t'
B)10"look"10
C)10look20t
D)10look20t
(3)對于以卜帶參數(shù)的main。函數(shù)的第二形參,void
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 供熱公司收購合同范本
- 買方單方面違約合同范本
- 上海租賃牌照合同范本
- 2024年遵義市赤水市公益性崗位人員招聘考試真題
- Unit 1 A new start:Understanding ideas ① 教學(xué)設(shè)計(jì) -2024-2025學(xué)年外研版(2024年)英語七年級 上冊
- 出售大型廢船合同范本
- 臨時(shí)供電協(xié)議合同范本
- 2024年民主與科學(xué)雜志社招聘考試真題
- 勞務(wù)合同范本修灶臺
- 上海疫情物質(zhì)供貨合同范本
- 《人工智能導(dǎo)論》(第2版)高職全套教學(xué)課件
- 39 《出師表》對比閱讀-2024-2025中考語文文言文閱讀專項(xiàng)訓(xùn)練(含答案)
- 蛇膽川貝液在動物模型中的藥理作用研究
- GB/T 44260-2024虛擬電廠資源配置與評估技術(shù)規(guī)范
- 中國煤炭地質(zhì)總局公開招聘報(bào)名表
- AQ 1064-2008 煤礦用防爆柴油機(jī)無軌膠輪車安全使用規(guī)范(正式版)
- 電子商務(wù)數(shù)據(jù)分析基礎(chǔ)(第二版) 課件 模塊1、2 電子商務(wù)數(shù)據(jù)分析概述、基礎(chǔ)數(shù)據(jù)采集
- YB-T+4190-2018工程用機(jī)編鋼絲網(wǎng)及組合體
- 高大模板安全施工施工安全保證措施
- 比亞迪公司應(yīng)收賬款管理的問題及對策分析
- 【高考真題】2024年新課標(biāo)全國Ⅱ卷高考語文真題試卷(含答案)
評論
0/150
提交評論