面試題筆試題含答案_第1頁
面試題筆試題含答案_第2頁
面試題筆試題含答案_第3頁
面試題筆試題含答案_第4頁
面試題筆試題含答案_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、C 語言程序設(shè)計(jì)一、選擇題(1)C+語言是從早期的 C 語言逐漸發(fā)展演變而來的.與 C 語言相比,它在求解問題方法上進(jìn)行的最大改進(jìn)是()A)面向過程B)面象C)安全性D)復(fù)用性(2)C+語言的跳轉(zhuǎn)語句中,對(duì)于 break 和 continue 說法正確的是()A)break 語句只應(yīng)用與循環(huán)體中break 是無條件跳轉(zhuǎn)語句,continue 不是break 和 continue 的跳轉(zhuǎn)范圍不夠明確,容易產(chǎn)生問題(3)for(x=,y=o;!x&y=5;y+)語句執(zhí)行循環(huán)的次數(shù)是()A)B)C)D)無次數(shù) test((4)考慮函數(shù)原型 voida,b=7,char=*),下面的函數(shù)調(diào)用中,屬于不

2、合法調(diào)用的是()A)test(5);B)test(5,8);C)test(6,#)D)test(0,0.*);(5)下面有關(guān)重載函數(shù)的說法中正確的是()A)重載函數(shù)必須具有不同的返回值類型; B)重載函數(shù)形參個(gè)數(shù)必須不同;D)重載函數(shù)名可以不同;(6)下列關(guān)于構(gòu)造函數(shù)的描述中,錯(cuò)誤的是()構(gòu)造函數(shù)可以設(shè)置默認(rèn)參數(shù);構(gòu)造函數(shù)在定義類對(duì)象時(shí)自動(dòng)執(zhí)行 C)構(gòu)造函數(shù)可以是內(nèi)聯(lián)函數(shù);D)構(gòu)造函數(shù)不可以重載(7)下面描述中,表達(dá)錯(cuò)誤的是()A)公有繼承時(shí)基類中的 public 成員在派生類中仍是 public 的公有繼承時(shí)基類中的 protected 成員在派生類中仍是 protected 的私有繼承時(shí)基

3、類中的 public 成員在派生類中是 private 的(8)應(yīng)在下列程序劃線處填入的正確語句是()#includeclassBasepublic:voidfun()coutBase:funENDL;classDerived:publicBasevoidfun()/顯示調(diào)用基類的函數(shù) fun()coutDerived:funfun();(9)有如下程序:B)公有繼承是基類中的 private 成員在派生類中仍是 private 的C)重載函數(shù)必須有不同的形參列表B)continue 語句只應(yīng)用與循環(huán)體中includeclassBASEchar public:c;BASE(charn):c(n

4、)virtualBASE()coutC;classDERIVED:publicBASEchar public:c;DERIVED(charn):BASE(n+1),c(n)DERIVED()coutC;main() DERIVED(X);return0;執(zhí)行上面的程序?qū)⑤敵觯ǎ〢)XYB)YXC)XD)Y二、填空題(1)下面程序的打印結(jié)果是#incude1f();main()i; for(i=0;i5;i+) coutF(I)0;i- k += i;return k; 1251121( 2 ) 在用 class 定義一個(gè)類時(shí), 數(shù)據(jù)成員和成員函數(shù)的默認(rèn)權(quán)限是2private或私有(3)含有純虛

5、函數(shù)的類稱為 3抽象類DBL((4)已知nn)returnn+n;和longDBL(long n)return+n; 是 一 個(gè) 函 數(shù) 模 板 的 兩個(gè) 實(shí) 例 , 則 該 函 數(shù) 模 板 的定 義是4選擇題templateT DBL(T n)return n+n;對(duì)于全局函數(shù)A.& f( ); B.不是f(void) ,與其完全等價(jià)的函數(shù)原型為:f(void ) const; C. constf( ); D. A、B、C 都2. 類 A 中有唯一的非靜態(tài)成員函數(shù)f(A& one)和私有的數(shù)據(jù)成員x;,那么在此成員函數(shù)的函數(shù)體中可以有語句:A. return one.f(this); B.

6、x=f(this); C. this-f(x.one); D.=&one.x;*const3.A.B.下面關(guān)于 new 和 delete 操作符的說法,哪個(gè)是不正確的:使用 new 操作符,可以動(dòng)態(tài)分配全局堆中的內(nèi)存資源。若 p 的類型已由 A*強(qiáng)制轉(zhuǎn)換為 void *,那么執(zhí)行語句 delete p;時(shí),類 A的析構(gòu)函數(shù)不會(huì)被調(diào)用。C. 實(shí)現(xiàn)全局函數(shù)時(shí),new 和 delete 通常成對(duì)地出現(xiàn)在由一對(duì)匹配的花括號(hào)限定的語句塊中。4. 類 TM 和類 TN 是兩個(gè)獨(dú)立的類,那么類 TM 中哪種形式的數(shù)據(jù)成員一定是不允許的:A. TM* a; B. TN& a; C. TM a; D. TN a

7、;5. 類 B 是通過 public 繼承方式從類 A 派生而來的,且類 A 和類 B 都有完整的實(shí)現(xiàn)代碼,那么下列說法正確的是:A. 類 B 中具有 pubic 可函數(shù)的個(gè)數(shù)。性的成員函數(shù)個(gè)數(shù)一定不少于類 A 中 public 成員內(nèi)存空間。C. 只要類 B 中的構(gòu)造函數(shù)都是 public 的,在main 函數(shù)中就可以創(chuàng)建類 B 的實(shí)例對(duì)象。D.6.A.7.類 A 和類 B 中的同名虛函數(shù)的返回值類型必須完全一致。下列哪種函數(shù)可以是虛的:自定義的構(gòu)造函數(shù) B. 拷貝構(gòu)造函數(shù) C. 靜態(tài)成員函數(shù) D. 析構(gòu)函數(shù)類 A 有一個(gè)實(shí)例化的常量對(duì)象 a,那么下面的說法中不正確的是:B.C.D.8.通過

8、 a 可以直接調(diào)用類 A 的常量成員函數(shù)。a 不能直接作為表達(dá)式使用。a 可以是靜態(tài)常量對(duì)象。在不考慮強(qiáng)制類型轉(zhuǎn)換的情況下,關(guān)于類中常量成員函數(shù)的下列說法不正確的是:A.B.常量成員函數(shù)中不能修改本類中的非靜態(tài)數(shù)據(jù)成員。 常量成員函數(shù)中可以調(diào)用本類中的任何靜態(tài)成員函數(shù)。D.若常量成員函數(shù)中調(diào)用虛函數(shù) f,那么函數(shù) f 在本類中也一定是一個(gè)常量成員函數(shù)。9. 類 C 是以多重繼承的方式從類 A 和類 B 繼承而來的,類 A 和類 B 無公共的基類,那么:A. 類 C 的繼承方式只能采用 public 繼承。B. 可改用單繼承的方式實(shí)現(xiàn)類 CC. 常量成員函數(shù)的返回值只能是 void 或常量。A.

9、 類 A 中的非靜態(tài)數(shù)據(jù)成員一定都是常量成員。B. 一個(gè)類B 的實(shí)例對(duì)象占用的內(nèi)存空間一定不少于一個(gè)類 A 的實(shí)例對(duì)象占用的D. 執(zhí)行語句 A * p=new A100;時(shí),類 A 的構(gòu)造函數(shù)只會(huì)被調(diào)用 1 次。的同樣功能。C. 類 A 和類 B 至少有一個(gè)是抽象類。 D. 類 A 和類 B 至少有一個(gè)是虛基類。10. 下列哪種用法不能體現(xiàn)類 A 和類 B 之間的組合關(guān)系:A.B.C.類 A 中類 A 中類 A 中數(shù)據(jù)成員 B b;數(shù)據(jù)成員 B* b;數(shù)據(jù)成員 const B& b;二、(共 10 分,每題 2 分,多選、少選都不得分)多項(xiàng)選擇1. 下面關(guān)于指針變量和變量的說法正確的是:的地址

10、。D. 類中的數(shù)據(jù)成員可以是指針變量,但不能是變量。2. 類 A 中有唯一的一個(gè)公有成員函數(shù) f,對(duì)于類 A 的一個(gè)對(duì)象 a,執(zhí)行語句 a.f(100);成功,那么 f 的函數(shù)原型可以為:B.void f(&) const;3. 關(guān)于類中重載賦值運(yùn)算符的正確說法是:責(zé)基類中數(shù)據(jù)成員的賦值。C. 只有在類中含有指針數(shù)據(jù)成員或作。數(shù)據(jù)成員時(shí),才需要重載類的賦值操D.通過修改類A 的或定義,可以用戶在類 A 對(duì)象間進(jìn)行任何賦值操作。4.A.在類的靜態(tài)成員函數(shù)的實(shí)現(xiàn)體中,可以或調(diào)用:本類中的靜態(tài)數(shù)據(jù)成員 B. 本類中非靜態(tài)的常量數(shù)據(jù)成員D. 本類中非靜態(tài)的成員函數(shù)5.A.關(guān)于異常和 C+提供的異常處理

11、機(jī)制正確的說法是:若程序員預(yù)見到程序中的異常,則一定可以通過修改程序代碼來避免異常出現(xiàn)。B.使用 dynamic_cast 操作符可能會(huì)產(chǎn)生異常。C.異常可以用 catch 進(jìn)行捕獲處理。D.異常可以是對(duì)象,也可以是普通整數(shù)。三、(共 20 分,每題 2 分)判斷正誤,對(duì)于你認(rèn)為錯(cuò)誤的論述,說明原因或舉出反例。1. 函數(shù)體內(nèi)對(duì)的靜態(tài)變量,至多只會(huì)被初始化一次。2. 對(duì)于同一個(gè)類中的兩個(gè)非靜態(tài)成員函數(shù),它們的函數(shù)的名稱、參數(shù)類型、參數(shù)個(gè)數(shù)、參數(shù)順序以及返回值的類型不能完全相同。錯(cuò) 如可有兩個(gè)成員函數(shù),f();和f() const;3. inline 函數(shù)表示編譯器一定會(huì)將函數(shù)體直接可以加快程序的

12、運(yùn)行速度。到調(diào)用此函數(shù)的地方,這樣錯(cuò) 是否真正內(nèi)聯(lián),由編譯器決定。如函數(shù)是遞歸函數(shù),那么永遠(yuǎn)不會(huì)內(nèi)聯(lián)。C. 本類中其它的靜態(tài)成員函數(shù)A. 由編譯器提供的缺省賦值函數(shù)具有 public性并且執(zhí)行按位賦值。B. 在重載派生類的賦值操作時(shí),不但要實(shí)現(xiàn)派生類中數(shù)據(jù)成員的賦值,還要負(fù)C.const A * f(const);A. A& f(,=50);D. A f( const&) const;A. 指針變量存放的是內(nèi)存地址,并且可以置為 0。B. 定義變量時(shí),必須同時(shí)指明具體被的對(duì)象或變量。C. 使用取地址操作符,可以取得指針變量自身的地址,但取不到變量自身D. 類 A 中成員函數(shù) B func( B

13、& obj);4. 每個(gè) cpp 文件是單獨(dú)編譯的,但一個(gè)程序中多個(gè) cpp 文件的編譯順序是不固定的。對(duì)5. 將類 A 所有構(gòu)造函數(shù)的可能得到類 A 的實(shí)例對(duì)象。性都限制為私有的,那么在 main 函數(shù)中不可6. 名字空間是可以多層嵌套的;對(duì)于類 A 中的函數(shù)成員和數(shù)據(jù)成員,它們都屬于類名 A 代表的一層名字空間。對(duì)7. 若在類Base 和派生類Derived 中,分別一個(gè)同名的整型成員變量x; ,那么通過 Derived 類的實(shí)例對(duì)象,不可能輸出基類 Base 中的變量 x 的值。. 錯(cuò) 如可通過繼承自基類的成員函數(shù)基類中的 x8. 若類 A 是類 B 的友員類,且類 B 是類 C 的友員

14、類,那么類 A 也是類 C 的友員類。雖然抽象類的析構(gòu)函數(shù)可以是純虛函數(shù),但要實(shí)例化其派生類對(duì)象,仍必須提供抽象基類中析構(gòu)函數(shù)的函數(shù)體。對(duì)構(gòu)造函數(shù)的初始化列表中的內(nèi)容,不會(huì)影響構(gòu)造對(duì)象中成員數(shù)據(jù)的初始化順序。對(duì)六、(共 20 分)回答下列各題1. 說明類中的 public、 protected 和 private 成員函數(shù)分別在 public、protected 和 private 繼承方式下在派生類中的可性。(4 分)重點(diǎn)是基類中的任何 Private 在派生類中都是不可的。2. 若類 A 和類 B 沒有繼承關(guān)系,對(duì)于函數(shù) void func(A&) ,請(qǐng)至少用兩種不同方法說明如何才能傳遞一

15、個(gè)非常量的 B 類對(duì)象給 func 函數(shù)。(4 分)可在 A 類中定義一個(gè)構(gòu)造函數(shù):A(const B&);或在 B 類中定義一個(gè)自動(dòng)轉(zhuǎn)換函數(shù): operator A( ) const;4. 舉例說明重載(overload) 、重定義(redefine) 和重寫(override)的含義。(3 分)不同)體,為 redefine一個(gè)新的實(shí)現(xiàn)體,為 override.5. 通常類 A 的拷貝構(gòu)造函數(shù)的原型寫為 A(const A&);,請(qǐng)問為什么參數(shù)一定要使用形式?使用 const 修飾符除了可以防止修改傳遞給構(gòu)造函數(shù)的實(shí)參外,還作用?(3 分)需要在棧內(nèi)創(chuàng)建一個(gè) one 的副本,而這需要用拷貝

16、構(gòu)造函數(shù)。這樣就會(huì)形成遞歸調(diào)用。A(const A& one ).當(dāng)調(diào)用此拷貝構(gòu)造函數(shù)時(shí),需將參數(shù)壓棧,若不使用&,就如類A 中有虛函數(shù) virtualf(void);,A 的派生類B 中給virtualf(void)如類 A 中有函數(shù)f(void);,A 的派生類 B 中給f(void)一個(gè)新的實(shí)現(xiàn)如類 A 中有函數(shù)f(void);和f();為重載(overload) (同名,參數(shù)錯(cuò) 友員關(guān)系不具有傳遞性。錯(cuò) 可通過類的靜態(tài)成員函數(shù)創(chuàng)建實(shí)例。6. 程序員規(guī)范中要求不要寫出類似(+i)+(i+) 或 f(+i,i+)這樣的代碼,請(qǐng)說明原因。(3 分)下式固定的,算的順序可能不一致。七、(共 8

17、 分)閱讀下面部分程序代碼,完成 3 個(gè)問題。#include class A public: virtualA(v1)(v1) GetData( x;) const returnx;private:;class B:public A public: B( virtual private:;v1, GetData( y;v2):A(v1),y(v2) const returny;class C:public B public: C( virtual private:;v1, GetData( z;v2,v3):B(v1,v2),z(v3) const return z;const A& ret

18、urnmax2(const A& one,const A& two) (onetwo?one:two); void main() B b(1,2); C c(100,10,1);coutmax2(b,c).GetData( )endl; coutmax2(b,5).GetData( )(const A& one, const A& two)return one.GetData()two.GetData();2)若不改變函數(shù) max2 的函數(shù)體,只將函數(shù)A& two),請(qǐng)問這樣行嗎?為什么?改成A& max2(const A& one,const不行。 return (onetwo?one:tw

19、o); 時(shí),不能將常量賦給變量。3)若 main 中有語句 A* p=new C(1,2,3);和 delete p;,那么類 A、類 B 和類 C但參數(shù)表達(dá)式的計(jì)算順序也由編譯器決定的。不同的編譯器或不同的表達(dá)式計(jì)計(jì)算子表達(dá)式的順序由編譯器決定的,雖然參數(shù)的壓棧順序在給定的調(diào)用方式使用 const,還允許用一個(gè)常量對(duì)象作為樣本,來構(gòu)造一個(gè)新的對(duì)象。應(yīng)做何修改?選擇題1由 C+目標(biāo)文件連接而成的可執(zhí)行文件的缺省擴(kuò)展名為。AcppCobjD.lik2在下面的一維數(shù)組定義中,哪一個(gè)有語法錯(cuò)誤。A. a10=0 C.a5a =1,2,3B.a D.3在下面的函數(shù)中,存在著語法錯(cuò)誤的是。A.voidB

20、.voidBC(void BE(a ,BD(,),)C.=5)4. 假定 AB 為一個(gè)類,則該類的拷貝構(gòu)造函數(shù)的為。語句AAB&(ABx)B.AB(ABx)C AB(AB * x)AB(AB&)D.5對(duì)于結(jié)構(gòu)中定義的成員,其隱含權(quán)限為。ApublicB.protectedC icprivateD.s6當(dāng)使用 fstream 流類定義一個(gè)流對(duì)象并打開一個(gè)磁盤文件時(shí),文件的隱含打開方式為。ios:inA ios:outCB.ios:|ios:out二、填空題1執(zhí)行“cout43-18=43-18endl;”語句后得到的輸出結(jié)果為43-18=25。2已知AZ的 ASCII 碼為 6590,當(dāng)執(zhí)行“c

21、harch=14*5+2;coutchy 和 xb)是指向一個(gè)類動(dòng)態(tài)對(duì)象的指針變量,則執(zhí)行“delete;”語句時(shí),將自動(dòng)調(diào)用該類的析構(gòu)函數(shù)。11若需要把一個(gè)函數(shù)“void在類 AB 的定義中加入一條語句:F( );”定義為一個(gè)類 AB 的函數(shù),則應(yīng)friendvoidF( );。12若要在程序文件中進(jìn)行標(biāo)準(zhǔn)輸入輸出操作,則必須在開始的# include 命令中使用頭文件。在類中必須寫在類外。如果需要在被調(diào)函數(shù)運(yùn)行期間,改變主調(diào)函數(shù)中實(shí)參變量的值,則函數(shù)的形成員函數(shù)的原型,成員函數(shù)的實(shí)現(xiàn)部分可以參應(yīng)該是類型或指針類型。它的對(duì)象。3抽象類只能作為基類使用,而不能4進(jìn)行函數(shù)重載時(shí),被重載的同名函數(shù)

22、如果都沒有用 const 修飾,則它們的形參個(gè)數(shù)或類型必須不同。5通過一個(gè)常對(duì)象只能調(diào)用它的常成員函數(shù),不能調(diào)用其他成員函數(shù)。6函數(shù)的遞歸調(diào)用是指函數(shù)直接或間接地調(diào)用自身。7拷貝構(gòu)造函數(shù)的形參必須是三、下列程序運(yùn)行后的輸出結(jié)果1 # include void main()s=0;本類對(duì)象的for (i=1; i+) if (s50) break;if (i%2=0)s+=i;couti,s=i,sendl; i,s=15,562 # include void main()iostream.h 或 iomanip.ha+( i*N )*sizeof( a00 )或a+i*sizeof( ai )

23、 。char a=abcdabcabfgacd; i1=0,i2=0,i=0;while (ai) if (ai=a) i1+;if (ai=b) i2+; i+;cout i1 i2endl;433 # include void main()a9=2,4,6,8,10,12,14,16,18;for (i=0; i9; i+) cout setw(5)*(a+i);if (i+1)%3=0) coutendl;246810121416184 # include void LE(* a,* b) x=*a;*a=*b;*b=x;cout *a *bendl;void main()x=10,y=

24、25;LE(&x,&y); cout x yendl;25 1025 105 # include class A a,b;public :A() a=b=0; A(aa,bb) a=aa; b=bb;cout a bendl;void main()A x,y(2,3),z(4,5);2 34 56 # include template class FF TT a1,a2,a3;public :FF(TT b1,TT b2,TT b3) a1=b1; a2=b2; a3=b3;TT Sum() return a1+a2+a3; ;void main()FF x(2,3,4),y(5,7,9);c

25、out x.Sum() y.Sum()endl;1.分析下面程序的運(yùn)行結(jié)果#includeiostreamusing namespacestd;void myFunction();x=5,y=7;main() cout”x from main:”x”n”;cout”y from main:”y”n”;myFunction();cout”Back from myFunction!nn”;cout”x from main:”x”n”;cout”y from main:”y”n”;return0;9 21void myFunction()y=10;cout”x from myFunction:”x”

26、n”;cout”y from from myFunction:”y”n”;運(yùn)行時(shí)輸出的結(jié)果是x y x yfrom from from frommain:5 main:5 myFunction:5myFunction:10Back from myFunction! x from main:5y from main:72分析下面程序的運(yùn)行結(jié)果/Rectangle.hclass Popublic:void InitP(float xx=0, float yy=0) ;Y=yy;void Move(float xOff, float yOff) X+=xOff;Y+=yOff;float GetX(

27、) return X;float GetY() return Y;private:float X,Y;class Rectangle: public Popublic:void InitR(float x, float y, float w, float h)Init,y);W=w;H=h;float GetH() return H;float GetW() return W;private:float W,H;#include#include#include rectangle.husing namespatd;main()Rectangle rect;rect.InitR(2,3,20,1

28、0);rect.Move(3,2);coutThe data of rect(X,Y,W,H):endl;coutrect.GetX(),rect.GetY(),rect.GetW(),rect.GetH()endl; 運(yùn)行時(shí)輸出的結(jié)果是The data of rect(X,Y,W,H); 5,5,20,103.分析下面程序的運(yùn)行結(jié)果#include using namespatd;class B0public:void display()coutB0:display()endl;class B1: public B0public:void display()coutB1:display()endl;/;class D1: public B1public:void display()coutD1:display()display();main()B0 b0;B1 b1;D1 d1;B0 *p;p=&b0;fun(p);p=&b1;fun(p);p=&d1;fun(p); 運(yùn)行時(shí)輸出的結(jié)果是 B0:display B0:display B0:display4. 有如下程序:#include using namespaclass test private:a;public:td;test()coutconstructorn;test(a)coutaendl;c

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論