C語言程序設計-期末考試試題2_第1頁
C語言程序設計-期末考試試題2_第2頁
C語言程序設計-期末考試試題2_第3頁
C語言程序設計-期末考試試題2_第4頁
C語言程序設計-期末考試試題2_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C++語言程序設計期末考試一試題及答案姓名____________學號____________班號___________題號一二(1)二(2)三總分成績一、填空1.在類中必定聲明成員函數(shù)的原型,成員函數(shù)的實現(xiàn)部分能夠?qū)懺陬愅?2.若是需要在被調(diào)函數(shù)運行時期,改變主調(diào)函數(shù)中實參變量的值,則函數(shù)的形參應該是引用種類或指針種類。3.抽象類只能作為基類使用,而不能夠聲明它的對象。4.進行函數(shù)重載時,被重載的同名函數(shù)若是都沒適用const修飾,則它們的形參個數(shù)或種類必定不同樣。5.經(jīng)過一個常對象只能調(diào)用它的常成員函數(shù),不能夠調(diào)用其他成員函數(shù)。6.函數(shù)的遞歸調(diào)用是指函數(shù)直接或間接地調(diào)用自己。7.拷貝構(gòu)造函數(shù)的形參必定是本類對象的引用。二、閱讀以下程序,寫出其運行時的輸出結(jié)果若是程序運行時會出現(xiàn)錯誤,請簡要描述錯誤原因.1.請在以下兩題中任選一題,該題得分即為本小題得分。如兩題都答,則取兩題得分之平均值為本小題得分。(1)程序:#include〈iostream.h〉intn;#include〈string.h〉public:classBaseBase(chars[],intm=0):n(m){private:{strcpy(msg,s);charmsg[30];}protected:voidoutput(void)1{cout〈〈n〈<endl〈〈msg<〈endl;private:}intn;};public:classDerived1:publicBaseDerived2(intm=2):{Derived1(m—1)private:{n=m;}intn;voidoutput(void)public:{cout〈〈n<〈endl;Derived1(intm=1):Derived1::output();Base("Base",m-1)}{n=m;}};voidoutput(void)intmain(){cout<<n〈〈endl;{Base::output();BaseB(”BaseClass",1);}Derived2D;};B。output();classDerived2:publicDerived1D。output();{}運行結(jié)果:1BaseClass210Base(2)程序:#include〈iostream。h>intGetMuti(){returni*j;}classSampprotected:{public:inti;voidSetij(inta,intb){i=a,j=b;}intj;~Samp()};{cout〈<"Destroying.."<<i<<endl;}2intmain()p[j].Setij(j,j);{for(intk=0;k〈5;k++)Samp*p;cout〈〈"Muti["<<k〈<”]is:p=newSamp[5];"if(!p)〈<p[k].GetMuti()<<endl;{cout〈<”Allocationerror\n";delete[]p;return1;return0;}}for(intj=0;j〈5;j++)運行結(jié)果:Muti[0]is:0Muti[1]is:1Muti[2]is:4Muti[3]is:9Muti[4]is:16Destroying。.4Destroying.。3Destroying..2Destroying..1Destroying.。02.請在以下兩題中任選一題,該題得分即為本小題得分。如兩題都答,則取兩題得分之平均值為本小題得分。(1)程序:#include〈iostream。h>protected:#include<stdlib.h〉intsize;classVectorint*buffer;{};public:Vector(ints=100);Vector::Vector(ints)int&Elem(intndx);{voidDisplay(void);buffer=newint[size=s];voidSet(void);}~Vector(void);3{for(intj=0;j<size;j++)int&Vector::Elem(intndx)Elem(j)=j+1;{}if(ndx〈0||ndx>=size){Vector::~Vector(void)cout〈<"errorinindex"<<endl;{exit(1);delete[]buffer;}}returnbuffer[ndx];}intmain(){voidVector::Display(void)Vectora(10);{Vectorb(a);for(intj=0;j〈size;j++)a。Set();cout〈〈Elem(j)〈<endl;b。Display();}}voidVector::Set(void)運行結(jié)果:12345678910最后出現(xiàn)錯誤信息,原因是:聲明對象b是進行的是淺拷貝,b與a共用同一個buffer,程序結(jié)束前調(diào)用析構(gòu)函數(shù)時對同一內(nèi)存區(qū)進行了兩次釋放。4(2)程序:#include〈iostream.h〉CAT::~CAT()classCAT{{deleteitsAge;public:itsAge=NULL;CAT();}CAT(const&CAT);~CAT();intmain()intGetAge(){return*itsAge;}{voidSetAge(intage)CATa;{*itsAge=age;}cout〈<"a’sage:”<〈a。GetAge()〈<endl;protected:a.SetAge(6);int*itsAge;CATb(a);};cout〈〈"a’sage:"〈<a.GetAge()〈〈endl;cout<<”b'sage:"<〈b.GetAge()<〈endl;CAT::CAT()a。SetAge(7);{cout<<”a'sage:”〈〈a。GetAge()itsAge=newint;〈〈endl;*itsAge=5;cout〈<”b’sage:”<〈b.GetAge()〈〈endl;}}運行結(jié)果:a'sage:5a’sage:6b'sage:6a'sage:7b’sage:7最后出現(xiàn)錯誤信息,原因是:聲明對象b是進行的是淺拷貝,b與a共用同一個buffer,程序結(jié)束前調(diào)用析構(gòu)函數(shù)時對同一內(nèi)存區(qū)進行了兩次釋放。三、閱讀以下程序及說明和說明信息,在方框中填寫合適的程序段,使程序完成指定的功能5程序功能說明:從鍵盤讀入兩個分別按由小到大次序排列的整數(shù)序列,每個序列10個整數(shù),整數(shù)間以空白符分開。用這兩個序列分別構(gòu)造兩個單鏈表,每個鏈表有10個結(jié)點,結(jié)點的數(shù)據(jù)分別按由小到大次序排列.爾后將兩個鏈表合成為一個新的鏈表,新鏈表的結(jié)點數(shù)據(jù)依舊按由小到大次序排列.最后按次次輸出合并后新鏈表各結(jié)點的數(shù)據(jù)。程序運行結(jié)果以下,帶下劃線部分表示輸入內(nèi)容,其他是輸出內(nèi)容:#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ù)voidInsertAfter(Node<T〉*p);//在本節(jié)點此后插入一個同類節(jié)點pNode<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);-6-//生成新節(jié)點,數(shù)據(jù)域為item,指針域為ptrNextvoidFreeNode(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=(constLinkedList〈T>&L);//重載賦值運算符intListSize(void)const;//返回鏈表中元素個數(shù)(size)intListEmpty(void)const;//size為0時返回TRUE,否則返回FALSEvoidReset(intpos=0);//將指針currPtr搬動到序號為pos的節(jié)點,//prevPtr相應搬動,position記錄當前節(jié)點的序號voidNext(void);//使prevPtr和currPtr搬動到下一個節(jié)點intEndOfList(void)const;//currPtr等于NULL時返回TRUE,否則返回FALSEintCurrentPosition(void)const;//返回數(shù)據(jù)成員positionvoidInsertFront(constT&item);//在表頭插入一個數(shù)據(jù)域為item的節(jié)點voidInsertRear(constT&item);//在表尾增加一個數(shù)據(jù)域為item的節(jié)點voidInsertAt(constT&item);//在當前節(jié)點從前插入一個數(shù)據(jù)域為item的節(jié)點voidInsertAfter(constT&item);//在當前節(jié)點此后插入一個數(shù)據(jù)域為item的節(jié)點TDeleteFront(void);//刪除頭節(jié)點,釋放節(jié)點空間,更新prevPtr、currPtr和sizevoidDeleteAt(void);//刪除當前節(jié)點,釋放節(jié)點空間,更新prevPtr、currPtr和sizeT&Data(void);//返回對當前節(jié)點成員data的引用voidClearList(void);//清空鏈表:釋放所有節(jié)點的內(nèi)存空間。};類實現(xiàn)部分略。。。...template<classT〉voidMergeList(LinkedList<T〉*la,LinkedList〈T>*lb,LinkedList〈T〉*lc){//合并鏈表la和lb,構(gòu)成新鏈表lc。-7-函數(shù)結(jié)束后,程序的數(shù)據(jù)所占內(nèi)存空間總數(shù)不因此函數(shù)的運行而增加。while(!la—>ListEmpty()&&!lb->ListEmpty()){if(la->Data()〈=lb—>Data())lc—〉InsertRear(la—>Data());la->DeleteAt();}elselc-〉InsertRear(lb—〉Data());lb->DeleteAt();}}while(!la-〉ListEmpty()){lc-〉InsertRear(la—>Data());la—〉DeleteAt();}while(!lb—>ListEmpty()){lc—>InsertRear(lb-〉Data());lb-〉DeleteAt();}}intmain(){LinkedList<int〉la,lb,lc;intitem,i;讀如數(shù)據(jù)建立鏈表lafor(i=0;i〈10;i+

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論