清華大學(xué)計算機(jī)系C++試題及答案_第1頁
清華大學(xué)計算機(jī)系C++試題及答案_第2頁
清華大學(xué)計算機(jī)系C++試題及答案_第3頁
清華大學(xué)計算機(jī)系C++試題及答案_第4頁
清華大學(xué)計算機(jī)系C++試題及答案_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、清華大學(xué)計算機(jī)系C+考試題及答案一、填空題.在C+中,函數(shù)的參數(shù)有兩種傳遞方式,它們是值傳遞和 地址或指針或引用傳遞o.當(dāng)一個成員函數(shù)被調(diào)用時,該成員函數(shù)的this指針 指向調(diào)用它的對象。.在基類和派生類中,派生類可以定義其基類中不具備的數(shù)據(jù)和操作。對兩個有相同名 字的數(shù)據(jù)成員進(jìn)行訪問時,如果沒有作用域分隔符限定時,對此數(shù)據(jù)成員的訪問將出現(xiàn)歧 義。.拷貝構(gòu)造函數(shù)使用引用作為參數(shù)初始化創(chuàng)建中的對象。.在公有繼承的情況下,基類數(shù)據(jù)成員在派生類中的訪問權(quán)限 保持不變。.描述命題“A小于B或小于C”的表達(dá)式為AB| |Ac&b=c的值是 0。(以下每小題2分,共20分).面向?qū)ο蟮某绦蛟O(shè)計有四大特征,

2、它們是抽象、封裝、繼承、多態(tài)。.在Visual C+ +中,定義重載函數(shù)時,應(yīng)至少使重載函數(shù)的參數(shù)個數(shù)或參數(shù)類型不 同;在基類和派生類中,成員函數(shù)的覆蓋是指 派生類成員函數(shù)與在基類被覆蓋的成員函數(shù) 名、參數(shù)個數(shù)、參數(shù)類型和返回值類型均相同。.構(gòu)造函數(shù)與析構(gòu)函數(shù)除功能不同外,在定義形式上,它們的區(qū)別還包括構(gòu)造函數(shù)名 與類名相同,而析構(gòu)函數(shù)名是在類名前加一個、析構(gòu)函數(shù)沒有參數(shù)、析構(gòu)函數(shù)可以定義 為虛函數(shù)。.動態(tài)聯(lián)編要滿足兩個條件,它們是被調(diào)用的成員函數(shù)是虛函數(shù)、用指針或引用調(diào) 用虛函數(shù)。.在C+類中,有一種不能定義對象的類,這樣的類只能被繼承,稱之為抽象類, 定義該類至少具有一個純虛函數(shù)。.在C+

3、類中,const關(guān)鍵字可以修飾對象和成員函數(shù),const對象不能 被修改, const成員函數(shù)不能修改類數(shù)據(jù)成員。.舉出C+ +中兩種用戶自定義的數(shù)據(jù)類型:類、枚舉。. C+ +中沒有字符串類型,字符串是通過字符數(shù)組來表示的,每一個字符串都有一 個結(jié)尾字符0。. C+ +中沒有輸入輸出語句,輸入輸出是通過輸入輸出庫實(shí)現(xiàn)的,寫出一條打印整 型變量n的輸出語句:coutn;.舉出C+ +中兩種代碼復(fù)用的方式:繼承、復(fù)用。.下面程序的運(yùn)行結(jié)果是3 o#include void main()char a=a,zb=,j,;float x;x=(b-a)/(F-A);printf(%dnz(int)(3

4、.14*x);.下面程序的運(yùn)行結(jié)果是2 5 8 11 14o#include iostream.hvoid main()int i = l;while (i = 15)i+;if (i%3!=2) continue;else cout i = iendl;.下面程序的運(yùn)行結(jié)果是 o#include iostream.hclass testprivate:int num;float fl;public:test();int getint( )return num;float getfloat( )return fl;test();;test:test()cout Initalizing defa

5、ult endl;num=0;fl=0.0;test:test()cout Desdtructor is active endl;void main()test array2;cout arrayl.getint( ) arrayl.getfloat( ) endl; Initalizing defaultInitalizing default0 0Desdtructor is activeDesdtructor is active.下面程序的運(yùn)行結(jié)果是 0#include class Apublic:A()coutA:A() called.n;?virtual A()coutA:A() ca

6、lled.n;?;class B:public Apublic:B(int i)coutB:B() called.n;buf=new charfi;virtual B()delete buf;coutB:B() called.n;private:char *buf;;void fun (A *a)delete a;void main()A *a=new B(15);fun(a);A: :A() called.called.called.A:A() called.下面程序的運(yùn)行結(jié)果是 o#include inta = 1Z3,5,7Z9;int *p =aza+lza+2za+3za+4;voi

7、d main()printf(%dt%dt%dn,a4,*(a+2)z*pl);pnntf(%dt%dt%dnz*(p+l)+a2z*(p+4)-*(p+0)z*(a+3)%a4);5 34 7二、問答題(每小題5分,共20分).若程序員沒有定義拷貝構(gòu)造函數(shù),則編譯器自動生成一個缺省的拷貝構(gòu)造函數(shù),它可 能會產(chǎn)生什么問題?解答要點(diǎn):當(dāng)對象含有指針數(shù)據(jù)成員,并用它初始化同類型的另一個對象時,缺省的拷貝構(gòu) 造函數(shù)只能將該對象的數(shù)據(jù)成員復(fù)制給另一個對象,而不能將該對象中指針?biāo)赶虻膬?nèi)存單 元也復(fù)制過去。這樣,就可能出現(xiàn)同一內(nèi)存單元釋放兩次,導(dǎo)致程序運(yùn)行出錯。.簡述成員函數(shù)、全局函數(shù)和友元函數(shù)的差別。

8、解答要點(diǎn):以下幾點(diǎn)必須說清楚:成員函數(shù)是在類內(nèi)部定義的,作用域在類的內(nèi)部,成員函數(shù)可以訪問類的數(shù)據(jù)成員(公 有、保護(hù)和私有數(shù)據(jù)成員),可以調(diào)用該類的其它成員函數(shù)(公有、保護(hù)和私有成員函數(shù)), 可以調(diào)用全局函數(shù)。如果友元函數(shù)是另一個類的公有成員函數(shù),則該類的成員函數(shù)也只能通 過那個類的對象調(diào)用,不能調(diào)用那個類的保護(hù)和私有成員函數(shù)。非本類成員函數(shù)(其它類成 員函數(shù)或全局函數(shù))可以通過該類的對象訪問該類的公有數(shù)據(jù)成員和調(diào)用該類的的公有成員 函數(shù)。不是在類中定義的成員函數(shù)都是全局函數(shù)。如果某一個函數(shù)(全局函數(shù)或類的成員函數(shù))定義為另一個類的友元函數(shù),需要在那個 類中用friend關(guān)鍵字聲明,友元函數(shù)并

9、不是類的成員,它的定義自然是在那個類的外面。.簡述結(jié)構(gòu)化的程序設(shè)計、面向?qū)ο蟮某绦蛟O(shè)計的基本思想。解答要點(diǎn):結(jié)構(gòu)化的程序設(shè)計將數(shù)據(jù)和對數(shù)據(jù)的操作分離,程序是由一個個的函數(shù)組成 的,面向?qū)ο蟮某绦蛟O(shè)計將數(shù)據(jù)和操作封裝在一起,程序是由一個個對象組成的,對象之間 通過接口進(jìn)行通信,它能夠較好地支持程序代碼的復(fù)用。.結(jié)構(gòu)struct和類class有什么異同?解答要點(diǎn):struct和class都可以定義類,但是缺省訪問權(quán)限說明時: struct的成員是 公有的,而class的成員是私有的。在C+中,struct可被class代替。三、找出下面程序(或程序段)中的語法錯誤,并予以糾正(每小題4分,共8分)

10、(1)程序功能是倒序輸出各給定的字符串。#include void main()cha r str 5 = Fi rst Seco nd z Th i rd z Fo rt h, Fifth;char *cp=str4zstr3,str2,strlzstr0;int i;while(i = 5)printf(%c ,*(cp+i);i+;char str5 -First”,“Second”,“Third,“ForthTFifth”);”應(yīng)為 char str510 = ”First”,“Second”,“Third”,“Forth”,“Fifth;” while(i = 5)應(yīng)為while(i

11、jprintf(%sz*(cp+i);int i;”應(yīng)為“int i=0;(2)程序功能是將各個平方根值放入數(shù)組中。#include void main()int max,a,i;scanf(%d%d,max,a);double xmax;for (i=O;imax;i+)xi=sqrt(a*i); 增加#include scanf(%d%dzmaxza);,scanf(,%d%d/&max,&a);double xmax;“改為:double *x=new doublemax; delete x;四、(8分)下列shape類是一個表示形狀的抽象類,area()為求圖形面積的函數(shù),total(

12、) 則是一個通用的用以求不同形狀的圖形面積總和的函數(shù)。請從shape類派生三角形類 (triangle)、矩形類(rectangle),并給出具體的求面積函數(shù)class shapepublic:virtual float area( )=0;);float total(shape *s ,int n) float sum=0.0;for(int i=0;iarea();return sum;class Triangle:public Shapepublic:Triangle(double hzdouble w)H = h;W=w;double Area() constreturn H*W*0.

13、5;private:double H,W;?;class Rectangle:public Shapepublic:Rectangle(double h,double w)H = h;W=w;double Area()constreturn H*W;private:double H,W;?;五、(6分)完成順序查找函數(shù)f_seq()。其過程是:從表頭開始,根據(jù)給定的模式,逐項 與表中元素比較。如果找到所需元素,則查找成功,并打印出它在表中的順序號。如果查找 整個表仍未找到所需對象,則查找失敗#include void f_seq(char *list,char *object,int len)/list指針數(shù)組,指向字符串/object模式串/len表的長度char *p;int strcmp(char *s,char *t);p=list;while () /

溫馨提示

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

評論

0/150

提交評論