計算機二級

當前位置 /首頁/計算機/計算機二級/列表

計算機二級《C++》上機考前衝刺試題

以下是應屆畢業生考試網小編整理的計算機二級的文章" target="_blank" >計算機二級《C++》上機考前衝刺試題,更多計算機二級考試內容請關注yjbys考試網。

計算機二級《C++》上機考前衝刺試題

一、選擇題(每小題1分,共40分)

1、一個教師可講授多門課程,一門課程可由多個教師講授。則實體教師和課程間的聯絡是( )。

A.1:1聯絡

B.1:m聯絡

C.m:1聯絡

D.m:n聯絡

2、 Tilil程式的執行結果是( )。

#include void main()

{

int i=1:

while(i<=8)

if(++i%3 1=2)continue: else eout< }

A.25

B.36

C.258

D.369

3、下列關於線性連結串列的敘述中,正確的是( )。

A.各資料結點的儲存空間可以不連續,但它們的儲存順序與邏輯順序必須一致

B.各資料結點的儲存順序與邏輯順序可以不一致,但它們的儲存空間必須連續

C.進行插入與刪除時,不需要移動表中的元素

D.以上說法均不正確

4、對於一個類定義,下列敘述中錯誤的是( )。

A.如果沒有定義拷貝建構函式,編譯器將生成一個拷貝建構函式

B.如果沒有定義預設的建構函式,編譯器一定將生成一個預設的建構函式

C.如果沒有定義建構函式,編譯器將生成一個預設的建構函式和一個拷貝建構函式

D.如果已經定義了建構函式和拷貝建構函式,編譯器不會生成任何建構函式

5、為了使類中的某個成員不能被類的物件通過成員操作符訪問,則不能把該成員的訪問許可權定義為( )。

ic

ected

ate

ic

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

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

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

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

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

7、 一個棧的初始狀態為空。現將元素1、2、3、4、5、A、B、C、D、E依次入棧,然後再依次出棧,則元素出棧的順序是(  )。

A.12345ABCDE

A54321

El2345

D.5432lEDCBA

8、在資料管理技術發展的三個階段中,資料共享最好的是(  )。

A.人工管理階段

B.檔案系統階段

C.資料庫系統階段

D.三個階段相同

9、下面程式的執行結果為( )。

#include

void main() {

char a=’3’: switch(8)

{

case '3':cout<<”3”:

case '2':cout<<”2”;break; default:cout<<”l”;

}

}

A.3

B.321

C.31

D.32

10、資料庫設計中反映使用者對資料要求的模式是( )。

A.內模式

B.概念模式

C.外模式

D.設計模式

11、一棵二元樹共有25個結點,其中5個是葉子結點,則度為1的結點數為( )。

A.16

B.10

C.6

D.4

12、 下列( )是C++語言的有效識別符號。

B.N0.1

C.12345

13、 下列關於運算子過載的敘述中,錯誤的是( )。

A.有的運算子可以作為非成員函式過載

B.所有的運算子都可以通過過載而被賦予新的含義

C.不得為過載的運算子函式的引數設定預設值

D.有的運算子只能作為成員函式過載

14、 F列關於棧的敘述正確的是( )。

A.棧按“先進先出”組織資料

B.棧按“先進後出”組織資料

C.只能在棧底插入資料

D.不能刪除資料

15、 軟體生命週期中的活動不包括( )。

A.市場調研

B.需求分析

C.軟體測試

D.軟體維護

16、 下面對靜態資料成員的描述中,正確的是( )。

A.靜態資料成員是類的所有物件共享的資料

B.類的每個物件都有自己的靜態資料成員

C.類的不同物件有不同的靜態資料成員值

D.靜態資料成員不能通過類的物件呼叫

17、 軟體按功能可以分為:應用軟體、系統軟體和支撐軟體(或工具軟體)。下面屬於應用軟體的是(  )。

A.編譯程式

B.作業系統

C.教務管理系統

D.彙編程式

18、下面敘述中錯誤的是(  )。

A.軟體測試的目的是發現錯誤並改正錯誤

B.對被除錯的程式進行“錯誤定位”是程式除錯的必要步驟

C.程式除錯通常也稱為Debug

D.軟體測試應嚴格執行測試計劃,排除測試的隨意性

19、 層次型、網狀型和關係型資料庫劃分原則是( )。

A.己錄長度

B.檔案的大小

C.聯絡的複雜程度

D.資料之間的聯絡方式

20、 下面程式的執行結果為( )。

#include void swap(int&a,int B. int temp;

temp=a++: a=b:

b=temp;

}

void main()

{

im a=2,b=3; swap(a,B.;

eout< }

A.2,3

B.3,2

C.2,2

D.3,3

21、 有如下程式:

#inClude using namespaCe std; Class MyClass{

publiC:

MyClass(int X):val(X){}

void Print()Const}tout<<”Const:val=”< private:

int val; };

int main(){

Const MyClass objl(10); MyClass obj2(20);

t(); t(); retum 0;

}

執行這個程式的輸出結果是( )。

=10 Const:val=20

t:val=10 Const:val=20

t:val=10 val=20

=10 val=20

22、 一個工作人員可以使用多臺計算機,而一臺計算機可被多個人使用,則實體工作人員與實體計算機之間 的聯絡是( )。

A.一對一

B.一對多

C.多對多

D.多對一

23、下列程式的執行結果是( )。

#include class Loeation{

private:

int X,Y;

public: void init(int=0,int=0);

void valueX(int val){X=val;} int valueX(){returnx;}

void valueY(int val){Y=val;} int valueY(){return Y;}};

void Location::init(int initX,int initY) {X=initX;

Y=initY4}

void main(X

{Location A,B;

();

e X(5);

cout< e Y(4);

eout< }

A.5

0

6

4

B.0

0

6

4

C.5

0

6

2

D.0

0

6

2

24、 下面程式的執行結果為( )。

#include class A

static int n;

public:

A(){n=1;}

A(int num){n=hum;} void print(){cout< int A::n=2;

void main() {

A a,b(3); t(); t();

coutB.13

C.23

D.33

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

A.資料定義語言

B.資料管理語言

C.資料操縱語言

D.資料控制語言

26、 已知列舉型別宣告語句為:

enum COl,OR{WHITE,YELLOW,GREEN=5,RED,BLACK=10};

則下列說法中錯誤的是( )。

A.列舉常量YELLOW的值為1

B.列舉常量RED的值為6

C.列舉常量BLACK的值為10

D.列舉常量WHITE的值為1

27、 有如下程式:

#include

using namespace std;

class Base

{

public:

void funl(){cout<<”Basen”;}

virtual void fun2(){eout<<”Basen”;}

};

class Derived:public Base{

public:

void funl(){eout<<”Derived、n”;}

void fura(){eout<.<”Derivedn”;}

};

void f(Base&B.}();2();}

int main()

{

Derived obj;

f(obj);

return 0;

}

執行這個程式的輸出結果是(  )。

Base

Derived

ved

Base

ved

Derived

28、有如下類宣告:

class SAMPLE

{

int n:

public:

SAMPLE(int i=0):n(i){}

void setValue(int nO);

};

下列關於9etValue成員函式的定義中,正確的是(  )。

LE::setValue(int nO){n=n0;}

SAMPLE::setValue(int胡){n=n0;

setValue(int nO){n=n0;}

alue(int nO){n=n0;}

29、 下列關於c++函式的說明中,正確的是( )。

A.行內函數就是定義在另一個函式體內部的函式

B.函式體的最後一條語句必須是return語句

C.標準c++要求在呼叫一個函式之前,必須先宣告其原型

D.編譯器會根據函式的返回值型別和引數表來區分函式的不同過載形式

30、 有如下程式:

#inClude using namespaCe std; Class MusiC{

publiC:

void setTitle(Char*str){strCpy(title,str);} proteCted:

Char type[10]; private:

Char title[20];

Class Jazz:publiC MusiC{ publiC:

void set(Char*str){

strCpy(type,”Jazz'’);//① strCpy(title,str);//②

} }; 下列敘述中正確的是(  )。

A.程式編譯正確

B.程式編譯時語句①出錯

C.程式編譯時語句②出錯

D.程式編譯時語句①和②都出錯

31、 在公有繼承的情況下,允許派生類直接訪問的基類成員包括(  )。

A.公有成員

B.公有成員和保護成員

C.公有成員、保護成員和私有成員

D.保護成員

32、 有三個關係R、S和T如下:

由關係R和S通過運算得到關係T,則所使用的運算為(  )。

A.笛卡爾積

B.交

C.並

D.自然連線

33、有如下類定義:

class MyClass

{

public:

private:

______________________________________

int data;

};

若要為MyClass類過載流輸入運算子“>>”,使得程式中可以“cin>>obj;”的形式改變MyClass類的物件0bj中資料成員data的值,則橫線處的宣告語句應為( )。

nd istream& operator>>(istream&is,MyClass&A.;

nd istream&operator>>(istream&is,MyClass A.;

eam&operator>>(istream&is,MyClass&A.;

eam&operator>>(istream&is,MyClass A.;

34、 有如下程式:

#inClude using namespaCe std; Class Sample{

friend long fun(Sample S); publiC:

Sample(10ng A.{x=a;} private:

long X;

}; long fun(Sample S){

if(S.x<2)return l;

return S.X*fun(Sample(s.x-1)); }

int main(  ) {

int sum=0;

for(int i=0;i<6;i++) {sum+=fun(Sample(i));}

Cout< }

執行這個程式的輸出結果是(  )。

A.120

B.16

C.154

D.34

35、 有如下程式:

#inClude using namespaCe std; Class Book{

publiC:

Book(Char*t=””){strCpy(title,t);}

private:

Char titlel40]; };

Class Novel:publiC Book{ publiC:

Novel(Char*t=””):Book(t){}

Char*Category(  )Const{return”文學”;} };

int main(  ){ Book * pb; pb=new Novel(  );

Cout< return 0; }

若程式執行時輸出結果是“文學”,則橫線處缺失的語句是(  )。

*Category(  );

*Category(  )Const;

ual Char*Category(  )Const;

ual Char*Category(  )Const=0;

36、 有如下頭變件:

int f1()

StatiCintf2( ); Class MA

publiC: intf3();

1statiC int f4();

};

在所描述的函式中,具有隱含的this指標的是( )。

B.f2

C.B

D.f4

37、下面對靜態資料成員的描述中,正確的是( )。

A.靜態資料成員可以在類體內進行初始化

B.靜態資料成員不可以被類的物件呼叫

C.靜態資料成員不能受private控制符的作用

D.靜態資料成員可以直接用類名呼叫

38、 設int a=10,b=11,C=12;,表示式(a+B.A.2

B.0

C.-2

D.1

39、 下列說法正確的是( )。

A.行內函數在執行時是將該函式的目的碼插入每個呼叫該函式的地方

B.行內函數在編譯時是將該函式的目的碼插入每個呼叫該函式的地方

C.類的行內函數必須在類體內定義

D.類的行內函數必須在類體外通過加關鍵字inline定義

40、 下面對於友元函式描述正確的是( )。

A.友元函式的實現必須在類的內部定義

B.友元函式是類的成員函式

C.友元函式破壞了類的封裝性和隱藏性

D.友元函式不能訪問類的私有成員

二、基本操作題(18分)

41、請使用VC6或使用【答題】選單開啟考生資料夾projl下的工程projl,此工程中含有一個源程礙檔案 。其中位於每個註釋“//ERROR ****found****”之後的一行語句存在錯誤。請改正這些錯誤,使程式的輸出結果為:

ConstruCtor Called. The value is 10

Copy ConstruCtor Called. The value is 10

DestruCtor Called. DestruCtor Called. 注意:只修改註釋“//ERROR ****found****”的下一行語句,不要改動程式中的其他內容。

//

#inClude ’using namespaCe std; Class MyClass{

publiC:

//ERROR**********found**********

MyClass(int i)

{value=i;Cout<<”ConstruCtor Called.” < //ERROR**********found********** MyClass(eonst MyClass P)

{

value = e;

eout<<”Copy ConstruCtor Called.”< }

void Print()

{Cout<<”The value is” < //ERROR**********found********* void-MyClass()

{Cout<<”DestruCtor Called.”< private:

int value;

}; int main()

{ MyChas objl

t();

MyClmss obj2(owl); t();

retum 0;

三、簡單應用題(24分)

42、請使用VC6或使用【答題】選單開啟考生資料夾pr092下的工程pros2。此工程中包含一個程式檔案,其中有“部門”類Department和“職工”類Staff的'定義,還有主函式main的定義。在主函式中定義了兩個“職工”物件,他們屬於同一部門。程式展示,當該部門改換辦公室後,這兩個人的辦公室也同時得到改變。請在程式中的橫線處填寫適當的程式碼並刪除橫線,以實現上述類定義。此程式的正確輸出結果應為:

改換辦公室前:

職工號:0789姓名:張三部門:人事處辦公室:521

職工號:0513姓名:李四部門:人事處辦公室:521

改換辦公室後:

職工號:0789姓名:張三部門:人事處辦公室:311

職工號:0513姓名:李四部門:人事處辦公室:311

注意:只在橫線處填寫適當的程式碼,不要改動程式中的其他內容,也不要刪除或移動“//****found****”。

#include

using namespace std;

class Department{ //“部門”類

public:

Department(const char*name,const char*office){

strcpy(this一>name,nanle);

//**********found**********

}

const char*getName()const{return name;}//返回部門名稱

//**********found**********

const char*getOffice()const{________} //返回辦公室房號

void changeOfficeTo(const char*office){ //改換為指定房號的另一個辦公室

strcpy(this一>office,office);

}

private:

char name[20];//部門名稱

char office[20];//部門所在辦公室房號

};

class staff{//“職工”類

public:

//**********found**********

Staff(const char*my—id,const char木my_name,Department&my_dept):——{

strcpy(this一>staff id,my_id);

strcpy(this一>name,my_name);

}

const char*getlD()const{return staff_id;}

const char*getName()consl{return name;}

Department getDepartment()const{return dept;} char staff=id[10];//職工號

char name[20];//姓名

Department&dept;//所在部門

}; void showStaff(Staff&staff){

cout<<”職工號:”< cout<<”姓名:”< cout<<”部門:”< cout<<”辦公室:”< int main(){

Department dept(”人事處”,”521”);

Staff Zhang(”0789”,”張三”,dept),Li(”0513”,”李四”,dept);

cout<<”改換辦公室前:”< showStaff(Zhang); showStaff(Li);

//人事處辦公室由521搬到311 //**********found********** ———————————————————————一

cout<<”改換辦公室後:”< showStaff(Zhang); showStaff(Li);

return 0; }

四、綜合應用題(18分)

43、

請使用VC6或使用【答題】選單開啟考生資料夾proj3下的工程proj3,其中包含了類IntegerSet和主函式main的定義。一個IntegerSet物件就是一個整數的集合,其中包含0個或多個無重複的整數;為了便於進行集合操作,這些整數按升序存放在成員陣列elem的前若干單元中。成員函式add的作用是將一個元素新增到集合中(如果集合中不存在該元素),成員函式remove從集合中刪除指定的元素(如果集合中存在該元素)。請編寫成員函式remove。在main函式中給出了一組測試資料,此時程式的正確輸出結果應為:

2 3 4 5 27 28 31 66 75

2 3 4 5 6 27 28 31 56 75

2 3 4 5 6 19 27 28 31 66 75

3 4 5 6 19 27 28 31 66 75

3 4 5 6 19 27 28 31 66 75

要求:

補充編制的內容寫在“//***********333***********”與“//***********666***********”之間,不得修改程式的其他部分。

注意:程式最後將結果輸出到檔案中。輸出函式writeToFile已經編譯為obj檔案,並且在本程式中呼叫。

//IntegorSet.h

#ifndef INTEGERSET

#define INTEGERSET

#include

using namespace std;

const int MAXELEMENTS=100;

//集合最多可擁有的元素個數

class IntegerSet{

int elem[MAXELEMENTS];

//用於存放集合元素的陣列

int counter; //用於記錄集合中元素個數的計數器

puhlic:

IntegerSet():counter(0){}

//建立一個空集合

IntegerSet(int data[],int size);

//利用陣列提供的資料建立一個整數集合

void add(int element);

//新增一個元素到集合中

void remeve(int element);

//刪除集合中指定的元素

int getCount()const{return counter;}

//返回集合中元素的個數

int getElement(int i)const{retum elem[i];}//返回集合中指定的元素

void show()const;

};

void WriteToFile(char*);

#endif

//

#include”IntegerSet.h”

#include

IntegerSet::IntegerSet(int data[],int size):counter(0){

for(int i=0;i add(data[i]);

}

}

void IntegerSet::add(int element){

int j;

//從後往前尋找第一個小於等於element的元素

for(j=counter;j>0;j-)

if(element>=elem[j一1])break;

//如果找到的是等於element的元素,說明要新增的元素已經存在,直接返回

if(j>0)

if(element==elem[j-1])return;

//如果找到的是小於element的元素,j就是要新增的位置

//該元素及其後面的元素依次後移,騰出插入位置

for(int k=counter;k>j;k一)

elem[k]=elem[k一1];

elem[j]=element;//將element插入到該位置

counter++; //計數器加l

}

void IntegerSet::remove(int element){

//***************333***************

//***************666***************

void IntegerSet::show()const{

for(int i=0;i cout< cout< }

int main(){

int d[]={5,28,2,4,5,3,2,75,27,66,31};

IntegerSet S(d,11);();

(6); ();

(19); ();

ve(2); ();

(4); ();

writeToFile(””);

return 0;

}