當前位置:才華齋>計算機>計算機二級>

全國計算機二級C++語言程式設計考試選擇題及答案

計算機二級 閱讀(2.02W)

全國計算機二級選擇題是一個大分模組,很多很多考生在備考的時候,也是著重練習選擇題試題的,下面就是小編跟大家分享全國計算機二級C++語言程式設計考試選擇題及答,歡迎大家閱讀!

全國計算機二級C++語言程式設計考試選擇題及答案

1.下列資料結構中,屬於非線性結構的是(  )。

A.迴圈佇列

B.帶鏈佇列

C.二叉樹

D.帶鏈棧

2.下列資料結構中,能夠按照“先進後出”原則存取資料的是(  )。

A.迴圈佇列

B.棧

C.佇列

D.二叉樹

3.對於迴圈佇列,下列敘述中正確的是(  )。

A.隊頭指標是固定不變的

B.隊頭指標一定大於隊尾指標

C.隊頭指標一定小於隊尾指標

D.隊頭指標可以大於隊尾指標,也可以小於隊尾指標

4.演算法的空間複雜度是指(  )。

A.演算法在執行過程中所需要的計算機儲存空間

B.演算法所處理的資料量

C.演算法程式中的語句或指令條數

D.演算法在執行過程中所需要的臨時工作單元數

5.軟體設計中劃分模組的一個準則是(  )。

A.低內聚低耦合

B.高內聚低耦合

C.低內聚高耦合

D.高內聚高耦合

6.下列選項中不屬於結構化程式設計原則的是(  )。

A.可封裝

D.自頂向下

C.模組化

D.逐步求精

7.軟體詳細設計產生的如下圖所示。該圖是(  )。

A.N—S圖

C.程式流程圖

D.E—R圖

8.資料庫管理系統是(  )。

A.作業系統的一部分

B.在作業系統支援下的系統軟體

C.一種編譯系統

D.一種作業系統

9.在E—R圖中,用來表示實體聯絡的圖形是(  )。

A.橢圓圖

B.矩形

C.菱形

D.三角形

10.有3個關係R、S和T如下表所示:

其中關係T由關係R和s通過某種操作得到,該操作為(  )。

A.選擇

B.投影

C.交

D.並

11.4種基本結構中,能簡化大量程式程式碼行的是(  )。

A.順序結構

B.分支結構

C.選擇結構

D.重複結構

12.下列關於棧的描述正確的是(  )。

A.在棧中只能插入元素而不能刪除元素

B.在棧中只能刪除元素而不能插入元素

C.棧是特殊的線性表,只能在一端插入或刪除元素

D.棧是特殊的線性表,只能在一端插入元素,而在另一端刪除元素

13.下列有關資料庫的敘述,正確的是(  )。

A.資料處理是將資訊轉化為資料的過程

B.資料的物理獨立性是指當資料的邏輯結構改變時,資料的儲存結構不變

C.關係中的每一列稱為元組,一個元組就是一個欄位

D.如果一個關係中的屬性或屬性組並非該關係的關鍵字,但它是另一個關係的關鍵字,則稱其為本關係的外關鍵字

14.概要設計中要完成的事情是(  )。

A.系統結構和資料結構的設計

B.系統結構和過程的設計

C.過程和介面的設計

D.資料結構和過程的設計

15.下面排序演算法中,平均排序速度最快的是(  )。

A.氣泡排序法

B.選擇排序法

C.交換排序法

D.堆排序法

16.已知函式FA呼叫函式FB,若要把這兩個函式定義在同一個檔案中,則(  )。

必須定義在FB之前

必須定義在FA之前

C.若FA定義在FB之後,則FA的原型必須出現在FB的定義之前

D.若FB定義在FA之後,則FB的原型必須出現在FA的定義之前

17.有如下兩個類定義:

ClaSSAA{};

classBB{

AAv1,*v2;

BBv3;

int*v4;

};

其中有一個成員變數的定義是錯誤的,這個變數是(  )。

A.v1

B.v2

C.v3

D.v4

18.有如下類定義:

classXX{

intxdata;

public:

XX(intn=0):xdata(n){}

};

classYY:publicXX{

intydata;

public:

YY(intm=0,intn=O):XX(m),ydata(n){}

};

YY類的物件包含的資料成員的個數是(  )。

A.1

B.2

C.3

D.4

19.下列關於運算子函式的描述中,錯誤的是(  )。

A.運算子函式的名稱總是以0perator為字首

B.運算子函式的引數可以是物件

C.運算子函式只能定義為類的成員函式

D.在表示式中使用過載的運算子相當於呼叫運算子過載函式

20.下列關於模板形參的描述中,錯誤的是(  )。

A.模板形參表必須在關鍵字template之後

B.模板形參表必須用括弧(  )括起來

C.可以用class修飾模板形參

D.可以用typename修飾模板形參

21.在下列列舉符號中,用來表示“相對於當前位置”檔案定位方式的是(  )。

_base::cur

_base::beg

_base::0ut

_base::end

22.下列字串中可以用作C++識別符號的是(  )。

A.2009var

-2009

D.123

23.下列列舉型別的定義中,包含列舉值3的是(  )。

test{RED,YELLOW,BLUE,BLACK};

test{RED,YELLOW=4,BLUE,BLACK);

test{RED=-1,YELLOW,BLUE,BLACK};

test{RED,YELLOW=6,BLUE,BLACK);

24.有如下程式段:

inti=1:

while(1){

i++:

if(i==10)break:

if(i%2==0)cout<<’*’:

}

執行這個程式段輸出字元*的個數是(  )。

A.10

B.3

C.4

D.5

25.已知陣列arr的定義如下:

intarr[5]={1,2,3,4,5};下列語句中輸出結果不是2的是(  )。

<<*arr+1

intfib(intn){

if(n==0)returnl;

elseif(n==l)return2:

elsereturnfib(n-1)+fib(n-2);

}

若執行函式呼叫表示式fib(2),函式fib被呼叫的次數是(  )。

A.1

B.2

C.3

D.4

le是一個類,執行下面語句後,呼叫Sample類的建構函式的次數是(  )。

Samplea[2],*p=newSample;

A.0

B.1

C.2

D.3

28.下列關於虛基類的描述中,錯誤的是(  )。

A.使用虛基類可以消除由多繼承產生的二義性

B.構造派生類物件時。虛基類的建構函式只被呼叫一次

C.宣告“classB:virtualpublicA”說明類B為虛基類

D.建立派生類物件時,首先呼叫虛基類的建構函式

29.將運算子過載為類成員函式時,其引數表中沒有引數,說明該運算子是(  )。

A.不合法的運算子

B.一元運算子

C.無運算元的運算子

D.二元運算子

30.有如下模板宣告:

templateclassA;

下列宣告中,與上述宣告不等價的是(  )。

lateclassA;

lateclassA;

lateclassA;

lateclassA;

31.下列關於C++流的描述中,錯誤的是(  )。

>>’A’表示式中輸出字元A

函式可以檢測是否到達檔案尾

C.對磁碟檔案進行流操作時,必須包含標頭檔案fstream

D.以ios_base::Out模式開啟的檔案不存在時,將自動建立一個新檔案

32.有如下程式:

#include

usingnamespacestd;

classToy{

public:

Toy(char*_n){strcpy(name,_n);count++;)

~Toy(  ){count一一;)

char*GetName(  ){returnname;}

staticintgetCount(  ){returncount;)

private:

charname[10];

staticintcount;

};

intToy::count=0;

intmain(  ){

Toyt1("snoopy"),t2("Mickey"),t3("Barbie");

tout

)

執行時的輸出結果是(  )。

A.1

B.2

C.3

D.執行時出錯

33.有如下程式:

#include

usingnamespacestd;

classA{

public:

A(inti):rl(i){)

voidprint(  ){cout<<’E’

intr1:

};

intmain(  ){

Aal(2);constAa2(4);,

t(  );t(  );

return0;

}

執行時的輸出結果是(  )。

A.執行時出錯

B.E2一C16一

C.C4一Cl6一

D.E2一E4—

34.有如下程式:

#include

usingnamespacestd;

className{

charname[20];

public:

Name(  ){

strcpy(name,"");cout<<’?’;

}

Name(char*fname){

strcpy(name,fname);cout<<’?’;

}

};

intmain(  ){

Namenames[3]={Name(”張三”),Name(”李四”));

return0;

}

執行此程式輸出符號?的個數是(  )。

A.O

B.1

C.2

D.3

35.有如下程式:

#include

usingnamespacestd;

classAA{

public;

AA(  ){cOUt<<’1’;)

};

classBB:publicAA{

intk;

public:

BB(  ):k(0){tout<<’12’;}

BB(intn):k(n)(cout<<’3’;)

};

intmain(  ){

BBb(4),c;

return0;

}

執行時的輸出結果是(  ).

A.1312

B.132

C.32

D.1412

36.有如下程式:

#include

usingnamespacestd;

classC1{

public:

~C1(  ){cout<<1;)

};

classC2:publicC1{

public:

~C2(  ){cout<<2;)

};

intmain(  ){

C2cb2;

C1*cb1:

return0;

}

執行時的輸出結果是(  )。

A.121

B.21

C.211

D.12

37.有如下程式:

#include

usingnamespacestd;

classPublication{//出版物類

charname[30];

public:

Publication(char*name=”未知名稱”){

~strcpy(this一>name,name);

}

constchar*getName(  )const{returnname;}

virtualconstchar*getType(  )const{return”未知型別”;}

};

classBook:publicPublication{//書類

public:

Book(char*name):Publication(name){}

virtualconstchar*getType(  )const{return"書";}

};

voidshowPublication(Publication&p){

cout

}

intmain(  ){

Bookbook(”精彩人生”);

showPublication(book);

return0;

}

執行時的輸出結果是(  )。

A.未知型別:未知名稱

B.未知型別:精彩人生

C.書:未知名稱

D.書:精彩人生

38.下列關於運算子過載的描述中,錯誤的是(  )。

A.::運算子不能過載

B.型別轉換運算子只能作為成員函式過載

C.將運算子作為非成員函式過載時必須定義為友元

D.過載口運算子應完成“下標訪問”操作

39.有如下程式:

#include

#includediomanip>

usingnamespacestd;

intmain(  ){

ints[]={123,234);

cout

}

執行時的輸出結果是(  )。

A.123

B.***123

234234

C.***123

D.***123

***234234***

40.有如下類定義:

classA{

char*a;

public:

A(  ):a(O){}

A(char*aa){//把aa所指字串拷貝到a所指向的儲存空間

a=__;

strcpy(a,aa);

}

~A(  ){[]a;}

};

橫線處應填寫的表示式是(  )。

har[strlen(aa)+1]

[strlen(aa)+1]

[strlen(aa)]

har[sizeof(aa)-1]

1.C。【解析】佇列是一種允許在一端進行插入,而在另一端進行刪除的線性表。棧也是一種特殊的線性表,其插入與刪除只能在線性表的一端進行。

2.B。【解析】在棧中,允許插入與刪除的一端稱為棧頂,而不允許插入與刪除的另一端稱為棧底。棧頂元素總是最後被 插入的元素,從而也是最先能被刪除的元素;棧底元素總是最先被 插入的元素,從而也是最後才能被刪除的元素。即棧是按照“先進後出”或“後進先出”的原則組織資料的。

3.D。【解析】所謂迴圈佇列,就是將佇列儲存空間的最後一個位置繞到第一個位置,形成邏輯上的環狀空間,供佇列迴圈使用。在迴圈佇列結構中,當儲存空間的最後一個位置已被使用而再要進行入隊運算時,只要儲存空間的第一個位置空閒,可將元素加入到第一個位置,即將儲存空閒的第一個位置作為隊尾。

4.A。【解析】一個演算法的空間複雜度,一般是指執行這個演算法所需要的記憶體空間。

5.B。【解析】耦合性與內聚性是模組獨立性的兩個定性標準,耦合與內聚是相互關聯的。在程式結構中,各個模組的內聚性越強,則耦合性越弱。一般較優秀的軟體設計,應儘量做到高內聚、低耦合,即減弱模組之間的耦合性和提高模組內的內聚性,有利於提高模組的獨立性。

6.A。【解析】結構化程式設計方法的主要原則可以概括為自頂向下、逐步求精、模組化、限制使用goto語句等。

7.C。【解析】N—S圖是由若干基本框圖構成的流程圖,其特點是沒有流程線;PAD圖即問題分析圖(ProblemAnalysisDiagram),它是一種由左往右展開的二維樹型結構;程式流程圖用於描述問題解決的過程和步驟,其中方框表示處理步驟、菱形框表示邏輯判斷、箭頭表示控制流向;E—R圖即實體一聯絡圖(EntityRelationshipDiagram),用來描述現實世界的概念模型,構成元素有實體、屬性和聯絡,分別用矩形、橢圓形和菱形表示。本題答案為C。

8.B。【解析】資料庫管理系統是資料庫的機構,它是一種系統軟體,負責資料庫中的資料組織、資料操縱、資料維護、控制及保護和資料服務等。

9.C。【解析】E—R圖中用矩形表示實體(等同於表),用橢圓形表示實體的屬性(等同於表中欄位),用菱形表示實體關係(等同於外來鍵)。

10.D。【解析】兩個相同結構關係的並是由屬於這兩個關係的元組組成的集合。

11.D。【解析】重複結構又稱為迴圈結構,它根據給定的條件,判斷是否需要重複執行某一相同或類似的程式段,利用重複結構可以簡化大量的程式行。

12.C。【解析】根據資料結構對棧的定義及其特點可知:棧是限定只在表尾進行插入或刪除操作的線性表,因此棧是先進後出的線性表,對棧的`插入與刪除操作,不需要改變棧底元素。

13.D。【解析】資料處理是指將資料轉換成資訊的過程,故選項A敘述錯誤;資料的物理獨立性是指資料的物理結構的改變不會影響資料庫的邏輯結構,故選項B敘述錯誤;關係中的行稱為元組,對應儲存檔案中的記錄,關係中的列稱為屬性,對應儲存檔案中的欄位,故選項c敘述錯誤。

14.A。【解析】軟體概要設計的基本任務是:設計軟體系統結構、資料結構及資料庫設計、編寫概要設計文件、概要設計文件評審。

15.D。【解析】在各種排序方法中,快速排序法和堆排序法的平均速度是最快的,因為它們的時間複雜度都是O(nlog2n),其他的排序演算法的時間複雜度大都是O(n2)。

16.D。【解析】主要考查函式呼叫時,是否設定函式原型。在C++中若被呼叫的函式放在主調函式之後,需將被呼叫函式原型放在主調函式之前,否則不需要。

17.C。【解析】本題主要考查類物件的定義,類的物件一般放在類結構體外或在主函式中定義,而不能放在類定義的結構體中,但自身類的指標可以,本題BBv3不能被定義於類體內。

18.B。【解析】本題主要考查派生類的繼承方式。該題為公有繼承,它包含基類中全部資料成員和除了構造、解構函式之外的全部成員函式,本題資料成員的個數即為2。

19.C。【解析】該題主要考查運算子函式的定義及運算子過載時應注意事項,運算子過載是函式過載的一種特殊情況。

20.B。【解析】主要考查函式模板的定義。宣告一個函式模板的格式為“template<<模板形參表宣告>><函式宣告>”,其中<模板形參>具有typename<引數名>、class<引數名>、<型別修飾><引數名>三種形式,形參用“<>”括起來。

21.A。【解析】主要考查檔案流的定位問題。冀中iosbase::beg表示相對於檔案首,ios_base::cur表示相對於當前位置(負數表示當前位置之前),ios_base::end表示相對於檔案尾,ios_base::out表示在檔案流的建立中為檔案的輸出而開啟。

22.D。【解析】識別符號主要由數字、字母、下畫線組成,且首位必為字母或下畫線,同時識別符號不能是關鍵字。

23.A。【解析】本題主要考查列舉型別的定義,其中幾個列舉值全部未賦常量值時,它們自左至右分別與整數0,1,…,n-1對應。由此可判斷本題答案。

24.C。【解析】本題主要考查while的作用。只有i為偶數時才輸出“*”,而本題只有2,4,6,8時才滿足條件,而當i為10時程式結束,即只有4個“*”被輸出。

25.D。【解析】本題主要考查指標的特殊含義。例*px+1指取px所指物件內容加1,*(px+1)指px指標加1,並取結果指標內容而*px則指px的首元素。

26.C。【解析】針對遞迴呼叫的含義。當n為2時有fib(o),fib(1),fib(2)被呼叫,且fib(O),fib(1)時呼叫結束,即共3次。

27,D。【解析】建構函式在物件被建立時由系統自動呼叫,本題共建立了3個物件。

28.C。【解析】本題針對虛基類的定義及特點考查。虛基類的宣告為“class<類名>:virtual<繼承方式><基類名>”,即本題的A為虛基類。

29.B。【解析】一元或二元運算子函式作為成員函式時,第一運算元就是物件本身,並不出現在引數表中,即第一運算元僅以this指標的形式隱會於引數表中,因此對於一元運算子引數表是空的;而對於二元運算子引數表中只有一個引數,它代表第二運算元。

30.D。【解析】模板形參有typename<引數名>、class<引數名>、<型別修飾><引數名>3種形式,即typename與class通用。

31.A。【解析】在C++中輸入用“cin>>”,輸出用“<32.C。【解析】解構函式主要用於最後函式的釋放空間。本題在已輸出ount()後才呼叫即不影響所輸結果。

33.B。【解析】const關鍵字可以用於參與對過載函式的區分。過載的原則是常物件呼叫常成員函式,一般物件呼叫一般成員函式。

34.D。【解析】對有參與無參建構函式的呼叫。當names[2]為空時調無參建構函式,而names[0],names[1]呼叫有參建構函式,即輸出3個“?”。

35.A。【解析】當基類的建構函式預設或無參時,派生類可省略對基類建構函式的顯示呼叫,但系統會自動呼叫該類的預設建構函式,且先呼叫基類的建構函式後呼叫派生類的建構函式。

36.B。【解析】在基類與派生類中,解構函式在派生類先呼叫,而本題有兩個不同類物件,對於cb2需先調c2的解構函式,再調c1的解構函式。而對於*cb1由於沒有指標性解構函式,它將不參加傳遞資料。

37.D。【解析】因為getType是虛擬函式,所以ype()執行繼承類的getType函式,輸出“書”;ame()執行基類的getName函式,輸出“精彩人生”。總共輸出“書:精彩人生”,故選D。

38.C。【解析】除了·、*、→*、::、?:這五個運算子外,其他運算子都可以過載。=、[]、()、→以及所有的型別轉換運算子只能作為成員函式過載。口作為成員函式過載時,應完成“下標訪問”操作,使得向指定下標處的元素賦值或取值成為可能。

39.B。【解析】setw()為填充字元控制,僅對緊接著它的字元起作用,當輸出的字元寬度小於setw()預留的字元數時,需用setw()設定的字元給予填充。

40.A。【解析】對動態分配儲存空間的考查,在C++中,回車鍵需計一字元,即總的長度為strlen(aa)+1。