國(guó)家二級(jí)(C++)筆試模擬試卷3_第1頁
國(guó)家二級(jí)(C++)筆試模擬試卷3_第2頁
國(guó)家二級(jí)(C++)筆試模擬試卷3_第3頁
國(guó)家二級(jí)(C++)筆試模擬試卷3_第4頁
國(guó)家二級(jí)(C++)筆試模擬試卷3_第5頁
已閱讀5頁,還剩85頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

眼家二級(jí)(C++)筆試模擬試卷第1套

一、公共基礎(chǔ)選擇題(本題共33題,每題7.0分,共

33分。)

1、實(shí)現(xiàn)算法所需要的存儲(chǔ)單元的多少稱為()。

A、空間復(fù)雜度

B、可實(shí)現(xiàn)性

C、時(shí)間復(fù)雜度

D、困難度

標(biāo)準(zhǔn)答案:B

知識(shí)點(diǎn)解析:算法的空間復(fù)雜度一般是指:執(zhí)行這個(gè)算法所需要的存儲(chǔ)空間,其中

包括算法程序所占的空間、輸入的初始數(shù)據(jù)所占用的存儲(chǔ)空間以及算法執(zhí)行過程中

所需要的額外空間。

2、下列關(guān)于線性鏈表的描述中正確的是()

A、存儲(chǔ)空間不一定連續(xù),且各元素的存儲(chǔ)順序是任意的

B、存儲(chǔ)空間不一定連續(xù),旦前件元素一定存儲(chǔ)在后件元素的前面

C、存儲(chǔ)空間必須連續(xù),且各前件元素一定存儲(chǔ)在后件元素的前面

D、存儲(chǔ)空間必須連續(xù),且各元素的存儲(chǔ)順序是任意的

標(biāo)準(zhǔn)答案:A

知識(shí)點(diǎn)解析:暫無解析

3、以下關(guān)于棧的描述中錯(cuò)誤的是()。

A、棧是先進(jìn)后出的線性表

B、棧只能順序存儲(chǔ)

C、棧具有記憶作用

D、對(duì)棧的插入與刪除操作中,不需要改變棧底指針

標(biāo)準(zhǔn)答案:B

知識(shí)點(diǎn)解析:暫無解析

4、下面數(shù)據(jù)結(jié)構(gòu)中,屬于非線性的是()

A、線性表

B、隊(duì)列

C、樹

D、棧

標(biāo)準(zhǔn)答案:C

知識(shí)點(diǎn)解析:暫無解析

5、下列數(shù)據(jù)結(jié)構(gòu)中,能月二分法進(jìn)行查找的是()。

A、順序存儲(chǔ)的有序線性表

B、線性鏈表

C、二又鏈表

D、有序線性鏈表

標(biāo)準(zhǔn)答案:A

知識(shí)點(diǎn)解析:暫無解析

6、樹是結(jié)點(diǎn)的集合,它的根結(jié)點(diǎn)的數(shù)目是()。

A、有且只有I個(gè)

B、1個(gè)或多于1個(gè)

C、0個(gè)或1個(gè)

D、至少有2個(gè)

標(biāo)準(zhǔn)答案:C

知識(shí)點(diǎn)解析?:樹具有明顯的層次關(guān)系,即樹是一種層次結(jié)構(gòu)。在樹結(jié)構(gòu)中,根結(jié)點(diǎn)

在第一層上。當(dāng)樹為非空時(shí),樹中有且只有一個(gè)根結(jié)點(diǎn),當(dāng)樹為空時(shí),樹中根結(jié)點(diǎn)

的數(shù)目為0。

7、在軟件開發(fā)中,需求分析階段不可以使用的工具是()

A、數(shù)據(jù)字典

B、數(shù)據(jù)流圖

C、判斷樹

D、程序流程圖

標(biāo)準(zhǔn)答案:D

知識(shí)點(diǎn)解析:暫無解析

8、數(shù)據(jù)庫(kù)管理員(DBA)是數(shù)據(jù)庫(kù)系統(tǒng)的一個(gè)重要組成部分,有很多職責(zé)。以下選項(xiàng)

不屬于DBA職責(zé)的是()

A、定義數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)和存取策略

B、定義數(shù)據(jù)庫(kù)的結(jié)構(gòu)

C、定期對(duì)數(shù)據(jù)庫(kù)進(jìn)行重組和重構(gòu)

D、設(shè)計(jì)和編寫應(yīng)用系統(tǒng)的程序模塊

標(biāo)準(zhǔn)答案:D

知識(shí)點(diǎn)解析:暫無解析

9、下面關(guān)于面向?qū)ο蟮某绦蛟O(shè)計(jì)方法中,正確的是()。

A、“多態(tài)性”是指對(duì)象的狀態(tài)根據(jù)運(yùn)行的要求進(jìn)行變化

B、“封裝性”是指將不同類型的數(shù)據(jù)結(jié)合在一起作為一個(gè)整體來處理

C、在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,結(jié)構(gòu)化程序設(shè)計(jì)方法仍有著重要作用

D、基類的私有成員在派生類的對(duì)象中不可訪問,也不占內(nèi)存空間

標(biāo)準(zhǔn)答案:C

知識(shí)點(diǎn)解析:面向?qū)ο笾械亩鄳B(tài)性是指當(dāng)多種事物繼承自一種事物時(shí),同一種操作

在它們之間表現(xiàn)出不同的行為;而封裝性是指將數(shù)據(jù)和算法捆綁成一個(gè)整體,這個(gè)

整體就是對(duì)象,描述對(duì)象的數(shù)據(jù)被封裝在其內(nèi)部。C++是起源于C語言的一種面向

對(duì)象的程序設(shè)計(jì)語言,因此C++語言既保留了傳統(tǒng)的結(jié)構(gòu)化程序設(shè)計(jì)方法,又支

持面向?qū)ο蟪绦蛟O(shè)計(jì)方法;派生類不可訪問基類中的私有成員,因此在派生類中直

接引用基類的私有變量成員是不允許的,但可以通過基類的公用成員函數(shù)來引用基

類的私有變量成員。

10、下列關(guān)于函數(shù)模板的定義中,合法的是()。

A、templateclass<1>1abs(lz){returnz<0?-z:z;}

B、template<typenameT>Tabs(Tz){returnz<0?-z:z;)

C^templateT<classT>abs(Tz){returnz<0?-z:z;|

D、templateTabs(Tz){returnz<0?z:z;}

標(biāo)準(zhǔn)答案:B

知識(shí)點(diǎn)解析?:聲明一個(gè)函數(shù)模板格式是:template〈模板形參表聲明〉〈函數(shù)聲明

>其中〈模板形參表聲明,是由一個(gè)或多個(gè)〈模板形參,組成(如果是多個(gè)需要用

逗號(hào)隔開)。其中,〈模板形參,可以換成class,函數(shù)的聲明部分和一般函數(shù)的聲

明部分類似,只有某些類型修飾符被虛擬類型參數(shù)替代。

11、下面函數(shù)的作用是以雙倍行距輸出文件:voidtest(ifstream&outf,ofstream&outC)

{charc;while(){;if(c==,\n,)outc.put(C);}}下劃線處缺失的代碼是

()。

A、outf.put(C)與outc.get(C)

B、outf.put(C)與outc.get(C)

C、outf.get(C)與outc.put?

D、outf.get(C)與outc.put?

標(biāo)準(zhǔn)答案:D

知識(shí)點(diǎn)解析:ifstream是文件輸入流類,只能用于輸入.它沒有提供任何用于輸出

的操作。ofstream是文件輸出流類,只能用于輸出,它沒有提供任何用于輸入的操

作。從文件中輸入字符耍用文件輸入流類引用outf.并調(diào)用其輸入字符的成員函數(shù)

get()o根據(jù)題目中的要求,可以看出當(dāng)輸入文件中讀到換行符時(shí),程序?qū)⒃谳敵鑫?/p>

件中兩次輸出換行符,即雙倍行距。output(。為輸出一個(gè)字符,因?yàn)?/p>

“if(c==,\n》outc.put(C);”此句,當(dāng)c為間格字符(行距字符)時(shí),再多輸出一次

outc.put(C)o

12、下面關(guān)于運(yùn)算符重我中正確的是()

A、運(yùn)算符函數(shù)的返回類型不能聲明為基本數(shù)據(jù)類型

B、C++的所有運(yùn)算符都可以重載

C、在類型轉(zhuǎn)換符函數(shù)的定義中不需要聲明返回類型

D、通過運(yùn)算符重載可以定義C++中沒有的運(yùn)算符

標(biāo)準(zhǔn)答案:C

知識(shí)點(diǎn)解析:運(yùn)算符函數(shù)的返回類型可以聲明為基本數(shù)據(jù)類型,故選項(xiàng)A)錯(cuò)誤。

”.、.*、->*、::、?”這五個(gè)運(yùn)算符不可以重載,故選項(xiàng)B)錯(cuò)誤。在重載類型轉(zhuǎn)換

符時(shí),由于運(yùn)算符本身已經(jīng)表示出返回值類型,因此不需要返回值類型的聲明。運(yùn)

算符重我是針對(duì)C++中已有的運(yùn)算符進(jìn)行的,不可能通過重載創(chuàng)造出新的運(yùn)算

符,故選項(xiàng)D)錯(cuò)誤。

13、已知:intn=l;在下面定義引用的語句中,正確的是()。

A、intx=&n;

B、int&x=n;

C、int&x;

D、int&x=&n;

標(biāo)準(zhǔn)答案:B

知識(shí)點(diǎn)解析:引用實(shí)際上就是別名,它與被引用變量擁有同一個(gè)地址空間。選項(xiàng)

A)中&m表示m的地址,而x是一個(gè)整型變量,在C++中不能從地址值隱式轉(zhuǎn)換

為整型值,故選項(xiàng)A)是錯(cuò)的。選項(xiàng)B)中其操作實(shí)際上就是為m賦于一個(gè)別名

x,因此選項(xiàng)B)是對(duì)的。選項(xiàng)C)中引用必須要用被引用的對(duì)象,即引用必須要初

始化:選項(xiàng)D)中x是一個(gè)整型引用,而其被引用的對(duì)象卻是m的地址,存在著與

選項(xiàng)A)類似的錯(cuò)誤,因此選項(xiàng)D)也是錯(cuò)的。

14、下面字符串中,不可以用作C++標(biāo)識(shí)符的是()。

A、case

_test_c

C、Return

D、x_2008

標(biāo)準(zhǔn)答案:A

知識(shí)點(diǎn)解析:C++標(biāo)識(shí)符是一個(gè)以字母或下劃線開頭的,由字母、數(shù)字、下劃線組

成的字符串。標(biāo)識(shí)符不能與任何一個(gè)關(guān)鍵字同名,因此case不能作為標(biāo)識(shí)符。

15、執(zhí)行下列程序語句后,輸出結(jié)果為()。#inelude<iostream>usingnamespace

std;intm=5;intmain()(intm=3;m++;::m++;cout<<m<<endl;return0;)

A、3

B、4

C、5

D、6

標(biāo)準(zhǔn)答案:B

知識(shí)點(diǎn)解析:暫無解析

16、下面()不是構(gòu)造函數(shù)的特征。

A、構(gòu)造函數(shù)必須指定返回值類型說明

B、構(gòu)造函數(shù)可以設(shè)置缺省參數(shù)

C、構(gòu)造函數(shù)可以重載

D、構(gòu)造函數(shù)的函數(shù)名與類名相同

標(biāo)準(zhǔn)答案:A

知識(shí)點(diǎn)解析:暫無解析

17、有如下類定義:classTest{intx_,y_;public:Test():a_(0),b_(0){)Test(inta,int

b=0):a_(a),b_(b){)};若執(zhí)行語句Testx(2),y[3],*z[4];則Test類的構(gòu)造函數(shù)被調(diào)用

的次數(shù)是()。

A2次

、

B3次

、

c4次

D5次

、

標(biāo)準(zhǔn)答案:C

知識(shí)點(diǎn)解析:定義對(duì)象x時(shí)執(zhí)行一次構(gòu)造函數(shù)(調(diào)用Test(inta,intb=0)),定義對(duì)象

數(shù)組y時(shí),構(gòu)造函數(shù)(注意,該構(gòu)造函數(shù)必須是沒有任何參數(shù)的)的執(zhí)行次數(shù)與數(shù)組

中對(duì)象的個(gè)數(shù)相等,即需要執(zhí)行3次,最后定義一個(gè)指向Tesl對(duì)象的指針數(shù)組,

它并不會(huì)創(chuàng)建對(duì)象,從而也就不會(huì)去執(zhí)行構(gòu)造函數(shù),故構(gòu)造函數(shù)一共執(zhí)行了4次。

18、下面關(guān)于繼承和派生的敘述中,正確的是()。

A、作為虛基類的類不能被實(shí)例化

B、派生類不能訪問基類中的保護(hù)成員

C、虛函數(shù)必須在派生類中重新實(shí)現(xiàn)

D、派生類向基類的構(gòu)造函數(shù)傳遞參數(shù)

標(biāo)準(zhǔn)答案:A

知識(shí)點(diǎn)解析:暫無解析

19、下面for語句的循環(huán)次數(shù)為()。for(inti=0,n=0;!n&&i<=5;i++);

A、0

B、5

C、6

D、無窮次

標(biāo)準(zhǔn)答案:c

知識(shí)點(diǎn)解析:for語句的語法格式如下:fort(〈表達(dá)式D;〈表達(dá)式2〉;〈表達(dá)

式3))〈語句塊〉。其中〈表達(dá)式1〉是for循環(huán)的初始化部分:〈表達(dá)式2〉是

foi?循環(huán)的條件部分,用來判斷循環(huán)能否繼續(xù)進(jìn)行的條件,”!n&&i<=5;”語句為判

斷循環(huán)是否繼續(xù),其中的&&為邏輯運(yùn)算符,只有當(dāng)其兩邊的表達(dá)式都為真時(shí)它才

返回一個(gè)真值。所以循環(huán)次數(shù)為6。

20、下面有關(guān)this指針的敘述中,正確的是()。

A、類的成員函數(shù)都有this指針

B、任何與類相關(guān)的函數(shù)都有this指針

C、類的非靜態(tài)成員函數(shù)才有this指針

D、類的友元函數(shù)都有ihis指針

標(biāo)準(zhǔn)答案:C

知識(shí)點(diǎn)解析:暫無解析

21、有如下程序:#inckide<iostream>usingnamespacestd;classBase{public:virtual

voidfuncl(){cout<<"Base1";)voidrune2(){cout<<"Base2";}};class

Derived:publicBase{public:voidfunc1(){cout<<"DerivedI";}voidfunc2(){cout<

<"Derived2";)};intmain(){Base*p=newDerived;P->funcl();P->func2();return

0:}運(yùn)行此程序,屏幕上將顯示輸出_____O

A、Derived1Base2

B、Base1Base2

C、Derived1Derived2

D、Base1Derived2

標(biāo)準(zhǔn)答案:A

知識(shí)點(diǎn)解析:派生類Derived由基類Base公有繼承而來。調(diào)用p->funcl();后,

執(zhí)行派生類Derived的函數(shù)voidfunc1();調(diào)用p->rune2();后,執(zhí)行基類的函數(shù)

voidfunc2(),因?yàn)樘摂M函數(shù)是根據(jù)對(duì)象的實(shí)際類型調(diào)用,非虛擬函數(shù)是根據(jù)指針類

型調(diào)用。故通過指針p調(diào)用func2時(shí)將直接調(diào)用基類中的voidfunc2()。

22、下面關(guān)于友元的說法中錯(cuò)誤的是()

A、若類A是類B的友元,那么類B也是類A的友元

B、友元關(guān)系不能被繼承

C、若函數(shù)fun被說明為類A的友元,那么在fun中可以訪問類A的私有成員

D、若類A是類B的友元,那么類A的所有成員函數(shù)都是類B的友元

標(biāo)準(zhǔn)答案:A

知識(shí)點(diǎn)解析:C++中有些對(duì)象或函數(shù)需要訪問其他對(duì)象的內(nèi)部成員,這樣可以用

friend關(guān)鍵字將對(duì)應(yīng)的類指定友元函數(shù)或友元類,但是這種關(guān)系不是相互的。如果

聲明一個(gè)類A為類B的友元類,則類A中的所有成元函數(shù)都可以訪問類B中的私

有成員。另外,友元關(guān)系不會(huì)被繼承。

23>運(yùn)行以下的程序代碼,結(jié)果是()。#include<iostream>usingnamespacestd;

intmain(){intx=5;int*q=&x;int&y=x;y++;tout<<(*q)++<<end1;return0;j

A、5

B、6

C、7

D、8

標(biāo)準(zhǔn)答案:B

知識(shí)點(diǎn)解析:暫無解析

24、下面有關(guān)類模板的說法中不正確的是()。A)B)C)D)

A、類模板的成員函數(shù)都是模板函數(shù)

B、類模板本身在編譯中不會(huì)生成任何代碼

C、類模板只是虛擬類型的參數(shù)

D、用類模板定義一個(gè)對(duì)象時(shí),不能省略實(shí)際參數(shù)

標(biāo)準(zhǔn)答案:C

知識(shí)點(diǎn)解析:暫無解析

25>有以下程序:#include<iostream>usingnamespacestd;classTestClass{public:

TestClass(intn){number=n;}〃拷貝構(gòu)造函數(shù)

TestClass(TestClass&other){number=other.number;}?TestClass。{}private:int

number;};TestClassfun(TestCIassP){TestClasstemp(p);returntemp;}intmain()

{TestClassobjl(10),obj2(0);TestClassobj3(objI);obj2=fun(obj3);return0:}程序執(zhí)

行時(shí),TestClass類的構(gòu)造函數(shù)被調(diào)用的次數(shù)是()。

A、2

B、3

C、4

D、5

標(biāo)準(zhǔn)答案:C

知識(shí)點(diǎn)解析:objl(10)執(zhí)行一次構(gòu)造函數(shù),obj2(0)也執(zhí)行一次構(gòu)造函數(shù);

obj3(objl)t3t.objl作為參數(shù)執(zhí)行一次構(gòu)造函數(shù);fun(obji3)中的temp(p)將執(zhí)行一次

構(gòu)造函數(shù),而fun本身是以按值傳遞參數(shù),形參在fun函數(shù)內(nèi)也要分配獨(dú)立的空

間,所以也要執(zhí)行一次陶造函數(shù),其返回結(jié)果也是TestClass類型的,同樣需要執(zhí)

行一次構(gòu)造函數(shù),所以一共要執(zhí)行4次。

26、語句ofslreamoutf("TEST.DAT\ios_base::app);的功能是建立流對(duì)象outf,并試圖

打開文件TEST.DAT與outf關(guān)聯(lián),而且()。

A、如果文件存在,打開失敗:如果文件不存在,建立一個(gè)新文件

B、如果文件存在,將文件指針定位于文件首;如果文件不存在,打開失敗

C、如果文件存在,將文件指針定位于文件尾:如果文件不存在,建立一個(gè)新文件

D、如果文件存在,將其置為空文件;如果文件不存在,打開失敗

標(biāo)準(zhǔn)答案:C

知識(shí)點(diǎn)解析:暫無解析

27、下面的類定義中,如果要為其添加一個(gè)析構(gòu)函數(shù),對(duì)于析構(gòu)函數(shù)定義正確的是

()oclassTlestClass{private:inta:public:TestClassfintgiva_a=0){a=give_a;))

A^~voidTestClass(){}

?TestClassvoid(){}

C、void^TestClass(){)

D^~TestClass(){}

標(biāo)準(zhǔn)答案:D

知識(shí)點(diǎn)解析:暫無解析

28、下面關(guān)于虛函數(shù)的表述中正確的是()。

A、虛函數(shù)不能聲明為另一個(gè)類的友元函數(shù)

B、派生類必須重新定義基類的虛函數(shù)

C、如果在重定義虛函數(shù)時(shí)使用了保留字virtual,那么該重定義函數(shù)仍是虛函數(shù)

D、虛函數(shù)不能夠聲明為靜態(tài)函數(shù)

標(biāo)準(zhǔn)答案:D

知識(shí)點(diǎn)解析:暫無解析

29、將下面類TeslClass中的函數(shù)「un()的對(duì)象成員n值修改為100的語句應(yīng)該是

()oclassTcstClass{public:TestClass(intx){n=x;}voidSetNum(intnl){n=nl;}

private:intn;}intfun(){TestClass*ptr=newTestClass(45);;)

A^TestClass(lOO)

B、ptr->SetNum(100)

C>SeiNum(lOO)

D、ptr->n=l()O

標(biāo)準(zhǔn)答案:B

知識(shí)點(diǎn)解析:暫無解析

30、運(yùn)算符重我是對(duì)已有的運(yùn)算符賦予多重的含義所以()。

A、能夠?qū)绢愋蛿?shù)據(jù)(如double),重新定義“+”運(yùn)算符的含義

B、只能重載C++中己經(jīng)有的運(yùn)算符,不能重新定義新運(yùn)算符

C、能夠改變一個(gè)已有運(yùn)算符的優(yōu)先級(jí)和操作數(shù)個(gè)數(shù)

D、C++中現(xiàn)有的所有運(yùn)算符都可以重載

標(biāo)準(zhǔn)答案:B

知識(shí)點(diǎn)解析:C++在重載運(yùn)算符時(shí),必須符合以下的條件:①不可以重載內(nèi)置的

C++數(shù)據(jù)類型(如int,double等類型)運(yùn)算符的含義;②不可以定義C++中沒有的

運(yùn)算符;⑨不可以改變重載運(yùn)算符的優(yōu)先級(jí)與操作數(shù)的個(gè)數(shù);④有些運(yùn)算符不能

被重載,例如域運(yùn)算符(::),條件運(yùn)算符(?:)等,具體哪些運(yùn)算符不能被重載與編譯

器有關(guān)。

31、TcstClass類定義如下:classTcstClass(private:intid;chargender;char*phone;

public:TestClass():id(0),gender,#'),phone(NULL){)TestQass(intno,charge=,#,,char

*ph=NULL){id=no;gender=ge;phone=ph;)};卜面夾對(duì)象定義語句中錯(cuò)誤的是()。

A^TestClassmyObj(i);

B、TestClassmyObj(2,,,l1101111155");

C、TestClassmyObj(l,,m,);

D、TestClassmyObj;

標(biāo)準(zhǔn)答案:B

知識(shí)點(diǎn)解析:B)中由于有兩個(gè)參數(shù),所以其調(diào)用了第二個(gè)構(gòu)造函數(shù),第二個(gè)構(gòu)造

函數(shù)的兩個(gè)缺省參數(shù),在調(diào)用時(shí),實(shí)參會(huì)按從左到右的順序傳給形參,所以第二個(gè)

參數(shù)“11101111155”會(huì)傳遞給形參ge,而原型中的ge為字符型,實(shí)參為指向字符的

指針,所以在編譯時(shí)會(huì)出現(xiàn)錯(cuò)誤。A)與C)都能夠壬確的實(shí)現(xiàn)參數(shù)的傳遞。對(duì)于

D),由于在創(chuàng)建TestClass的實(shí)例myObji時(shí),沒有參數(shù),所以其調(diào)用了第一個(gè)構(gòu)

造函數(shù)。

32、使用輸入輸出操作符selw,能夠控制()。

A、填充字符

B、輸出寬度

C、對(duì)齊方式

D、輸出精度

標(biāo)準(zhǔn)答案:B

知識(shí)點(diǎn)解析:暫無解析

33、有如下類定義:classFun{public:Fun(intv):value(v){)//(J)?Fun(){}〃②

private:Fun{},〃③intvalue=0;//(4));其中存在語法錯(cuò)誤的行是()。

A①

、

B②

、

c③

、

D④

、

標(biāo)準(zhǔn)答案:D

知識(shí)點(diǎn)解析:暫無解析

二、公共基礎(chǔ)填空題(本題共15題,每題7.0分,共

15分。)

34、一個(gè)項(xiàng)目具有一個(gè)項(xiàng)目主管,一個(gè)項(xiàng)目主管只可管理一個(gè)項(xiàng)目,則實(shí)體”頁目

主管”與實(shí)體“項(xiàng)目”的聯(lián)系屬于的聯(lián)系。

標(biāo)準(zhǔn)答案:一對(duì)一或1:1

知識(shí)點(diǎn)解析:實(shí)體之間的對(duì)應(yīng)關(guān)系稱為聯(lián)系,它反映現(xiàn)實(shí)世界事物之間的相互關(guān)

聯(lián)。兩個(gè)實(shí)體間的聯(lián)系可以歸結(jié)為三種類型:一對(duì)一聯(lián)系表現(xiàn)為某一實(shí)體與另一實(shí)

體一一對(duì)應(yīng)相關(guān)聯(lián);一對(duì)?多聯(lián)系表現(xiàn)為某一實(shí)體與相關(guān)多個(gè)實(shí)體相關(guān)聯(lián);多對(duì)多聯(lián)

系表現(xiàn)為多個(gè)實(shí)體與相關(guān)多個(gè)實(shí)體相聯(lián)系。所以實(shí)體“項(xiàng)目主管”與實(shí)體“項(xiàng)目”的聯(lián)

系屬于一對(duì)一的聯(lián)系。

35、在最壞情況下,冒泡排序的時(shí)間復(fù)雜度為o

標(biāo)準(zhǔn)答案:n(n-l)/2

知識(shí)點(diǎn)解析:冒泡排序法是通過相鄰數(shù)據(jù)元素的交換逐步將線性表變成有序。假設(shè)

線性表的長(zhǎng)度為n,則在最壞的情況下,冒泡排序需要經(jīng)過n/2遍的從前往后的掃

描和n/2遍的從后往前的掃描,需要的比較次數(shù)為n(n-l)/2o

36、在結(jié)構(gòu)化分析使用的數(shù)據(jù)流圖中,使用用解釋其中的圖形元素。

標(biāo)準(zhǔn)答案:數(shù)據(jù)字典

知識(shí)點(diǎn)解析:數(shù)據(jù)字典(DataDictionary,簡(jiǎn)稱DD)的作用是對(duì)DFD中出現(xiàn)的被命

名的圖形元素進(jìn)行確切解釋。通常數(shù)據(jù)字典包含的信息有名稱、別名、何處使用/

如何使用、內(nèi)容描述、補(bǔ)充信息等。

37、二義樹的遍歷分為三種,它們是前序遍歷、遍歷和后序遍歷。

標(biāo)準(zhǔn)答案:中序

知識(shí)點(diǎn)解析:二叉樹的遍歷可以分為三種:前序遍歷、中序遍歷和后序遍歷。前

序遍歷是指在訪問根結(jié)點(diǎn)、遍歷左予樹與遍歷右子樹這三者中,首先訪問根結(jié)點(diǎn),

然后遍歷左子樹,最后遍歷右子樹;并且遍歷左、右子樹時(shí),仍然先訪問根結(jié)點(diǎn),

然后遍歷左子樹,最后遍歷右子樹。中序遍歷指在訪問根結(jié)點(diǎn)、遍歷左子樹與遍

歷右子樹這三者中,首先遍歷左子樹,然后訪問根結(jié)點(diǎn),最后遍歷右子樹;并且遍

歷左、右子樹時(shí),仍然先遍歷左子樹,然后訪問根結(jié)點(diǎn),最后遍歷右子樹。后序

遍歷指在訪問根結(jié)點(diǎn)、遍歷左子樹與遍歷右子樹這三者中,首先遍歷右子樹,然后

訪問根結(jié)點(diǎn),最后遍歷左子樹;并且遍歷左、右子樹時(shí),仍然先遍歷右子樹,然后

訪問根結(jié)點(diǎn),最后遍歷左子樹。

38、數(shù)據(jù)流的類型有和事務(wù)型。

標(biāo)準(zhǔn)答案:變換型

知識(shí)點(diǎn)解析:典型的數(shù)據(jù)流類型有兩種:變換型和事務(wù)型。變換型:指信息沿輸入

通路進(jìn)入系統(tǒng),同時(shí)由外部形式變換為內(nèi)部形式,進(jìn)入系統(tǒng)的信息通過變換中心。

經(jīng)加工處理以后冉沿輸出通路變換成外部形式離開軟件系統(tǒng)。事務(wù)型:在很多軟件

應(yīng)用中,存在某種作業(yè)數(shù)據(jù)流,它可以引發(fā)個(gè)或多個(gè)處理,這些處理能夠完成該作

業(yè)要求的功能,這種數(shù)據(jù)流就叫做事務(wù)。

39、執(zhí)行下列語句后,變量n的值是ointn=0:for(inti=l;i<=3;i++)for(int

j=l;j<<=i;j++)n++;

標(biāo)準(zhǔn)答案:6

知識(shí)點(diǎn)解析:當(dāng)i=l時(shí),內(nèi)循環(huán)中的i的值為1,n目加一次,n=l;當(dāng)i=2時(shí),內(nèi)

循環(huán)中的j的值為i和2,n自加兩次,n=3,當(dāng)i=3時(shí),內(nèi)循環(huán)中的i的值為1、

2^3,n自加三次,n=6o

40、C++中通常和一個(gè)運(yùn)算符連用,構(gòu)成一個(gè)運(yùn)算符函數(shù)名的C++關(guān)鍵字為

標(biāo)準(zhǔn)答案:operator

知識(shí)點(diǎn)解析:暫無解析

41、C++中每個(gè)類都有一個(gè)隱含的指針。

標(biāo)準(zhǔn)答案:this

知識(shí)點(diǎn)解析:暫無解析

42、C++中將兩個(gè)字符串連接起來組成一個(gè)字符串的函數(shù)是______o

標(biāo)準(zhǔn)答案:strcat

知識(shí)點(diǎn)解析;暫無解析

43、如果把類FriendClass定義為類TeslClass的友元類,則應(yīng)該在類TestClass的定

義中加入語句o

標(biāo)準(zhǔn)答案:friendclassFiendClass

知識(shí)點(diǎn)解析:把一個(gè)類聲明為另外一個(gè)類的友元類,只要在另外一個(gè)類中添加如F

語句:friendclass類名:所以答案是"friendclassFriendClass^o

44、在下面程序的橫線處填上適當(dāng)?shù)恼Z句,使程序執(zhí)行后的輸出結(jié)果為ABCD。

#include<iostream>usingnamespacestd;classA{public:A(){cout<<,A,;}};class

B:{public:B(){cout<<,B,;}};ciassC:{public:C(){cout<<,C,;}};

classD:publicB,publicC(public:D()(cout<<,D,;}};voidmain(){Dobj;)

標(biāo)準(zhǔn)答案:virtualA或virtualpublicA或virtualprivateA或virtualprotectedA與

virtualA或virtualpublicA或virtualprivateA或virtualprotectedA

知識(shí)點(diǎn)解析:由于每執(zhí)行一次A類的構(gòu)造函數(shù),都將輸出一個(gè)字符A,輸出結(jié)果

中只有一個(gè)A,且第一個(gè)輸出為A,D繼承B,可知必有B繼承A。由題中要求C

肯定繼承某個(gè)類,所以,這里的C只能是繼承于A,保證輸出中只有一個(gè)A,A必

須為虛基類,所以本題中的空都填virtualA。

45、設(shè)p是指向一個(gè)類動(dòng)態(tài)對(duì)象的指針變量,則執(zhí)行"deletep;”語句時(shí),將自動(dòng)調(diào)

用該類中的函數(shù)。

標(biāo)準(zhǔn)答案:析構(gòu)

知識(shí)點(diǎn)解析:暫無解析

46、有如下程序:#include<iostream>usingnamespacestd;classA{public:virtual

voidf(){cout<<nr,;});classB:publicA(public:B(){cout<<"2";});classC:public

B{public:virtualvoidf(){B::f();cout<<"3H;)};intmain(){Aaa,*p;Bbb;Ccc;

p=&cc;p->f();return0;(執(zhí)行上面程序的輸出是。

標(biāo)準(zhǔn)答案:2213

知識(shí)點(diǎn)解析:Bbb將定義一個(gè)B型對(duì)象bb,這時(shí)需調(diào)用B的構(gòu)造函數(shù),在該構(gòu)造

函數(shù)中,將輸出"2:;Ccc將定義一個(gè)C型對(duì)象cc,這時(shí)需調(diào)用C的構(gòu)造函數(shù),面

該函數(shù)為缺省構(gòu)造函數(shù),其將調(diào)用父類B的構(gòu)造函數(shù),在該構(gòu)造函數(shù)中,將輸出

"2":由于p采用指針方式調(diào)用成員函數(shù)f,而f在基類中被聲明為虛擬函數(shù),故函

數(shù)f的執(zhí)行與指針p所指向?qū)ο蟮膶?shí)際類型相一致,p指向一個(gè)C型對(duì)象cc,故執(zhí)

行p->f()時(shí),將執(zhí)行C的f函數(shù),在該函數(shù)中,首先直接調(diào)用了父類B的函數(shù)f,

而在B中直接繼承了A類的f函數(shù),故先要執(zhí)行A的f函數(shù),輸出“1”,然后再輸

出“3”。

47、執(zhí)行下列語句序列:imx=l,&y=x;coutVVxVV〈VVyVVendl;輸出結(jié)果

為o

標(biāo)準(zhǔn)答案:1-1

知識(shí)點(diǎn)解析:暫無解析

48、以下函數(shù)模板min的功能是返回?cái)?shù)組a中最小元素的值。請(qǐng)將橫線處缺失部分

補(bǔ)充完整。template<typenameT>Tmin(Ta[],intn){Ttemp=a[0];for(inti=l,i<

n;i++)if(a|i]<temp);returntemp;)

標(biāo)準(zhǔn)答案:temp=a[i]或lemp=*(a+i)或temp=*(i+a)

知識(shí)點(diǎn)解析:暫無解析

國(guó)家二級(jí)(C++)筆試模擬試卷第2套

一、公共基礎(chǔ)選擇題(本題共10題,每題7.0分,共

10分。)

1、下列敘述中,正確的是()。

A、非空循環(huán)隊(duì)列的隊(duì)尾指針等于排頭指針時(shí),也可以進(jìn)行入隊(duì)運(yùn)算

B、循環(huán)隊(duì)列為空時(shí)可以進(jìn)行退隊(duì)運(yùn)算

C、退隊(duì)運(yùn)算后隊(duì)列長(zhǎng)度減1

D、入隊(duì)運(yùn)算就是將新元素插入到隊(duì)尾指針指向的位置

標(biāo)準(zhǔn)答案:4

知識(shí)點(diǎn)解析:非空循環(huán)隊(duì)列的隊(duì)尾指針等于排頭指針時(shí),說明循環(huán)隊(duì)列已滿,不能

進(jìn)行入隊(duì)運(yùn)算,選項(xiàng)A是錯(cuò)誤的。循環(huán)隊(duì)列為空時(shí)不可以進(jìn)行退隊(duì)運(yùn)算,否則產(chǎn)

生“下溢”,選項(xiàng)B是錯(cuò)誤的。入隊(duì)運(yùn)算首先將隊(duì)尾指針進(jìn)1,然后將新元素插入到

隊(duì)尾指針指向的位置。

2、下列敘述不屬于線性鏈表較之線性表順序存儲(chǔ)結(jié)構(gòu)的優(yōu)點(diǎn)的是()。

A、線性鏈表存儲(chǔ)方式簡(jiǎn)單

B、線性鏈表運(yùn)算效率高

C、線性鏈表的存儲(chǔ)空間易于擴(kuò)展

D、線性鏈表便于存儲(chǔ)空間的動(dòng)態(tài)分配

標(biāo)準(zhǔn)答案:1

知識(shí)點(diǎn)解析:線性鏈表存儲(chǔ)方式要求每個(gè)數(shù)據(jù)節(jié)點(diǎn)由兩個(gè)部分組成,比線性表的順

序存儲(chǔ)結(jié)構(gòu)復(fù)雜,選項(xiàng)A是錯(cuò)誤的。在平均情況下,線性表的順序存儲(chǔ)結(jié)構(gòu)插入

和刪除元素需要移動(dòng)線性表中約一半的元素,效率低下。而線性鏈表只需改變有關(guān)

節(jié)點(diǎn)的指針,效率較高,選項(xiàng)B是正確的。線性表的順序存儲(chǔ)存儲(chǔ)空間必須是連

續(xù)的,不利于存儲(chǔ)空間于展;而線性鏈表不需要連續(xù)的存儲(chǔ)空間,存儲(chǔ)空間易于擴(kuò)

展,選項(xiàng)C是正確的。為保證線性表的存儲(chǔ)空間連續(xù)且順序分配,會(huì)導(dǎo)致在對(duì)某

個(gè)線性表進(jìn)行動(dòng)態(tài)分配存儲(chǔ)空間時(shí),必須.要移動(dòng)其他線性表中的數(shù)據(jù)元素,不便

于存儲(chǔ)空間的動(dòng)態(tài)分配,選項(xiàng)D是正確的。

A-----示)對(duì)此二叉樹中序遍歷的結(jié)果是()。

A、ABDGCEHIF

B、DGBAHEICF

C、GDBHIEFCA

D、ABCDEFGHI

標(biāo)準(zhǔn)答案:2

知識(shí)點(diǎn)。析:選項(xiàng)A、D中,根節(jié)點(diǎn)排在最前,因比可以斷定不是中序遍歷。選項(xiàng)

C中,根節(jié)點(diǎn)排在最后,因此也可以斷定不是中序遍歷。其中選項(xiàng)A、C分別為前

序遍歷和后序遍歷的結(jié)果。

4、若要求盡可能快地對(duì)實(shí)數(shù)數(shù)組進(jìn)行穩(wěn)定的排序,則應(yīng)選()。

A、快速排序

B、堆排序

C、歸并排序

D、基數(shù)排序

標(biāo)準(zhǔn)答案:4

知識(shí)點(diǎn)解析:這里要用到的知識(shí)幾乎都是要記憶的。此類題目可以采用排除法,首

先,穩(wěn)定的排序這里有兩個(gè)選項(xiàng)C和D,其飲,選項(xiàng)D不適用于實(shí)數(shù)的排序,因

此只可用C。

5、在所有排序方法中,關(guān)鍵字比較的次數(shù)與記錄的初始排列次序無關(guān)的是()。

A、希爾排序

B、冒泡排序

C、插入排序

D、選擇排序

標(biāo)準(zhǔn)答案:8

知識(shí)點(diǎn)解析:希爾排序和冒泡排序都屬于插入排序,它們通過數(shù)據(jù)元素的交換來逐

步消除線性表中的逆序,所以關(guān)鍵字比較的次數(shù)與記錄的初始排列次序有關(guān)。而選

擇排序是指掃描整個(gè)線性表,從中選出最小的元素,將它交換到表的前面。然后對(duì)

剩下的字表采用同樣的辦法,所以關(guān)鍵字比較的次數(shù)與記錄的初始排列次序無關(guān)。

6、函數(shù)重載是指()。

A、兩個(gè)或兩個(gè)以上的函數(shù)取相同的函數(shù)名,但形參的個(gè)數(shù)或類型不同。

B、兩個(gè)以上的函數(shù)取相同的名字和具有相同的參數(shù)個(gè)數(shù),但形參的類型可以不

同。

C、兩個(gè)以上的函數(shù)名字不同,但形參的個(gè)數(shù)或類型相同。

D、兩個(gè)以上的函數(shù)取相同的函數(shù)名,并且函數(shù)的返回類型相同。

標(biāo)準(zhǔn)答案:1

知識(shí)點(diǎn)解析:函數(shù)重載指的是兩個(gè)或兩個(gè)以上的函數(shù)具有相同的函數(shù)名,但是形參

的個(gè)數(shù)或類型不同。程序中通過判斷主調(diào)函數(shù)傳過來的參數(shù)的個(gè)數(shù)和類型來決定選

擇調(diào)用哪個(gè)具體的函數(shù)。

7、下面關(guān)于對(duì)象的描述中正確的是()。

A、任何對(duì)象都必須具有繼承性

B、任何對(duì)象都必須具有多態(tài)性

C、操作是對(duì)象的靜態(tài)屬性

D、對(duì)象間的通信靠消息傳遞

標(biāo)準(zhǔn)答案:8

知識(shí)點(diǎn)解析:繼承性和多態(tài)性是對(duì)象支持的特性,并不是必須具備的條件。操作是

對(duì)象的動(dòng)態(tài)性屬性。D選項(xiàng)的描述是正確的。

8、在關(guān)系代數(shù)中,對(duì)一個(gè)關(guān)系投影操作以后,新關(guān)系的元組個(gè)數(shù)跟原來關(guān)系的元

組個(gè)數(shù)相比()。

A、小于

B、小于或等于

C、等于

D、大于

標(biāo)準(zhǔn)答案:4

知識(shí)點(diǎn)解析:本題考核對(duì)投影運(yùn)算的掌握。投影操作是從表中選出某些列而丟棄另

一些列。如果只對(duì)一個(gè)關(guān)系中的某些屬性感興趣,那么就需要在這些屬性上使用投

影操作投影該關(guān)系,而元組個(gè)數(shù)是指一個(gè)表中的行的數(shù)目.因此.對(duì)一個(gè)關(guān)系投影

操作以后,新關(guān)系的元組個(gè)數(shù)跟原來關(guān)系的元組個(gè)數(shù)相等。

9、關(guān)系數(shù)據(jù)庫(kù)的概念模型是()的集合。

A、關(guān)系模型

B、關(guān)系模式

C、關(guān)系子模式

D、存儲(chǔ)模式

標(biāo)準(zhǔn)答案:2

知識(shí)點(diǎn)漏析:本題考核關(guān)系數(shù)據(jù)庫(kù)的概念模型。數(shù)據(jù)庫(kù)的概念模型體現(xiàn)了數(shù)據(jù)之間

的關(guān)系,它是各種數(shù)據(jù)之間相互關(guān)系的集合。關(guān)系數(shù)據(jù)庫(kù)的概念模型是關(guān)系模式的

集合。關(guān)系子模式是指關(guān)系數(shù)據(jù)庫(kù)模式中用戶所見到的那部分?jǐn)?shù)據(jù)模式描述。

10、如果對(duì)一個(gè)關(guān)系實(shí)施了一種關(guān)系運(yùn)算后得到了一個(gè)新的關(guān)系,而且新的關(guān)系中

屬性個(gè)數(shù)少于原來關(guān)系中屬性個(gè)數(shù),這說明所實(shí)施的運(yùn)算關(guān)系是()。

A、選擇

B、投影

C、連接

D、并

標(biāo)準(zhǔn)答案:2

知識(shí)點(diǎn)解析:本題考核對(duì)幾種關(guān)系代數(shù)運(yùn)算的掌握。其中選擇和投影的區(qū)別在于:

如果將一個(gè)關(guān)系看作一張表,那么選擇操作就是從這張表中選出一些行而丟棄另一

些行。而投影操作則是從這張表中選出某些列而丟棄另一些列。如果只對(duì)一個(gè)關(guān)系

中的某些屬性感興趣,那么就需要在這些屬性上使用投影操作投影該關(guān)系。并操作

的結(jié)果表示為Rus,它是一個(gè)關(guān)系,包括或者在R中、或者在S中、或者同時(shí)在R

和S中的所有元組,新的關(guān)系中屬性個(gè)數(shù)多于原來關(guān)系中屬性個(gè)數(shù)。連接操作用

于將兩個(gè)關(guān)系中的相關(guān)元組組合成單個(gè)元組。

二、選擇題(本題共20題,每題1.0分,共20分。)

11、要把高級(jí)語言編寫的源程序轉(zhuǎn)換為目標(biāo)程序,需要使用()。

A、編輯程序

R、驅(qū)動(dòng)程序

C、調(diào)試程序

D、編譯程序

標(biāo)準(zhǔn)答案:8

知識(shí)點(diǎn)解析:C++是以編譯方式實(shí)現(xiàn)的高級(jí)語言。C++程序的實(shí)現(xiàn)必須要使用某種

C++語言的編譯器進(jìn)行編譯。編譯器的功能是將程序的源代碼(.cpp)轉(zhuǎn)換為機(jī)器代

碼的形式,稱為目標(biāo)代碼(.obj):然后,再使用目標(biāo)代碼進(jìn)行鏈接,生成可執(zhí)行文

件(.exe),等待下一步的執(zhí)行過程。

12、以下選項(xiàng)中,合法的字符常量是()。

A、N

B、’\010'

C、68

D、D

標(biāo)準(zhǔn)答案:2

知識(shí)點(diǎn)解析:本題考核字符型常量的表示。選項(xiàng)A中是字符串的表示方法。選項(xiàng)

B所表示的是一個(gè)轉(zhuǎn)義字符,是特殊的字符常量。選項(xiàng)C中所表示的是整型常量。

選項(xiàng)D中不是常量的表示。

13、定義如下枚舉類型:enuin{Monday,Tuesday,Wednesday,Thursday,

Friday=2};則下列語句正確的是()。

A、表達(dá)式Wednesday==Friday的值是true

B、Dayday;day=3;

C^Dayday;day=Monday+3;

D、Dayday;day=Tuesday+10;

標(biāo)準(zhǔn)答案:

知識(shí)之解析:1本題考查枚舉類型的定義和使用。枚舉類型定義了一些整型符號(hào)常量

的集合,使用枚舉類型時(shí)應(yīng)該注意以卜.幾點(diǎn);①枚舉類型的第一個(gè)常量默認(rèn)值是

Oo②枚舉類型常量的值允許彼此相同。③雖然枚舉類型常量是整數(shù)類型,但是

不允許使用整數(shù)直接賦值給枚舉類型變量,也不允許與整數(shù)進(jìn)行運(yùn)算,只可以與整

數(shù)進(jìn)行比較。根據(jù)以上知識(shí),我仃何以得出選項(xiàng)B、C、D都不正確。

14、下列for循環(huán)執(zhí)行的次數(shù)為()。for(inti=0,j=10;i=j=10;i++,j-)

A、0

B、11

C、10

D、無數(shù)次

標(biāo)準(zhǔn)答案:8

知識(shí)點(diǎn)解析:本題考核for循環(huán)。for語句的循環(huán)條件部分為"i=j=10",這是一個(gè)賦

值表達(dá)式,永遠(yuǎn)為真,即for循環(huán)是死循環(huán),將執(zhí)行無數(shù)次。

15、下列關(guān)于gol。語句的描述中,正確的是()。

A、got。語句可在一個(gè)文件中隨意轉(zhuǎn)向

B、goto語句后面要跟一個(gè)它所轉(zhuǎn)向的語句

C、goto語句可以同時(shí)轉(zhuǎn)向多條語句

D、got。語句可以從一個(gè)循環(huán)體內(nèi)轉(zhuǎn)到循環(huán)體外

標(biāo)準(zhǔn)答案:8

知識(shí)點(diǎn)解析:gol。語句也可以跳出循環(huán)和swilch語句,got。語句無條件地轉(zhuǎn)移程

序的執(zhí)行控制。它總是與一標(biāo)號(hào)相匹配,其形式為:got。標(biāo)號(hào);,標(biāo)號(hào)是用戶自定

義的標(biāo)識(shí)符,它可以處于got。語句的前面,也可以處于其后,但標(biāo)號(hào)必須與got。

語句處于同一個(gè)函數(shù)中。定義標(biāo)號(hào)時(shí),由一個(gè)標(biāo)識(shí)符后面跟一個(gè)冒號(hào)組成。

16、若有定義:int*p;則下列各選項(xiàng)中,不同于表達(dá)式“*p=*p+l;"的是()。

A、*p++;

B、++*p;

C^*p+=l;

D、++(*p);

標(biāo)準(zhǔn)答案:1

知識(shí)點(diǎn)解析:題目中的語句“*p=*p+l;”是將指針變量p所指向的存儲(chǔ)單元的佳加

1,然后再放入p所指向的存儲(chǔ)單元中。選項(xiàng)A中,語句“*p++;”,當(dāng)把該表達(dá)式

賦給一整型變量k時(shí),就會(huì)發(fā)現(xiàn),原語句可變?yōu)椤発=*p;p=p+l;即語句“*p++”

最后所執(zhí)行的是p的值(即p中存放的地址)力口1,與題中語句“*p=*p+l;”的意思不

同。再來看選項(xiàng)B,C,D,選項(xiàng)B中的語句可表示為“*p=*p+l;選項(xiàng)C中的

語句可表示為“*p=*p+l;選項(xiàng)D中的語句也可表示為“*p=*p+l;

17、下列數(shù)組的定義中,會(huì)產(chǎn)生錯(cuò)誤的是()。

A、inta[]={'0',T,'2',3,'4','5','6'};

B、inta[10]={0,1,2,3,4,5,6);

C、chara[5]="hello";

D、chara[5]={'h','e',T,T,'o'};

標(biāo)準(zhǔn)答案:4

知識(shí)點(diǎn)解析:本題考核數(shù)組的定義以及字符串?dāng)?shù)組方面的基礎(chǔ)知識(shí)。下面逐項(xiàng)進(jìn)行

分析:選項(xiàng)A中,數(shù)組a的定義和初始化符合數(shù)組的定義和初始化語法,故正

確:選項(xiàng)B中,數(shù)組a初始化的值雖然沒有10個(gè),但對(duì)于少的部分,系統(tǒng)會(huì)自動(dòng)

補(bǔ)0,所以選項(xiàng)B中數(shù)組的定義也是正確;選項(xiàng)C中,數(shù)組a的長(zhǎng)度為5,但字符

串“hello",的長(zhǎng)度為5+1=6,字符串結(jié)束符,10,無法存儲(chǔ)在數(shù)組中,所以是錯(cuò)誤

的;選項(xiàng)D中,數(shù)組a的定義是正確的。

18、在C++語言中,函數(shù)形參的默認(rèn)存儲(chǔ)類型是()。

A、auto

register

CNstatic

D、extern

標(biāo)準(zhǔn)答案:1

知識(shí)點(diǎn)解析:在函數(shù)內(nèi)部或復(fù)合語句內(nèi)定義變星時(shí),如果沒有指定的存儲(chǔ)類型或使

用了auio說明符,系統(tǒng)就認(rèn)為所定義的變量具有自動(dòng)類別。

19、下面類的定義,有()處錯(cuò)誤。classMyClass{public:voidMyClass();~

MyClass(intValue);private:inti=0;};

A、1

B、2

C、3

D、4

標(biāo)準(zhǔn)答案:4

知識(shí)點(diǎn)解析:該類的定義共有3處錯(cuò)誤。①類的成員變量不能在定義時(shí)進(jìn)行初始

化:②類的構(gòu)造函數(shù)不能有返回值(包括void類型):③類的析構(gòu)函數(shù)不能有參

數(shù)。

20、下列關(guān)于多繼承.二義性的描述中,錯(cuò)誤的是()。

A、一個(gè)派生類的兩個(gè)基類中都有某個(gè)同名成員,在派生類中對(duì)這個(gè)成員的訪司可

能出現(xiàn)二義性。

B、解決二義性的最常用的方法是對(duì)成員名的限定法

C、基類和派生類中同時(shí)出現(xiàn)的同名函數(shù),也存在二義性問題

D、一個(gè)派生類是從兩個(gè)基類派生出來的,而這兩個(gè)基類又有一個(gè)共同的基類,對(duì)

該基類成員進(jìn)行訪問時(shí),可能出現(xiàn)二義性

標(biāo)準(zhǔn)答案:4

知識(shí)點(diǎn)解析:本題考核多繼承中出現(xiàn)的二義性問題。在多重繼承的情況下,派生類

具有兩個(gè)以上的直接基類,而這些直接基類的一部分或全部又是從另一個(gè)共同基類

派生而來時(shí),這些直接基類中從上一級(jí)繼承來的成員就擁有相同的名稱。在派生類

的對(duì)象中,這些同名成員在內(nèi)存中同時(shí)有多個(gè)復(fù)制件,所以派生對(duì)這些同名成員的

訪問存在二義性。所以選項(xiàng)A和D的說法是正確的。解決二義性的方法有兩種:

一是使用作用域分辨符來惟一標(biāo)識(shí)并分別訪問它們:二是可以將共同基類設(shè)置為虛

基類。而第一種方法最常用。所以選項(xiàng)B的說法是正確的?;惡团缮愔型瑫r(shí)

出現(xiàn)同名函數(shù),符合支配規(guī)則,不存在二義性問題。所以選項(xiàng)C的說法不正確。

21、以下程序的功能是:按順序讀入10名學(xué)生4門課程的成績(jī),計(jì)算出每個(gè)學(xué)生

的平均分?jǐn)?shù)并輸出,程序如下:#include<iostream>usingnamespacestd:int

main(){intn,k;floatscore,sum,ave;sum=0.0;tor(n=1;n<=10;n++)

{for(k=I;k<=4;k++){cin>>score;sum+=score;)ave=sum/4.0;cout<<

"NO.n<<n<<"ave:,*<<ave<<endl;)return0;}上述程序運(yùn)行后結(jié)果不

正確,調(diào)式中發(fā)現(xiàn)有一條語句出現(xiàn)在程序中的位置不正確。這條語句是非曲直

()。

sum=0.0;

BNsum+=score;

C、ave=sum/4.0

D、cout<<"NO."<<n<<"ave:"<<ave<<end1;

標(biāo)準(zhǔn)答案:1

知識(shí)點(diǎn)解析:本題中sum用來保存每位學(xué)生的總成績(jī),所以在計(jì)算不同學(xué)生的總

成績(jī)時(shí),應(yīng)將sum重新賦值初值0,即語句“sum=0.0;”應(yīng)該包含在第1個(gè)for循環(huán)

體內(nèi),并在第2個(gè)for語句前執(zhí)行。

22、有以下程序:#include<iostream>usingnamespacestd;char*x[]={"First",

"Second","Third");voidf(char*z[]){cout<<*z++<<end1;}intmain(){char

**y;y=x;f(y);return0;)

A、產(chǎn)生語法錯(cuò)誤

B、First

C>Secpnd

D、Third

標(biāo)準(zhǔn)答案:2

知識(shí)點(diǎn)解析:程序首先定義全局指針數(shù)組x,并賦初值。在函數(shù)f()中,語句“cout

<<*z++<<endl;”是輸出*z指向的字符串,然后指向下一個(gè)指針。由于在主函

數(shù)中,指針y已初始化指向指針數(shù)組x,所以執(zhí)行f(y)后,程序輸出指針數(shù)組x中

的第一個(gè)字符串“First”。

23、以卜.程序的輸出結(jié)果是()0#include<iostream>usingnamespacestd;intf(int

b[],intm,intn){inti,s=O;for(i=m;i<n;i+=2)s+=b[i];returns;}intmain(){intx

a[]={1,2,3,4,5,67,8,9);x=f(a,3,7);cout<<x<<endl;return0;}

A、10

B、18

C、8

D、15

標(biāo)準(zhǔn)答案:

知識(shí)之解析:1本題考查對(duì)數(shù)組以及數(shù)組作為函數(shù)參數(shù)的掌握程度。本題通過參數(shù)傳

遞將數(shù)組a傳給f()函數(shù)中的數(shù)組b,并由s傳遞返回值給主函數(shù)中的x。主函數(shù)

中,x=f(a,3,7),即把數(shù)組a傳給f()函數(shù)中的數(shù)組b,把3傳給m,把7傳給n。所

以函數(shù)f()中的for循環(huán)中,是從3開始循環(huán),經(jīng)過兩次循環(huán)后,實(shí)現(xiàn)a[3]和a[5]值

的累加,并存入s中,然后返回給主函數(shù)中的X。所以x的值為10。故本題答案

是Ao

24、有以下程序:#include<iostrcam>usingnamespacestd;classMyClass{intm;

public:staticintn;MyClass(){m=0;)voidsetvaluc(){m++;n++;}voidoutput()

{coutVV"m="VVmVV》,n=*'<<n<<endl;}};intMyClass::n=0;intmain()

{MyClassobjl,obj2;objl.setvalueO;objl.output();obj2.setvalue();obj2.output();return

0;}

A、m=1,n=1V換行>m=1,n=l

B、m=1,n=1<換行>m=l,n=2

C、m=l,n=lV換行>m=2,n=l

D、m=l,n=lV換行,m=2,n=2

標(biāo)推答案:2

知識(shí)點(diǎn)解析:本題考核靜態(tài)數(shù)據(jù)成員的應(yīng)用。類中的數(shù)據(jù)成員n為靜態(tài)變量,這種

類型變量采用靜態(tài)存儲(chǔ)分配。當(dāng)函數(shù)執(zhí)行完后,返回調(diào)用點(diǎn),該變量并不撤銷,其

值將繼續(xù)保留。內(nèi)部靜態(tài)變量有隱含初始值0,并且只在編譯時(shí)初始化一次。而類

中的數(shù)據(jù)成員m為auto變量,每次程序退出其作用域時(shí)將自動(dòng)消失。所以其值不

能保留下來。

25、有以下程序:#include<iostream>usingnamespacestd;classPoint5{public:

voidSetPoint(intx,inty);voidMove(intxOff,intyOff);intGetX(){returnX;}int

GetY(){returnY;)private:intX,Y;};voidPoint::SetPoint(intx,inty){X=x;Y=y;}

voidPoint::Move(intxOff,iniyOff)X+=xOff;Y+=yOff;}inimain()(Pointpl;

pl.SetPoint(l,2);pl.Move(5,6);cout<<uPointlis(w<<pLGetX()<<;<<

pl.GetY()<<H)"<<endl;return0;)執(zhí)行后的輸出結(jié)果是()。

A、Point1is(6,8)

B、Point!is(1,2)

C、Point1is(5,6)

D、Point1is(4,4)

標(biāo)準(zhǔn)答案:1

知識(shí)點(diǎn)解析:本題考核對(duì)象的定義與使用。程序中定義了一個(gè)類Point,在主函數(shù)

中定義了一個(gè)Point類的對(duì)象pl,然后通過對(duì)象pl調(diào)用其成員函數(shù)SctPoint()?0

Move。實(shí)現(xiàn)移位的操作。

26、為使下列程序的正確輸出結(jié)果為:Nowis2004-7-612:12:12那么應(yīng)該在程序

劃線處填入的語句是(卜#includc<iostrcam>usingnamespacestd;classTIME;

classDATE{public:DATE(inty=2004,intm=Lintd=l){ycar=y;month=m;day=d;}

voidDateTimc(TIME&t);private:intyeanmonth,day;};classTIME{public:

TIME(inth=0,intm=0,ints=0){hour=h;minute=m;second=s;};〃將

類DATE中成員函數(shù)DateTime聲明為類TIME的友元函數(shù)private:inthour,minute,

second;);voidDATE::DateTime(TIME&t){cout<<"Nowis"<<year<<,-,<<

month<<,-><<day<<'5<<t.hour<<u:n<<l,minute<<\,<<t.seoond<

<,.,<<endl;)intmain(){DATEd(2004,7,6);TIMEt(12,12,12);d.DateTime(t);

return0;)

A、friendvoidDateTime(TIME&t);

friendvoidDATE::DateTime(TIME&0;

C、voidDatelime(llME&t);

D、friendvoidDateTime(TIME&t);

標(biāo)準(zhǔn)答案:2

知識(shí)點(diǎn)解析:根據(jù)要求可知,在橫線處是將類DATE中成員函數(shù)DateTime聲明為

類TIME的友元函數(shù)。由于函數(shù)DaleTime是類DATE的成員函數(shù),因此對(duì)

DateTime函數(shù)的使用要加上,DATE::”修飾。其他各聲明的組成部分可參照函數(shù)

DateTime在類體外的定義實(shí)現(xiàn)。

27、設(shè)有如下程序:#include<iostream>usingnamespacesid;classA{public:int

i;display(){cout<<"classA\nu;));classB{public:inti;display(){cout<<"class

B\n";));classC:publicA,publicB{intj;public:inti;show(){j=i*i;

displayO;));intmain(){Cdemo;demo.show();returnO;}則主程序運(yùn)行時(shí)將(),

A、因?yàn)樽兞縤的重復(fù)定義而報(bào)錯(cuò)

B、因?yàn)閷?duì)象demo間接調(diào)用display。函數(shù)時(shí)產(chǎn)生二義性而報(bào)錯(cuò)

C、因?yàn)轭惗x的語法錯(cuò)誤而不能運(yùn)行

D、沒有語法錯(cuò)誤,能夠正常輸出結(jié)果

標(biāo)準(zhǔn)答案:2

知識(shí)點(diǎn)解析:本題主要考察C++中多繼承的工作方式和二義性的解決辦法。在

C++中,允許一個(gè)派生類從多個(gè)基類派生,這種繼承方式稱為多繼承。多繼承的定

義格式如下:classV派生類名〉:V繼承方式><基類名1>,〈繼承方式2>V

基類名2》,…{〈派生類類體>};但是,如果一個(gè)派生類的兩個(gè)或多個(gè)基類中

有某個(gè)同名成員,在派生類中對(duì)這個(gè)成員的訪問就可能出現(xiàn)二義性;同時(shí),如果一

個(gè)派生類是由兩個(gè)或多個(gè)基類派生出來的,而這幾個(gè)基類又有一個(gè)共同的基類,對(duì)

該基類進(jìn)行訪問時(shí),也可能會(huì)出現(xiàn)二義性。本題程序中,類C是由類A和類B多

繼承得到的派生類,但其自身函數(shù)show。中調(diào)用了display。函數(shù),而這個(gè)函數(shù)是同

時(shí)出現(xiàn)在類C的兩個(gè)基類中的,因此程序會(huì)出現(xiàn)二義性,編譯器將無法確定調(diào)用

哪一個(gè)display。函數(shù)來執(zhí)行操作,因此報(bào)錯(cuò)。解決二義性的通常辦法是通過作用

域運(yùn)算符"進(jìn)行限定。

28、有如下程序:#includc<iostrcam>usingnamespacestd;classbase{public:

virtualvoidfl(){cout<<"FlBase11;)virtualvoidf2(){cout<<"F2Base";));class

derive:publicbase{voidfl(){cout<<"F1Derive";)voidf2(intx){cout<<"F2

Derive'1;});intmain(){baseobjl,*p;deriveobj2;p=&obj2;p->fl();p->f2();

return0;)執(zhí)行后的輸出結(jié)果是()。

A、FlDeriveF2Base

B>FlDeriveF2Derive

C、FlBaseF2Base

D^FlBaseF2Dcrive

標(biāo)準(zhǔn)答案:I

知識(shí)點(diǎn)解析:本題主要考察C++中虛函數(shù)機(jī)制及其繼承過程中的要點(diǎn)。虛函數(shù)在

基類中加關(guān)鍵詞virtual聲明,在派生類中重新定義。如果派生類沒有覆蓋虛函

數(shù),則程序執(zhí)行中將會(huì)執(zhí)行基類的虛函數(shù)版本。本題程序中,建立了基類base,

其內(nèi)函數(shù)voidfl()和voidf2()均被聲明為虛函數(shù),并在調(diào)用時(shí)會(huì)顯式地發(fā)出聲明。

派生類derive利用public方式繼承基類base,并覆蓋其基類base中的虛函數(shù)fl()。

對(duì)于base中的虛函數(shù)f2(),由于派生類derive中的同名函數(shù)f2()中帶有參數(shù)in(x,

因此被編譯器認(rèn)為是函數(shù)重載,而不作虛函數(shù)覆蓋處理,所以實(shí)際上派生類derive

中包含兩個(gè)&()函數(shù),一個(gè)不帶參數(shù),調(diào)用時(shí)執(zhí)行基類base中的f2()函數(shù)版本,

個(gè)帶參數(shù)intx,調(diào)用時(shí)執(zhí)行重載后的版本。本題主函數(shù)中,定義了基類對(duì)象。

objl和基類指針*p,同時(shí)定義了派生類對(duì)象。obj20p指向obj2時(shí),“p->n()”函數(shù)

調(diào)用執(zhí)行派生類覆蓋后的版本,輸出FlDerive;行(1由于不帶參數(shù),因此執(zhí)

行未經(jīng)派生類覆蓋的函數(shù)版本,即基類base中的fl()函數(shù)版本。

29>有如下程序:#include<iostream.h>classx{protected:inta;public:x()

{a=l;});classxl:virtualpublicx{public:xl(){a+=l;cout<<a;});classx2:

virtualpublicx{public:x2(){a+=2;cout<<a;));classy:publicxl,publicx2

{public:y(){cout<<a<<endl;}};intmain(){yobj;returnO;}該程序運(yùn)行后的

輸出結(jié)果是()。

A、1

B、123

C、242

D、244

標(biāo)準(zhǔn)答案:8

知識(shí)點(diǎn)解析:本題程序中引入了虛基類。在主函數(shù)main中,執(zhí)行語句“yobj;"

時(shí),先執(zhí)行虛基類x的構(gòu)造函數(shù),使a=l;然后執(zhí)行類xl的構(gòu)造函數(shù),使a=2,并

輸出值2;再執(zhí)行類x2的構(gòu)造函數(shù),使a=4,并輸出值4;最后執(zhí)行類y的構(gòu)造函

數(shù),輸出值4。

30、下列關(guān)于getline。函數(shù)的描述中,不正確的是()。

A、getlineO函數(shù)是用來從鍵盤上讀取字符串的

B、getlineO函數(shù)讀取字符串長(zhǎng)度是受限制的

C、getline。函數(shù)讀取字符串時(shí),遇到終止符時(shí)就停止

D、getline。函數(shù)中所使用的終止符只能是換行符

標(biāo)準(zhǔn)答案:8

知識(shí)點(diǎn)解析:本題主要考察C++中輸入流成員函數(shù)的使用。輸入流的成員函數(shù)主

要包括open。、get。、getline()>read()^seekg。、teHg()和close。等函數(shù)。其中,

getline。函數(shù)從輸入流中讀取多個(gè)字符,并且允許指定輸入終止符,其原形為:

getline(char*line,intsize,char=、rf)。其中:函數(shù)的第1個(gè)參數(shù)是字符數(shù)組,用于

放置讀取的文本:第2個(gè)參數(shù)是本次讀取的最大字符個(gè)數(shù),通過改變?cè)搮?shù)可以設(shè)

置讀入的最大字節(jié)數(shù)即字符串長(zhǎng)度:第3個(gè)參數(shù)是分隔字符,作為讀取一行結(jié)束的

標(biāo)志,默認(rèn)為換行符通過改變?cè)搮?shù),可以自定義輸入形式和結(jié)束標(biāo)志。因

此可以判斷,題目選項(xiàng)D的敘述是錯(cuò)誤的,可以通過改變參數(shù)修改getline。函數(shù)中

所使用的終止符。

三、公共基礎(chǔ)填空題(本題共4題,每題7.0分,共4

分。)

31、對(duì)于長(zhǎng)度為n的線性表,若進(jìn)行順序查找,則時(shí)間復(fù)雜度為【】。

標(biāo)準(zhǔn)答案:0(n)

知識(shí)點(diǎn)解析:語句的頻度指的是該語句重復(fù)執(zhí)行的次數(shù)。一個(gè)算法中所有語句的頻

度之和構(gòu)成了該算法的運(yùn)行時(shí)間。長(zhǎng)度為n的線性表順序查找的平均次數(shù)為n/2,

則它的時(shí)間復(fù)雜度是O(n)。

32、已知某序列為{49,38,65,97,76,13,27),試采用該序列的第一個(gè)元素為

樞軸進(jìn)行快速排序,則經(jīng)過一趟快速排序之后所得到的序列為:【】。

標(biāo)準(zhǔn)答案:27133849659776

知識(shí)點(diǎn)解析:快速排序的思想是:從線性表中選取一元素,如本題中的49,將線

性表后面小于49的元素移到前邊,而前面大于49的元素移到后邊。本題中49是

第1個(gè)元素,因此只需將線性表后面小于49的元素移到前邊。

33、在選擇運(yùn)算所得到的結(jié)果關(guān)系中,所含的元組數(shù)不合【】原關(guān)系中的元組

數(shù)。

標(biāo)編答案:大于

知識(shí)點(diǎn)解析:選擇操作用于從關(guān)系中選出滿足選擇條件的元組的子集。因此,實(shí)施

選擇運(yùn)算后新關(guān)系的元組數(shù)不大于原關(guān)系中的元組數(shù)。

34當(dāng)輸入10,11,12時(shí),下面程序運(yùn)行結(jié)果是【】。#include<iostream>

usingnamespacestd;intmain(){inta,b,c,max;cin>>a>>b>>c;max=a;if(max<

B)max=b;if(max<C)max=c;cout<<max<<endI;return0;}

標(biāo)準(zhǔn)答案:12

知識(shí)點(diǎn)解析:此題考核if語句的基本使用。程序的功能是輸入3個(gè)整數(shù),利用if

語句,找出其中最大的一個(gè)整數(shù)并輸出。

四、填空題(本題共9題,每題L0分,共9分。)

35、求

溫馨提示

  • 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. 人人文庫(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)論