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

下載本文檔

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

文檔簡(jiǎn)介

1、姓名 : 進(jìn)度:DCCBB AADAD一、選擇題 (1*10=10)1 .如果派生類以proctected方式繼承基類,則原基類的 protected和public成員在派生類的訪問性 分別是: D.A. public 和 publicB. public 和 protectedC. protected和 publicD. protected和 protected解析:通過protected方式繼承基類后,原基類的私有成員不可訪問,而protected和 public成員均變成protected成員。.答案: D2. 有如下頭文件:int F1();static int F2();classs

2、CApublic:int F3();static int F4();在所描述的函數(shù)中,具有隱含 this 指針的是: CA . F1B. F2C. 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指針

3、。含有this指針的函數(shù)在調(diào)用時(shí)按thiscall調(diào)用 約定調(diào)用。 . 故本題答案為 C。3. 派生類的成員函數(shù)不能訪問基類的:CA .共有成員和保護(hù)成員B.共有成員C.私有成員D.保護(hù)成員本題考查的是繼承的類型。類的繼承方式有公有繼承、保護(hù)繼承和私有繼承三種方式。對(duì)于公有繼承基類中的成員訪問屬性不變,對(duì)于保護(hù)和私有繼承基類中 的成員轉(zhuǎn)換為相應(yīng)的訪問類型。但是如果基類成員的訪問屬性為 private 的,則不能被繼承。 .故本題答案為 C。4. 按照“后進(jìn)先出”原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是 BA .隊(duì)列B.棧C.雙向鏈表 答案為 B。5. 下列關(guān)于虛函數(shù)的說明中,正確的是: A .從虛基類繼承的函

4、數(shù)都是虛函數(shù) C.只能通過指針或者引用調(diào)用虛函數(shù) 答案為 B。D.二叉樹BB. 虛函數(shù)不得是靜態(tài)成員函數(shù)D.抽象類中的中的成員函數(shù)都是虛函數(shù)6. 已知Value是個(gè)類,value是Value的一個(gè)對(duì)象。下列以非成員函數(shù)形式重載的運(yùn)算符函數(shù)原型 中,正確的是:AA . Value operator+(Value v, int i);B. Value operator+(Value v=value, int i);.C. Value operator+(Value v, int=0);D. Value operator+(Value v=value, int i=0);.7. 有如下類的定義:Cl

5、ass MyClassint value;public:MyClass(int n):value(n)int getValue() const return value;則類Myclass的構(gòu)造函數(shù)的個(gè)數(shù)是:AA . 1個(gè)B . 2個(gè)C . 3個(gè)D . 4個(gè)還有默認(rèn)拷貝構(gòu)造函數(shù),應(yīng)該選B8. 有如下類的定義:class Con sta ntspublic:static double GetPI(void)return 3.14159;Con sta nts con sta nts;下列各組語(yǔ)句中,能輸出3.14159的是:bA . cout«constants->GetPI()

6、和 cout<<Constants:GetPI();B . cout«constants.GetPI()和 cout«Constants.GetPI();.C . cout«constants->GetPI()和 cout<<Constants->GetPI();D . cout«constants.GetPI()和 cout<<Constants:GetPI();9. 有如下程序:#in clude <iostream>using n amespace std;class VACpublic:

7、int f() con stretur n 3;int f()return 5;int mai n()VAC v1;con st VAC v2;cout<<v1.f()vvv2.f();return 0;運(yùn)行時(shí)的輸出結(jié)果是:AA. 53B. 35C. 55D . 3310有如下類聲明:class Baseprotected:int amount;public:Base(i nt n = 0):am oun t( n)int getAm oun t() const retur n amoun t;class Derived:public Baseprotected:int value

8、;public:Derived(i nt m, i nt n):value(m),Base( n)int getData() const return value + amoun t;已知x是一個(gè)Derived對(duì)象,則下列表達(dá)式中正確的是:BA . x.value + x.getAmount();B. x.getData() + x.getAmount();.C. x.getData() -x.amount;D. x.value + x.amount;二、填空題(8*2=16)400_6 4 4 4 4 return *this Dog speak Voice1. 下列中a的值是400#def

9、ine AAA 200#defi ne BBB AAA+100int a= BBB*22. 以下為 Windows NT下的32位C+程序,請(qǐng)計(jì)算 sizeof的值。char str = Hello ”;char *p = str ;int n = 10;請(qǐng)計(jì)算sizeof (str ) = 5sizeof ( p ) =4sizeof ( n ) =4void Func ( char str100)/請(qǐng)計(jì)算sizeof( str ) =4void *p = malloc( 100 );/請(qǐng)計(jì)算sizeof ( p ) =43. 補(bǔ)充完整下面的類定義:class XCHchar* a;publ

10、ic:XCH(char* aa) / 構(gòu)造函數(shù)a=new charstrlen(aa)+1; strcpy(a,aa);XCH& operator=(const XCH& x) / 重載賦值函數(shù) delete a;a=new charstrlen(x.a)+1;strcpy(a,x.a);XCH()delete a;return *this 4. 請(qǐng)寫出下面程序的輸出結(jié)果 #include<iostream> using namespace std;class Animal public:virtual char* getType() const return &q

11、uot;Animal" virtual char* getVoice() const return "Voice" ;class Dog:public Animal public:char* getType() const return "Dog" char* getVoice() const return "Woof"void type(Animal& a) cout<<a.getType();void speak(Animal a) cout<<a.getVoice();int main(

12、)Dog d;type(d);cout<<" speak "speak(d);cout<<endl; return 0; Dog speak Voice 三、問答題 (5*10+9+15=74)1.編寫類String的拷貝構(gòu)造函數(shù)和賦值函數(shù)(可以調(diào)用C+/C的字符串庫(kù)函數(shù))(15)已知類 String 的原型為:class Stringpublic:String(const char *str = NULL); / 普通構(gòu)造函數(shù)String(const String &other); / 拷貝構(gòu)造函數(shù)CTGS-資料文件 String(void

13、); / 析構(gòu)函數(shù)String & operate =(const String &other); / 賦值函數(shù) private:char *m_data; / 用于保存字符串;請(qǐng)編寫 String 的上述 4 個(gè)函數(shù)。/ String 的析構(gòu)函數(shù)String:String(void) / 3 分 delete m_data;/ 由于 m_data 是內(nèi)部數(shù)據(jù)類型,也可以寫成 delete m_data; / String 的普通構(gòu)造函數(shù)String:String(const char *str) / 6 分 if(str=NULL) m_data = new char1; /

14、 若能加 NULL 判斷則更好 *m_data = 0 'else int length = strlen(str);m_data = new charlength+1; / 若能加 NULL 判斷則更好 strcpy(m_data, str);/ 拷貝構(gòu)造函數(shù)String:String(const String &other) / 3 分int length = strlen(other.m_data);m_data = new charlength+1; / 若能加 NULL 判斷則更好 strcpy(m_data, other.m_data);/ 賦值函數(shù)String &

15、amp; String:operate =(const String &other) / 13 分 ./ (1) 檢查自賦值/ 4 分if(this = &other)return *this;/ (2) 釋放原有的內(nèi)存資源/ 3分delete m_data;/ (3)分配新的內(nèi)存資源,并復(fù)制內(nèi)容/ 3 分int length = strlen(other.m_data);m_data = new charlength+1; / 若能加 NULL 判斷則更好 strcpy(m_data, other.m_data);/ (4)返回本對(duì)象的引用/ 3 分return *this;

16、2. 不調(diào)用C+/C的字符串庫(kù)函數(shù),請(qǐng)編寫函數(shù) strcmp的實(shí)現(xiàn)(10)。 int strcmp ( const char * src,const char * dst )char *strcpy(char *strDest, const char *strSrc)char *address = strDest;while (*strDest+ = * strSrc+)NULL ;return address ;3. F(n)=F(n-1)+F(n-2),F(0)=1,F(1)=1. 分別用遞歸和循環(huán)求 F(5)(10) public int R(int num)if(num<=0)n

17、um=1;else if(num=1) num=1;else num=R(num-1)+R(num-2); return num;public int c(int num) int a = 1; int b = 1; int c = 0; for (int i = 0; i < num- 2; i+) c = a + b; a = b; b = c;return 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)

18、return head;p1=head; p2=p1->next;while(p2!=NULL) p3=p2->next; p2->next=p1;p1=p2;p2=p3;head->next=NULL;p1=head;return head;5 從冒泡排序、直接插入排序、二分插入排序和選擇排序四種排序算法中,選擇其中一種算法, 寫出它的實(shí)現(xiàn)? (10) .#include<stdio.h>#include<time.h>#include<math.h>#include<malloc.h>void BubbleSort(i

19、nt *L,int N) / 冒泡int i,j;int t;for(i=1;i<=N;i+)for(j=N;j>i;j-)if(Lj<Lj-1)t=Lj;Lj=Lj-1;Lj-1=t;int SelectMinKey(int *L,int N,int n)int i,min=n;for(i=n+1;i<=N;i+)if(Li<Lmin)min=i;return min;void SelectSort(int *L,int N) / 選擇int i,j;int t;for(i=1;i<N;i+)j=SelectMinKey(L,N,i);if(i!=j)t=

20、Li;Li=Lj;Lj=t;void InsertSort(int *L,int N) / 插入int i,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;void ShellInsert(int *L,int N, int dk) / 對(duì)順序表 L 作一趟希爾插入排序。本算法對(duì)算法 10.1 作了以下修改: / 1. 前后記錄位置的增量是 dk ,而不是 1。/ 2. r0 只是暫存單元,不是哨兵。當(dāng) j<=0 時(shí),插入位置已找到。int i,j;for(i=d

21、k+1;i<=N;+i)if(Li<Li-dk)暫存在 L.r0記錄后移,查找插入位置 插入 / 需將 L.ri 插入有序增量子表 L0=Li;/for(j=i-dk;(j>0&&L0<Lj);j-=dk) Lj+dk=Lj;/Lj+dk=L0; / / ShellInsert void ShellSt(int *L,int N, int dlta, int t) / 算法 10.5/ 按增量序列 dlta0.t-1對(duì)順序表 L 作希爾排序。for(int k=0;k<t;+k) ShellInsert(L,N, dltak); / / Shell

22、Sortvoid ShellSort(int *L,int N) / 希爾一趟增量為 dltak 的插入排序int t=(int)log(N);產(chǎn)生增量序列int k,*dlta;dlta=(int*)malloc(t*4); / for(k=0;k<t;k+) dltak=(int)pow(2,t-k)-1;ShellSt(L,N,dlta,t);int main()int N=250;int i,j,k;int t;int ti16;int *L;srand(time(NULL);printf("長(zhǎng)度t|冒泡t|選擇t|插入t|希爾n");printf("

23、;+");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();InsertSort(L,N);tit+=clock();for(i=1;i<=N;i+)Li=rand

24、();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ì)處理內(nèi)容有更多了解,消除了一些隱患。例如:void f(const int i)編譯器就會(huì)知道 i是一個(gè)常量,不允許修改。 .( 3)可以避免意義模糊的數(shù)字出現(xiàn),同樣可以很方便地進(jìn)行參數(shù)的調(diào)整和修改。同宏定義一樣,可以做到不變則已,一變都變!如(1 )中,如果想修改 Max的內(nèi)容,只需要: const int Max=you

溫馨提示

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

評(píng)論

0/150

提交評(píng)論