當前位置:才華齋>IT認證>計算機等級>

3月計算機等級考試二級C++筆試真題及答案

計算機等級 閱讀(1.99W)

2016年計算機C語言考試已經結束了,下面yjbys小編特為大家分享最新的計算機二級C++筆試題及答案,希望對大家有所幫助!

3月計算機等級考試二級C++筆試真題及答案

  一、選擇題

(1)下列關於棧敘述正確的是

A)棧頂元素最先能被刪除

B)棧頂元素最後才能被刪除

C)棧底元素永遠不能被刪除

D)以上三種說法都不對

(2)下列敘述中正確的是

A)有一個以上根結點的資料結構不一定是非線性結構

B)只有一個根結點的資料結構不一定是線性結構

C)迴圈連結串列是非線性結構

D)雙向連結串列是非線性結構

(3)某二叉樹共有7個結點,其中葉子結點只有1個,則該二叉樹的深度為

(假設根結點在第1層)

A)3

B)4

C)6

D)7

(4)在軟體開發中,需求分析階段產生的主要文件是

A)軟體整合測試計劃

B)軟體詳細設計說明書

C)使用者手冊

D)軟體需求規格說明書

(5)結構化程式所要求的基本結構不包括

A)順序結構

B)GOTO跳轉

C)選擇(分支)結構

D)重複(迴圈)結構

(6)下面描述中錯誤的是

A)系統總體結構圖支援軟體系統的詳細設計

B)軟體設計是將軟體需求轉換為軟體表示的過程

C)資料結構與資料庫設計是軟體設計的任務之一

D)PAD圖是軟體詳細設計的表示工具

(7)負責資料庫中查詢操作的資料庫語言是

A)資料定義語言

B)資料管理語言

C)資料操縱語言

D)資料控制語言

(8)一個教師可講授多門課程,一門課程可由多個教師講授。則實體教師

和課程間的聯絡是

A)1:1聯絡

B)1:m聯絡

C)m:1聯絡

D)m:n聯絡

(9)有三個關係R、S和T如下:

則由關係R和S得到關係T的操作是

A)自然連線

B)交

C)除

D)並

(10)定義無符號整數類為UInt,下面可以作為類UInt例項化值的是

A)-369

B)369

C)0.369

D)整數集合{1,2,3,4,5}

(11)為了提高函式呼叫的實際執行速度,可以將較簡單的函式定義為

A)行內函數

B)過載函式

C)遞迴函式

D)函式模板

(12)若AA為一個類,a為該類的非靜態資料成員,在該類的一個成員函式定義

中訪問a時,其書寫格式為

A)a

B)AA.a

C)a()

D)AA::a()

(13)當派生類從一個基類保護繼承時,基類中的一些成員在派生類中成為

保護成員,這些成員在基類中原有的訪問屬性是

A)任何

B)公有或保護

C)保護或私有

D)私有

(14)若要對Data類中過載的加法運算子成員函式進行宣告,下列選項中正

確的是

A)Data+(Data);

B)Data operator+(Data);

C)Data+operator(Data);

D)operator+(Data,Data);

(15)下列關於函式模板的描述中,正確的是

A)函式模板是一個例項函式

B)使用函式模板定義的函式沒有返回型別

C)函式模板的型別引數與函式的引數相同

D)通過使用不同的型別引數,可以從函式模板得到不同的例項函式

(16) C++系統預定義了4個用於標準資料流的物件,下列選項中不屬於此

類物件的是

A)cout

B)cin

C)cerr

D)cset

(17)Windows環境下,由C++源程式檔案編譯而成的目標檔案的副檔名是

A)cpp

B)exe

C)obj

D)lik

(18)字串“a+b=12nt”的長度為

A)12

B)10

C)8

D)6

(19)有如下程式:

#include

using namespace std;

int main(){

int f,f1=0,f2=1;

for(int i=3;i<=6;i++){

f=f1+f2;

f1=f2;f2=f;

}

cout<  return 0;

}

執行時的輸出結果是

A)2

B)3

C)5

D)8

(20)有如下程式:

#include

using namespace std;

int main(){

int a[6]={23,15,64,33,40,58};

int s1,s2;

s1=s2=a[0];

for(int* p=a+1;p  if(s1>*p) s1=*p;

if(s2<*p) s2=*p;

}

cout<  return 0;

}

執行時的輸出結果是

A)23

B)58

C)64

D)79

(21)有如下程式:

#include

using namespace std;

void f1(int& x,int& y) {int z=x; x=y; y=z;}

void f2(int x;int y) {int z=x; x=y; y=z;}

int main(){

int x=10,y=26;

f1(x,y);

f2(x,y);

cout<  return 0;

}

執行時的輸出結果是

A)10

B)16

C)26

D)36

(22)有如下程式:

#include

using namespace std;

class XA{

int a;

public:

static int b;

XA(int aa):a(aa) {b++;}

~XA(){}

int get(){return a;}

};

int XA::b=0;

int main(){

XA d1(2),d2(3);

cout<   return 0;

}

執行時的輸出結果是

A)5

B)6

C)7

D)8

(23)有如下程式:

#include

using namespace std;

class Point{

int x,y;

public:

Point(int x1=0,int y1=0):x(x1),y(y1){}

int get(){return x+y;}

};

class Circle{

Point center;

int radius;

public:

Circle(int cx,int cy,int r):center(cx,cy),raaius(r){}

int get(){return ()+radius;}

};

int main(){

Circle c(3,4,5);

cout<  return 0;

}

執行時的輸出結果是

A)5

B)7

C)9

D)12

(24)若要對類BigNumber中過載的型別轉換運算子long進行宣告,下列選

項中正確的是

A)operator long() const;

B)operator long(BigNumber);

C)long operator long() const;

D)long operator long(BigNumber);

(25)有如下函式模板定義:

template

T1 FUN(T2 n){return n*5.0;}

若要求以int型資料9作為函式實參呼叫該模板,並返回一個double型資料,

則該呼叫應表示為

A)FUN(9)

B)FUN<9>

C)FUN(9)

D)FUN<9>(double)

(26)下列語句都是程式執行時的第1條輸出語句,其中一條語句的輸出效

果與其他三條語句不同,該語句是

A)cout<  B)cout<  C)cout<  D)cout<  (27)下列關於析構

函式的描述中,錯誤的是

A)解構函式可以過載

B)解構函式由系統自動呼叫

C)每個物件的解構函式只被呼叫一次

D)每個類都有解構函式

(28)下列關於建構函式的描述中,錯誤的是

A)建構函式名與類名相同

B)建構函式可以有返回值

C)建構函式可以過載

D)每個類都有建構函式

(29)若PAT是一個類,則程式執行時,語句“PAT(*ad)[3];”呼叫PAT的構

造函式的次數是

A)0

B)1

C)2

D)3

(30)下列描述中,錯誤的是

A)公有繼承時基類中的公有成員在派生類中仍是公有成員

B)公有繼承時基類中的保護成員在派生類中仍是保護成員

C)保護繼承時基類中的公有成員在派生類中仍是公有成員

D)保護繼承時基類中的保護成員在派生類中仍是保護成員

(31)生成派生類物件時,派生類建構函式呼叫基類建構函式的條件是

A)無需任何條件

B)基類中顯式定義了建構函式

C)派生類中顯式定義了建構函式

D)派生類建構函式明確呼叫了基類建構函式

(32)下列關於派生類和基類的描述中,正確的是

A)派生類成員函式只能訪問基類的公有成員

B)派生類成員函式只能訪問基類的公有和保護成員

C)派生類成員函式可以訪問基類的所有成員

D)派生類對基類的預設繼承方式是公有繼承

(33)有如下類模板定義:

template

class BigNumber{

long n;

public:

BigNumber(T i):n(i){}

BigNumber operator+(BigNumber b){

return BigNumber(n+b.n);

}

};

己知b1、b2是BigNumber的兩個物件,則下列表達式中錯誤的是

A)bl+b2

B)b1+3

C)3+b1

D)3+3

(34)下列關於檔案流的描述中,正確的是

A)檔案流只能完成針對磁碟檔案的輸入輸出

B)建立一個檔案流物件時,必須同時開啟一個檔案

C)若輸入流要開啟的檔案不存在,將建立一個新檔案

D)若輸出流要開啟的檔案不存在,將建立一個新檔案

(35)有如下程式:

#include

using namespace std;

class Pair{

int m,n;

public:

Pair(int j,int k):m(j),n(k){}

int get() {return m;}

int get() const {return m+n;}

};

int main(){

Pair a(3,5);

const Pair b(3,5);

cout+()<  return 0;

}

執行時的輸出結果是

A)33

B)38

C)83

D)88

(23)有如下程式:

#include

using namespace std;

class Point{

int x,y;

public:

Point(int x1=0,int y1=0):x(x1),y(y1){}

int get(){return x+y;}

};

class Circle{

Point center;

int radius;

public:

Circle(int cx,int cy,int r):center(cx,cy),raaius(r){}

int get(){return ()+radius;}

};

int main(){

Circle c(3,4,5);

cout<  return 0;

}

執行時的輸出結果是

A)5

B)7

C)9

D)12

(24)若要對類BigNumber中過載的型別轉換運算子long進行宣告,下列選

項中正確的是

A)operator long() const;

B)operator long(BigNumber);

C)long operator long() const;

D)long operator long(BigNumber);

(25)有如下函式模板定義:

template

T1 FUN(T2 n){return n*5.0;}

若要求以int型資料9作為函式實參呼叫該模板,並返回一個double型資料,

則該呼叫應表示為

A)FUN(9)

B)FUN<9>

C)FUN(9)

D)FUN<9>(double)

(26)下列語句都是程式執行時的第1條輸出語句,其中一條語句的輸出效

果與其他三條語句不同,該語句是

A)cout<  B)cout<  C)cout<  D)cout<  (27)下列關於析構

函式的描述中,錯誤的是

A)解構函式可以過載

B)解構函式由系統自動呼叫

C)每個物件的解構函式只被呼叫一次

D)每個類都有解構函式

(28)下列關於建構函式的描述中,錯誤的是

A)建構函式名與類名相同

B)建構函式可以有返回值

C)建構函式可以過載

D)每個類都有建構函式

(29)若PAT是一個類,則程式執行時,語句“PAT(*ad)[3];”呼叫PAT的構

造函式的次數是

A)0

B)1

C)2

D)3

(30)下列描述中,錯誤的是

A)公有繼承時基類中的公有成員在派生類中仍是公有成員

B)公有繼承時基類中的保護成員在派生類中仍是保護成員

C)保護繼承時基類中的公有成員在派生類中仍是公有成員

D)保護繼承時基類中的保護成員在派生類中仍是保護成員

(31)生成派生類物件時,派生類建構函式呼叫基類建構函式的條件是

A)無需任何條件

B)基類中顯式定義了建構函式

C)派生類中顯式定義了建構函式

D)派生類建構函式明確呼叫了基類建構函式

(32)下列關於派生類和基類的描述中,正確的是

A)派生類成員函式只能訪問基類的公有成員

B)派生類成員函式只能訪問基類的公有和保護成員

C)派生類成員函式可以訪問基類的所有成員

D)派生類對基類的預設繼承方式是公有繼承

(33)有如下類模板定義:

template

class BigNumber{

long n;

public:

BigNumber(T i):n(i){}

BigNumber operator+(BigNumber b){

return BigNumber(n+b.n);

}

};

己知b1、b2是BigNumber的兩個物件,則下列表達式中錯誤的是

A)bl+b2

B)b1+3

C)3+b1

D)3+3

(34)下列關於檔案流的描述中,正確的是

A)檔案流只能完成針對磁碟檔案的輸入輸出

B)建立一個檔案流物件時,必須同時開啟一個檔案

C)若輸入流要開啟的檔案不存在,將建立一個新檔案

D)若輸出流要開啟的檔案不存在,將建立一個新檔案

(35)有如下程式:

#include

using namespace std;

class Pair{

int m,n;

public:

Pair(int j,int k):m(j),n(k){}

int get() {return m;}

int get() const {return m+n;}

};

int main(){

Pair a(3,5);

const Pair b(3,5);

cout+()<  return 0;

}

執行時的輸出結果是

A)33

B)38

C)83

D)88

(23)有如下程式:

#include

using namespace std;

class Point{

int x,y;

public:

Point(int x1=0,int y1=0):x(x1),y(y1){}

int get(){return x+y;}

};

class Circle{

Point center;

int radius;

public:

Circle(int cx,int cy,int r):center(cx,cy),raaius(r){}

int get(){return ()+radius;}

};

int main(){

Circle c(3,4,5);

cout<  return 0;

}

執行時的輸出結果是

A)5

B)7

C)9

D)12

(24)若要對類BigNumber中過載的型別轉換運算子long進行宣告,下列選

項中正確的是

A)operator long() const;

B)operator long(BigNumber);

C)long operator long() const;

D)long operator long(BigNumber);

(25)有如下函式模板定義:

template

T1 FUN(T2 n){return n*5.0;}

若要求以int型資料9作為函式實參呼叫該模板,並返回一個double型資料,

則該呼叫應表示為

A)FUN(9)

B)FUN<9>

C)FUN(9)

D)FUN<9>(double)

(26)下列語句都是程式執行時的第1條輸出語句,其中一條語句的'輸出效

果與其他三條語句不同,該語句是

A)cout<  B)cout<  C)cout<  D)cout<  (27)下列關於析構

函式的描述中,錯誤的是

A)解構函式可以過載

B)解構函式由系統自動呼叫

C)每個物件的解構函式只被呼叫一次

D)每個類都有解構函式

(28)下列關於建構函式的描述中,錯誤的是

A)建構函式名與類名相同

B)建構函式可以有返回值

C)建構函式可以過載

D)每個類都有建構函式

(29)若PAT是一個類,則程式執行時,語句“PAT(*ad)[3];”呼叫PAT的構

造函式的次數是

A)0

B)1

C)2

D)3

(30)下列描述中,錯誤的是

A)公有繼承時基類中的公有成員在派生類中仍是公有成員

B)公有繼承時基類中的保護成員在派生類中仍是保護成員

C)保護繼承時基類中的公有成員在派生類中仍是公有成員

D)保護繼承時基類中的保護成員在派生類中仍是保護成員

(31)生成派生類物件時,派生類建構函式呼叫基類建構函式的條件是

A)無需任何條件

B)基類中顯式定義了建構函式

C)派生類中顯式定義了建構函式

D)派生類建構函式明確呼叫了基類建構函式

(32)下列關於派生類和基類的描述中,正確的是

A)派生類成員函式只能訪問基類的公有成員

B)派生類成員函式只能訪問基類的公有和保護成員

C)派生類成員函式可以訪問基類的所有成員

D)派生類對基類的預設繼承方式是公有繼承

(33)有如下類模板定義:

template

class BigNumber{

long n;

public:

BigNumber(T i):n(i){}

BigNumber operator+(BigNumber b){

return BigNumber(n+b.n);

}

};

己知b1、b2是BigNumber的兩個物件,則下列表達式中錯誤的是

A)bl+b2

B)b1+3

C)3+b1

D)3+3

(34)下列關於檔案流的描述中,正確的是

A)檔案流只能完成針對磁碟檔案的輸入輸出

B)建立一個檔案流物件時,必須同時開啟一個檔案

C)若輸入流要開啟的檔案不存在,將建立一個新檔案

D)若輸出流要開啟的檔案不存在,將建立一個新檔案

(35)有如下程式:

#include

using namespace std;

class Pair{

int m,n;

public:

Pair(int j,int k):m(j),n(k){}

int get() {return m;}

int get() const {return m+n;}

};

int main(){

Pair a(3,5);

const Pair b(3,5);

cout+()<  return 0;

}

執行時的輸出結果是

A)33

B)38

C)83

D)88

  二、填空題

(1)有序線性表能進行二分查詢的前提是該線性表必須是 【1】 儲存的。

(2)一棵二叉樹的中序遍歷結果為DBEAFC,前序遍歷結果為ABDECF。則後

序遍歷結果為 【2】 。

(3)對軟體設計的最小單位(模組或程式單元)進行的測試通常稱為 【3】

測試。

(4)實體完整性約束要求關係資料庫中元組的 【4】 屬性值不能為空。

(5)在關係A(S,SN,D)和關係B(D,CN,NM)中,A的主關鍵字是S,B的主關鍵

字是D,則稱 【5】 是關係A的外碼。

(6)若有定義語句“int x=10,y=20,z=20;”,則表示式x>z&&y==z的值為

【6】 。

(7)有如下語句序列:

int x=-10;while(++x){ }

執行時while迴圈體的執行次數為 【7】 。

(8)有如下語句序列:

int arr[2][2]={{9,8},{7,6}};

int *p=arr[0]+1; cout<<*p<  執行時的輸出結果是【8】 。

(9)函式fun的功能是將一個數字字串轉換為一個整數,請將函式補充完

整。

int fun(char *str){

int num=0;

while(*str){

num*=10;

num+= 【9】 ;

str++;

}

return num;

}

(10)若要將函式“void FriFun();”宣告為類MyClass的友元函式,則應

在類MyClass的定義中加入語句 【10】 。

(11)下列程式的輸出結果為012,請根據註釋將橫線處的缺失部分補充完

整。

#include

using namespace std;

class Test{

public:

Test(int a) {data=a;}

~Test() {}

void print(){cout<  private:

int data;

};

int main(){

Test t[3]={ 【11】 };//對有3個元素的Test類物件陣列t初始化t

[i]t();

for(int i=0;i<3;i++)

return 0;

}

(12)請在橫線處填寫派生類Derived的繼承方式,使得程式的輸出結果為

Base。

#include

using namespace std;

class Base{

public:

void print(){cout<<"Base";}

};

class Derived: 【12】 Base{};

int main(){

Derived d;

t();

return 0;

}

(13)下列程式的輸出結果為1 2.3 2 4.6,請將橫線處的缺失部分補充完整。

#include

using namespace std;

class Base{

public:

Base(int a):idata(a){}

void print(){cout<  private:

int idata;

};

class Derived:public Base{

public:

Derived(int a;double b): 【13】 ,ddata(b){}

void print(){Base::print();cout<  private:

double ddata;

};

int main(){

Derived dl(1,2.3),d2(2,4.6);

t();

t();

return 0;

}

(14)下列程式的輸出結果為-5/8 -3/4,請將橫線處的缺失部分補充完整

#include

using namespace std;

class Fraction{ //“分數”類

public:

Fraction(double a,double b):num(a),den(b){}

~Fraction(){}

//過載取負運算子“-”,返回一個分數物件,其分子是原來分子的相反數

Fraction operator-(){

【14】

return f;

}

void print(){ cout<  private:

double num; //分子

double den; //分母

};

int main(){

Fraction f1(5;8),f2(3,4);

(-f1)t();(-f2)t();

return 0;

}

(15)函式Min的功能是返回具有n個元素的陣列array中的最小值。請將橫

線處的缺失部分補充完整,使得程式的輸出結果為1.24。

#include

using namespace std;

template

T Min(T* array,int n){

T min=array[0];

for(int i=1;i  if(array[i]  return min;

}

int main(){

double arr[8]={5.2,48.45,41.01,42,51.2,1.24,14.12,42};

cout<< 【15】 ;

return 0;

}

  【參考答案】

選擇題

ABDDB  ACDCB

CDAAA  ADCAD

BDBCD  CDCCA

BBCDB  CDDCB

填空題

順序 DEBFCA 單元 主鍵 D 3 1217 0,9 4 20,0 i-1 double avg (double

a,double b) 13715 emodew 123456