C++筆試題目-帶答案_第1頁
C++筆試題目-帶答案_第2頁
C++筆試題目-帶答案_第3頁
C++筆試題目-帶答案_第4頁
C++筆試題目-帶答案_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、:時(shí)間:DCCBBAADAD一、選擇題(1*10=10)1 .如果派生類以proctected方式繼承基類,那么原基類的protected和public成員在派生類的訪問性分別是:DA.public和publicB.publicftprotected1 .protectedftpublicD.protectedftprotected解析:通過protected方式繼承基類后,原基類的私有成員不可訪問,而protected和public成員均變成protected成員。答案:D2 .有如下頭文件:intF1();staticintF2();classsCApublic:intF3();stati

2、cintF4();BF2在所描述的函數(shù)中,具有隱含this指針的是:CA.F1C.F3D.F4此題考察的是this指針。this指針式一個(gè)隱含的指針,它隱含于每個(gè)類的非靜態(tài)成員函數(shù)中,它明確地表示出了成員函數(shù)當(dāng)前操作的數(shù)據(jù)所屬的對(duì)象。當(dāng)對(duì)一個(gè)對(duì)象調(diào)用成員函數(shù)時(shí),編譯程序先將對(duì)象的地址賦值給this指針,然后調(diào)用成員函數(shù),每次成員函數(shù)存取數(shù)據(jù)成員時(shí),那么隱含使用this指針。this指針是指向?qū)ο蟊旧淼闹羔?,它只存在于類的非靜態(tài)成員中。fl,f2不是成員函數(shù),不存在隱含指針;f4為靜態(tài)成員函數(shù),也不含有this指針;含有this指針的函數(shù)在調(diào)用時(shí)按thiscall調(diào)用約定調(diào)用。故此題答案為Co3

3、 .派生類的成員函數(shù)不能訪問基類的:CA.共有成員和保護(hù)成員B.共有成員C.私有成員D.保護(hù)成員此題考察的是繼承的類型。類的繼承方式有公有繼承、保護(hù)繼承和私有繼承三種方式。對(duì)于公有繼承基類中的成員訪問屬性不變,對(duì)于保護(hù)和私有繼承基類中的成員轉(zhuǎn)換為相應(yīng)的訪問類型。但是如果基類成員的訪問屬性為private的,那么不能被繼承。故此題答案為Co4 .按照“后進(jìn)先出原那么組織數(shù)據(jù)的數(shù)據(jù)構(gòu)造是BA.隊(duì)列B.棧C.雙向鏈表D.二叉樹答案為Bo5 .以下關(guān)于虛函數(shù)的說明中,正確的選項(xiàng)是:A.從虛基類繼承的函數(shù)都是虛函數(shù)B,虛函數(shù)不得是靜態(tài)成員函數(shù)C.只能通過指針或者引用調(diào)用虛函數(shù)D.抽象類中的中的成員函數(shù)都

4、是虛函數(shù)。答案為Bo6. Value是個(gè)類,value是Value的一個(gè)對(duì)象。以下以非成員函數(shù)形式重載的運(yùn)算符函數(shù)原型中,正確的選項(xiàng)是:AA.Valueoperator+(Valuev,inti);C.Valueoperator+(Valuev,int=0);i=0);7.有如下類的定義:ClassMyClassintvalue;public:MyClass(intn):value(n)。intgetValue()constreturnvalue;那么類Myclass的構(gòu)造函數(shù)的個(gè)數(shù)是:A.1個(gè)C.3個(gè)B.Valueoperator+(Valuev=value,inti);D.Valueope

5、rator+(Valuev=value,intAB.2個(gè)D.4個(gè)還有默認(rèn)拷貝構(gòu)造函數(shù),應(yīng)該選B8 .有如下類的定義:classConstants(public:staticdoubleGetPI(void)return3.14159;);Constantsconstants;以下各組語句中,能輸出3.14159的是:bA. cout<<constants->GetPI();和cout<<Constants:GetPI();B. cout<<constants.GetPI()和cout<<Constants.GetPI();C. cout&l

6、t;<constants->GetPI();和cout<<Constants->GetPI();D. cout<<constants.GetPI()和cout<<Constants二GetPI();9 .有如下程序:#include<iostream>usingnamespacestd;classVACpublic:intf()constreturn3;intf()return5;);intmain()(VACv1;constVACv2;cout<<v1.f()<<v2.f();return0;)運(yùn)行時(shí)的

7、輸出結(jié)果是:AA.53B.35C55D3310 .有如下類聲明:classBase(protected:intamount;public:Base(intn=0):amount(n)intgetAmount()constreturnamount;classDerived:publicBase(protected:intvalue;public:Derived(intm,intn):value(m),Base(n)intgetData()constreturnvalue+amount;x是一個(gè)Derived對(duì)象,那么以下表達(dá)式中正確的選項(xiàng)是:BA.x.value+x.getAmount();B.

8、x.getData()+x.getAmount();C.x.getData()-x.amount;D.x.value+x.amount;二、填空題(8*2=16)40064444return*thisogspeakVoice1 .以下中a的值是400#defineAAA200#defineBBBAAA+100inta=BBB*22 .以下為WindowsNT下的32位C+程序,t#計(jì)算sizeof的值。charstr="Hello"char*p=str;intn=10;請計(jì)算sizeof(str)=5sizeof(p)=4sizeof(n)=4voidFunc(charst

9、r100)(/請計(jì)算sizeof(str)=4)void*p=malloc(100);/請計(jì)算sizeof(p)=43 .補(bǔ)充完整下面的類定義:classXCHchar*a;public:XCH(char*aa)/構(gòu)造函數(shù)a=newcharstrlen(aa)+1;strcpy(a,aa);)XCH&operator=(constXCH&x)/重載賦值函數(shù)deletea;a=newcharstrlen(x.a)+1;strcpy(a,x.a);-XCH()deletea;);return*this4 .請寫出下面程序的輸出結(jié)果#include<iostream>us

10、ingnamespacestd;classAnimalpublic:virtualchar*getType()constreturn"Animal"virtualchar*getVoice()constreturn"Voice"classDog:publicAnimalpublic:char*getType()constreturn"Dog"char*getVoice()constreturn"Woof"voidtype(Animal&a)cout<<a.getType();voidspeak(

11、Animala)cout<<a.getVoice();intmain()Dogd;type(d);cout<<"speak"speak(d);cout<<endl;return0;DogspeakVoice三、問答題(5*10+9+15=74)1.編寫類String的拷貝構(gòu)造函數(shù)和賦值函數(shù)(可以調(diào)用C+/C的字符串庫函數(shù))(15方類String的原型為:classStringpublic:String(constchar*str=NULL);/普通構(gòu)造函數(shù)String(constString&other);/拷貝構(gòu)造函數(shù)Strin

12、g(void);/析構(gòu)函數(shù)String&operate=(constString&other);/賦值函數(shù)private:char*m_data;/用于保存字符串;請編寫String的上述4個(gè)函數(shù)。/String的析構(gòu)函數(shù)String:String(void)/3分deletem_data;/由于m_data是部數(shù)據(jù)類型,也可以寫成deletem_data;/String的普通構(gòu)造函數(shù)String:String(constchar*str)/6分if(str=NULL)m_data=newchar1;/假設(shè)能加NULL判斷那么更好*m_data=0'elseintlen

13、gth=strlen(str);m_data=newcharlength+1;/假設(shè)能力口NULL判斷那么更好strcpy(m_data,str);/拷貝構(gòu)造函數(shù)String:String(constString&other)/3分intlength=strlen(other.m_data);m_data=newcharlength+1;/假設(shè)能力口NULL判斷那么更好strcpy(m_data,other.m_data);/賦值函數(shù)String&String:operate=(constString&other)/13分/4分/(1)檢查自賦值if(this=&

14、;other)return*this;/(2)釋放原有的存資源3分deletem_data;/3分配新的存資源,并復(fù)制容/3分intlength=strlen(other.m_data);m_data=newcharlength+1;/假設(shè)能力口NULL判斷那么更好strcpy(m_data,other.m_data);/4返回本對(duì)象的引用/3分return*this;2,不調(diào)用C+/C的字符串庫函數(shù),請編寫函數(shù)strcmp的實(shí)現(xiàn)(10)。intstrcmp(constchar*src,constchar*dst)char*strcpy(char*strDest,constchar*strSr

15、c)(char*address=strDest;while(*strDest+=*strSrc+)NULL;returnaddress;3 .F(n)=F(n-1)+F(n-2),F(0)=1,F(1)=1.分別用遞歸和循環(huán)求F(5)(10>publicintR(intnum)if(num<=0)num=1;elseif(num=1)num=1;elsenum=R(num-1)+R(num-2);returnnum;publicintc(intnum)inta=1;intb=1;intc=0;for(inti=0;i<num-2;i+)c=a+b;a=b;b=c;return

16、c;4 .寫一算法,對(duì)單鏈表實(shí)現(xiàn)就地逆置(不要構(gòu)造新結(jié)點(diǎn))(10卜node*reserve(node*head)(node*p1,*p2,*p3;if(head=NULL)|(head->next=NULL)returnhead;p1=head;p2=p1->next;while(p2!=NULL)p3=p2->next;p2->next=p1;p1=p2;p2=p3;head->next=NULL;p1=head;returnhead;5 .從冒泡排序、直接插入排序、二分插入排序和選擇排序四種排序算法中,選擇其中一種算法,寫出它的實(shí)現(xiàn)?(10)#include&

17、lt;stdio.h>#include<time.h>#include<math.h>#include<malloc.h>voidBubbleSort(int*L,intN)/冒泡inti,j;intt;for(i=1;i<=N;i+)for(j=N;j>i;j-)if(Lj<Lj-1)t=Lj;Lj=Lj-1;Lj-1=t;intSelectMinKey(int*L,intN,intn)(inti,min=n;for(i=n+1;i<=N;i+)if(Li<Lmin)min=i;returnmin;voidSelectS

18、ort(int*L,intN)/選擇inti,j;intt;for(i=1;i<N;i+)j=SelectMinKey(L,N,i);if(i!=j)t=Li;Li=Lj;Lj=t;)voidInsertSort(int*L,intN)插入inti,j;for(i=2;i<=N;i+)if(Li<Li-1)L0=Li;Li=Li-1;for(j=i-2;L0<Lj;j-)Lj+1=Lj;Lj+1=L0;)voidShellInsert(int*L,intN,intdk)/對(duì)順序表L作一趟希爾插入排序。本算法對(duì)算法10.1作了以下修改:/1.前后記錄位置的增量是dk,而不

19、是1;/2.r0只是暫存單元,不是哨兵。當(dāng)j<=0時(shí),插入位置已找到。inti,j;for(i=dk+1;i<=N;+i)if(Li<Li-dk)/需將L.ri插入有序增量子表L0=Li;/暫存在L.r0for(j=i-dk;(j>0&&L0<Lj);j-=dk)Lj+dk=Lj;/記錄后移,查找插入位置Lj+dk=L0;/插入/ShellInsertvoidShellSt(int*L,intN,intdlta口,intt)/算法10.5/按增量序列dlta0.t-1網(wǎng)順序表L作希爾排序。/一趟增量為dltak的插入排序for(intk=0;k&l

20、t;t;+k)ShellInsert(L,N,dltak);/ShellSortvoidShellSort(int*L,intN)/希爾intt=(int)log(N);intk,*dlta;dlta=(int*)malloc(t*4);/產(chǎn)生增量序列for(k=0;k<t;k+)dltak=(int)pow(2,t-k)-1;ShellSt(L,N,dlta,t);intmain()intN=250;inti,j,k;intt;intti16;int*L;srand(time(NULL);printf("長度t|冒泡t|選擇t|插入t|希爾n");printf(&q

21、uot;+");for(j=0;N<100000;j+)(L=(int*)malloc(N+1)*4);t=0;for(i=1;i<=N;i+)Li=rand();tit+=clock();BubbleSort(L,N);tit+=clock();for(i=1;i<=N;i+)Li=rand();tit+=clock();SelectSort(L,N);tit+=clock();for(i=1;i<=N;i+)Li=rand();tit+=clock();lnsertSort(L,N);tit+=clock();for(i=1;i<=N;i+)Li=r

22、and();tit+=clock();ShellSort(L,N);tit+=clock();printf("n%dt",N);for(k=0;k<4;k+)printf("|%dt",(ti2*k+1-ti2*k);N*=5;)printf("nn");)6 .一個(gè)類中,const類型成員函數(shù)的主要作用是什么?在該函數(shù)中可以調(diào)用該類的什么類型的成員變量和成員函數(shù)?該類的一個(gè)非const對(duì)象可以調(diào)用const成員函數(shù)嗎?(10)1可以定義const常量,具有不可變性。2便于進(jìn)展類型檢查,使編譯器對(duì)處理容有更多了解,消除了一些隱患。例如:voidf(constinti)編譯器就會(huì)知道i是一個(gè)常量,不允許修改;3可以防止意義模糊的數(shù)字出現(xiàn),同樣可以很方便地進(jìn)展參數(shù)的調(diào)整和修改。同宏定義一樣,可以做到不變那么已,一變都變!如1中,如果想修改M

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論