




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
C++語言程序設計
期末考試試題及答案
姓名學號班號
—
題二(1)二(2)總
號
分
成
一、填空
1.在類中必須聲明成員函數(shù)的原型,成員函數(shù)
的實現(xiàn)部分可以寫在類外。
2.如果需要在被調(diào)函數(shù)運行期間,改變主調(diào)函數(shù)中實
參變量的值,則函數(shù)的形參應該是引用類型
或指針類型。
3.抽象類只能作為基類使用,而不能聲明它
的對象。
4.進行函數(shù)重載時,被重載的同名函數(shù)如果都沒有用
const修飾,則它們的形參個數(shù)或類型必
須不同。
5.通過一個」對象只能調(diào)用它的常成員函數(shù),不
能調(diào)用其他成員函數(shù)。
6.函數(shù)的遞歸調(diào)用是指函數(shù)直接或間接地調(diào)用
自身。
7.拷貝構(gòu)造函數(shù)的形參必須是本類對象的引
用O
二、閱讀下列程序,寫出其運行時的輸出結(jié)果
如果程序運行時會出現(xiàn)錯誤,請簡要描述錯誤原
因。
1.請在以下兩題中任選一題,該題得分即為本小題得
分。如兩題都答則取兩題得分之平均值為本小題得分。
(1)程序:
#includeclassBase
<iostream.h>{private:
#include<string.h>charmsg[30];
protected:public:
intn;Derivedl(intm=1):
public:Base(HB
Base(charase",m-1)
s[],intm=0):n(m){n=m;}
voidoutput(void)
{strcpy(msg,s);{cout?n?endl;
)Base::output();
voidoutput(void))
);
{cout?n?endl<<classDerived2:public
msg?endl;Derivedl
)(
);private:
classDerivedl:publicintn;
Basepublic:
(Derived2(intm=2):
private:Derived
intn;
{n=m;}
voidoutput(void)BaseB("Base
{cout?n?endl;Class",1);
Derived2D;
Derived1::output();B.output();
)D.output();
);)
intmain()
運行結(jié)果:
1
BaseClass
2
1
0
Base
(2)程序:
#include<iostream.h>{public:
classSampvoidSetij(inta,int
b){i=a,j=b;}p=newSamp[5];
~Samp()if(!p)
({cout?"Allocation
cout?"Destroying.."<error\n";
<i?endl;return1;
))
intGetMuti(){returnfor(intj=0;j<5;j++)
巧;}pOl.SetijO.j);
protected:for(intk=0;k<5;k++)
inti;
intj;cout?"Muti["?k<<"]
);is:"
?p[k].Get
Muti()?endl;
intmain()delete[]p;
(return0;
Samp*p;)
運行結(jié)果:
Muti[0]is:O
Muti[1]is:1
Muti[2]is:4
Muti[3]is:9
Muti[4]is:16
Destroying..4
Destroying..3
Destroying..2
Destroying..1
Destroying..0
2.請在以下兩題中任選一題,該題得分即為本小題得
分。如兩題都答,則取兩題得分之平均值為本小題得分。
(1)程序:
#includeVector(int
<iostream.h>s=100);
include<stdlib.h>int&Elem(int
classVectorndx);
(void
public:Display(void);
voidSet(void);)
-Vector(void);(
protected:cout?"errorin
intsize;indexn?endl;
int*buffer;exit⑴;
);)
returnbuffer[ndx];
Vector::Vector(ints))
(
buffer=newvoid
int[size=s];Vector::Display(void)
)(
for(intj=0;j<size;
j++)
int&Vector::Elem(intcout?Elem(j)?en
ndx)dl;
()
if(ndx<O||ndx>=size
voidVector::Set(void))
(
for(intj=0;j<size;intmain()
j++)(
Elem(j)=j+1;Vectora(10);
)Vectorb(a);
a.Set();
Vector::-Vector(void)b.Display();
(
delete[]buffer;)
運行結(jié)果:
1
2
3
4
5
6
7
8
9
10
最后出現(xiàn)錯誤信息,原因是:聲明對象b是進行的
是淺拷貝,b與a共用同一個buffer,程序結(jié)束前
調(diào)用析構(gòu)函數(shù)時對同一內(nèi)存區(qū)進行了兩次釋放。
(2)程序:
#include<iostream.h>age)
classCAT{*itsAge=age;}
(protected:
public:int*itsAge;
CAT(););
CAT(const&CAT);
?CAT();CAT::CAT()
intGetAge(){return(
*itsAge;}itsAge=newint;
voidSetAge(int*itsAge=5;
)CATb(a);
cout?"a's
CAT::?CAT()age:"?a.GetAge()?end
(I;
deleteitsAge;cout?"b's
itsAge=NULL;age:"?b.GetAge()?end
)I;
a.SetAge(7);
intmain()cout?na's
(age:"?a.GetAge()?end
CATa;I;
cout?"a'scout?nb's
age:"?a.GetAge()?endage:"?b.GetAge()?end
I;I;
a.SetAge(6);)
運行結(jié)果:
a'sage:5
a'sage:6
b'sage:6
a'sage:7
b'sage:7
最后出現(xiàn)錯誤信息,原因是:聲明對象b是進行的
是淺拷貝,b與a共用同一個buffer,程序結(jié)束前
調(diào)用析構(gòu)函數(shù)時對同一內(nèi)存區(qū)進行了兩次釋放。
三、閱讀下列程序及說明和注釋信息,在方框中填寫適
當?shù)某绦蚨?,使程序完成指定的功?/p>
程序功能說明:從鍵盤讀入兩個分別按由小到大次
序排列的整數(shù)序列,每個序列10個整數(shù),整數(shù)間以空
白符分隔。用這兩個序列分別構(gòu)造兩個單鏈表,每個鏈
表有10個結(jié)點,結(jié)點的數(shù)據(jù)分別按由小到大次序排列。
然后將兩個鏈表合成為一個新的鏈表,新鏈表的結(jié)點數(shù)
據(jù)仍然按由小到大次序排列。最后按次序輸出合并后新
鏈表各結(jié)點的數(shù)據(jù)。
程序運行結(jié)果如下,帶下劃線部分表示輸入內(nèi)容,
其余是輸出內(nèi)容:
135791113151719
2468101214161820
1234567891011121314151617181920
include<iostream.h>
#include<stdlib.h>
//類定義部分
template<classT>
classNode
(
private:
Node<T>*next;〃指向后繼節(jié)點的指針
public:
Tdata;〃數(shù)據(jù)域
Node(constT&item,Node<T>*ptrnext
=NULL);//構(gòu)造函數(shù)
voidlnsertAfter(Node<T>*p);〃在本節(jié)點
之后插入一個同類節(jié)點p
Node<T>*DeleteAfter(void);〃刪除本節(jié)
點的后繼節(jié)點,返回其地址
Node<T>*NextNode(void)const;//獲取
后繼節(jié)點的地址
);
template<classT>
classLinkedList
(
private:
Node<T>*front,*rear;//表頭和表尾指針
Node<T>*prevPtr,*currPtr;〃記錄表當前
遍歷位置的指針,由插入和刪除操作更新
intsize;//表中的元素個數(shù)
intposition;//當前元素在表中的位置序號。
由函數(shù)Reset使用
Node<T>*GetNode(constT&
item,Node<T>*ptrNext=NULL);
//
生成新節(jié)點,數(shù)據(jù)域為item,指針域為ptrNext
voidFreeNode(Node<T>*p);//釋放節(jié)點
voidCopyList(constLinkedList<T>&L);//
將鏈表L拷貝到當前表
//(假設
當前表為空)。被拷貝構(gòu)造函數(shù)、operator二調(diào)用
public:
LinkedList(void);//構(gòu)造函數(shù)
LinkedList(constLinkedList<T>&L);〃拷
貝構(gòu)造函數(shù)
-LinkedList(void);//析構(gòu)函數(shù)
LinkedList<T>&operator=(const
LinkedList<T>&L);〃重載賦值運算符
intListSize(void)const;〃返回鏈表中元
素個數(shù)(size)
intListEmpty(void)const;//size為0時返
回TRUE,否則返回FALSE
voidReset(intpos=0);〃將指針currPtr移
動到序號為pos的節(jié)點,
〃prevPtr"相
應移動,pos用on記錄當前節(jié)點的序號
voidNext(void);〃使prevPtr和currPtr移
動到下一個節(jié)點
intEndOfList(void)const;//currPtr等于
NULL時返回TRUE,否則返回FALSE
intCurrentPosition(void)const;〃返回數(shù)
據(jù)成員position
voidlnsertFront(constT&item);〃在表頭
插入一個數(shù)據(jù)域為item的節(jié)點
voidlnsertRear(constT&item);〃在表尾
添加一個數(shù)據(jù)域為item的節(jié)點
voidlnsertAt(constT&item);〃在當前節(jié)
點之前插入一個數(shù)據(jù)域為item的節(jié)點
voidlnsertAfter(constT&item);〃在當前
節(jié)點之后插入一個數(shù)據(jù)域為item的節(jié)點
TDeleteFront(void);//刪除頭節(jié)點,釋放節(jié)
點空間,更新prevPtr、currPtr和size
voidDeleteAt(void);//刪除當前節(jié)點,釋放節(jié)
點空間,更新prevPtr、currPtr和size
T&Data(void);//返回對當前節(jié)點成員data
的引用
voidClearList(void);//清空鏈表:釋放所有
節(jié)點的內(nèi)存空間。
);
〃類實現(xiàn)部分略……
template<classT>
voidMergeList(LinkedList<T>*la,LinkedList<T>*
lb,LinkedList<T>*Ic)
(
〃合并鏈表la和lb,構(gòu)成新鏈表lco
//函數(shù)結(jié)束后,程序的數(shù)據(jù)所占內(nèi)存空間總數(shù)不因
此函數(shù)的運行而增加。
while(!la->ListEmpty()&&!lb->ListEmpty())
(
if(la->Data()
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年監(jiān)理工程師建設工程合同管理考核卷
- 19《智能導航》六年級信息技術(shù)教學設計 蘇科版
- 期中卷【期中測試·真題卷】-2023-2024學年八年級地理上冊單元速記·巧練(北京·中圖版)(解析版)
- 2025簽訂汽車租賃合同關鍵注意事項
- 2025年簽訂合同應注意的風險與合規(guī)事項
- 2025年停車場廣告投放合同參考范本
- 2025裝飾工程合同
- 節(jié)能減排技術(shù)創(chuàng)新應用方案
- 產(chǎn)品序列號編制使用規(guī)定
- 2025年短期公寓租賃合作合同
- 2024年4月貴州省自考00995商法(二)試題及答案含評分參考
- 高等工程數(shù)學Ⅲ智慧樹知到期末考試答案章節(jié)答案2024年南京理工大學
- 2024年美國商用車和乘用車市場現(xiàn)狀及上下游分析報告
- 2024醫(yī)療設備器械試用協(xié)議書
- DB32T3748-2020 35kV及以下客戶端變電所建設標準
- 中國近代三種建國方案
- 數(shù)學奧秘揭秘-揭開數(shù)學背后的奧秘
- 溫度傳感器Pt100-阻值-溫度對照表(方便實用)
- 《幽門螺桿菌檢測》課件
- 《云南土壤類型》課件
- 小兒肝臟間葉錯構(gòu)瘤課件
評論
0/150
提交評論