2021年安徽省滁州市全國計算機等級考試C++語言程序設計真題(含答案)_第1頁
2021年安徽省滁州市全國計算機等級考試C++語言程序設計真題(含答案)_第2頁
2021年安徽省滁州市全國計算機等級考試C++語言程序設計真題(含答案)_第3頁
2021年安徽省滁州市全國計算機等級考試C++語言程序設計真題(含答案)_第4頁
2021年安徽省滁州市全國計算機等級考試C++語言程序設計真題(含答案)_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

2021年安徽省滁州市全國計算機等級考試

C++語言程序設計真題(含答案)

學校:班級:姓名:考號:

一、1.選擇題(10題)

1.下面程序的執(zhí)行結果是#include"iostream.h"voidmain(){int*p,

r;p=newint;*p=20;r=sizeof(*p);cout<<r<<endl;deletep;}

A.程序錯誤B.內存為20地址的大小C.20D.4

2.已知fl(int)是類A的公有成員函數(shù),p是指向成員函數(shù)□()的指針,

采用賦值,()是正確的。

A.p=flB.P=A::flC.P=A::fl()D.P=fl()

3.下面程序的運行結果是#include<iostream.h>voidmain(){int

num=l;int&ref=num;ref=ref+2;cout<<num;num=num+3;cout

<<ref<<endl;}

A.13B.16C.36D.33

4.將6個數(shù)據(jù)進行冒泡排序,在最壞情況下需要比較的次數(shù)是

A.15B.5C,6D.30

5.下列對派生類的描述中,()是錯誤的

A.一個派生類可以作另一個派生類的基類

B.派生類至少有一個基類

C.派生類的成員除了它自己的成員外,還包含了它的基類的成員

D.派生類中繼承的基類成員的訪問權限到派生類保持不變

6.以下不屬于構造函數(shù)特征的是。

A.構造函數(shù)名與類名相同B.構造函數(shù)可以重載C.構造函數(shù)可以設置

默認參數(shù)D.構造函數(shù)必須指定函數(shù)類型

7.有以下程序:#include<iostream>usingnamespacestd;class

Complex{public:Complex(doublei-O,doublei=0):re(r),im(i){doublezeal()

const{returnre;}doubleimag()const{returnim;}Complex

operator+(Complexc)const{returnComplex(re+c.re,im+c.im);}private:

doublere,im;};intmain()Complexa=Complex(l,l)+Complex(5);cout<<

a.real()<<'+'<<a.imag()<<'i'<<end1;return0;}程序執(zhí)行后的輸出

結果是______o

A.6+6iB.6+liC.l+6iD.l+li

8.在數(shù)據(jù)庫設計中,將E-R圖轉換為關系模式的過程屬于()。

A.需求分析階段B.邏輯設計階段C.概念設計階段D.物理設計階段

9.數(shù)據(jù)獨立性是數(shù)據(jù)庫技術的重要特點之一。所謂數(shù)據(jù)獨立性是指()。

A.數(shù)據(jù)與程序獨立存放

B.不同的程序被存放在不同的文件中

C.不同的數(shù)據(jù)只能被所對應的應用程序所使用

D.上述三種說法都不對

10.下面程序的運行結果為()。#include<iostream.h>classA{intnum

public:A(inti){num=i;}A(A&a){Bum=a.num++;}voidprint(){cout<

<Bum;}};voidmain(){Aa(l),b(a);A.print();B.print();}

A.llB.12C.21D.22

二、單選題(13題)

11.算法的有窮性是指

A.算法程序的運行時間是有限的

B.算法程序所處理的數(shù)據(jù)量是有限的

C.算法程序的長度是有限的

D.算法只能被有限的用戶使用

12.下面程序的輸出結果是()o

#include<iostreanl.h>

classexample

(

inta;

public:

example(intB.{a=b++;}

voidprint{a=a+1;eout?a?^^^^;}

voidprintconst{cout?a?,,,,5}

);

voidmain

(

examplex(3);

constexampleY(2);

Aprint;

Bprint;

)

A.22B.43C.42D.32

13.已知函數(shù)fun的原型為intfun(int,int,int);下列重載函數(shù)原型中錯誤

的是_________O

A.charfun(int,int);

B.doublefun(int,int,double);

C.intfun(int,clar*);

D.floatfun(int,int,int);

14.有如下程序:#include<iostream>Usingnamespacestd;Class

TestClass{private:intX,y;public:TestClass(inti,intj){x=i;y

=j;}voidprint(){cout<<"printl”<<endl;}voidprint()const{cout<

<"print2"<<endl;}};intmai

A.printlB.print2C.printlprint2D.程序編譯時出錯

15.設有a、b、c、d、m、n均為int型變量,且a=5、b=6、c=7、d=8、

m=2、n=2,貝IJ邏輯表達式(m=a>b)&&(n=c>d)運算后,n的值為

A.0B.1C.2D.3

16.有如下兩個類定義:

classXX{

private:

doublexl;

protected:

doublex2;

public:

doublex3;

);

classYY:protectedXX{

private:

doubleyl;

protected:

doubley2;

public:

doubley3;

在類YY中保護成員變量的個數(shù)是()o

A.lB.2C.3D.4

17.設函數(shù)中有整型變量n,為保證其在未賦初值的情況下初值為0,應

選擇的存儲類別是()o

A.autoB.xegisterC.staticD.autO或register

18.下面描述中,符合結構化程序設計風格的是____o

A.使用順序、選擇和重復(循環(huán))三種基本控制結構表示程序的控制邏

B.模塊只有一個入口,可以有多個出口

C.注重提高程序的執(zhí)行效率

D.不使用goto語句

19.下面的函數(shù)模板定義中錯誤的是()。

A.template<classQ>

B.template<classQ>QF(Qx){returnQ-x;}QF(Qx){returnx+x;)

C.template<classT>

D.template<classT>TF(Tx){returnx*x;}boolP(Tx){returnX>1;}

20.下列關于完全二叉樹的敘述中,錯誤的是()o

A.除了最后一層外,每一層上的結點數(shù)均達到最大值

B.可能缺少若干個左右葉子結點

C.完全二叉樹一般不是滿二叉樹

D.具有結點的完全二叉樹的深度為[log2n]+l

21.已知有數(shù)組定義chara[3][4];下列表達式中錯誤的是

A.a[2]="WIN”

B.strcpy(a[2],“WIN”)

C.a[2][3]='W,

D.a[0][l]=a[0][l]

22.已知表達式++a中的"++”是作為成員函數(shù)重載的運算符,則與++a等

效的運算符函數(shù)調用形式為O

A.operator++(1)

B.operator++(a)

C.operator++(a,l)

D.operator++()

23.以下關鍵字不能用來聲明類的訪問權限的是()。

A.publiCB.staticC..protectedD.private

三、2.填空題(12題)

24.在析構函數(shù)中調用虛函數(shù)時,采用【】聯(lián)編。

25.假定A為一個類,則語句A(A&a);為該類【】函數(shù)的原型說明。

26.對于下面定義的類MyClass,請在函數(shù)f()中添加對象成員把n的值

修改為50o

classMyClass

(

public:

MyClass(intx){n=x;}

voidSetNum(intnl){n=nl;}

private:

intn;

);

intf()

(

MyClass*ptr=newMyClass(45);

【】

27.在面向對象方法中,類之間共享屬性和方法的機制稱為o

28.全面支持軟件開發(fā)過程的軟工具集合被稱為。

29.軟件需求規(guī)格說明書應具有完整性、無歧義性、正確性、可驗證性、

可修改性等特性,其中最重要的是_____。

30.建立數(shù)據(jù)字典的時機是【】。

31.一個工人可以加工多種零件,每一種零件可以由不同的工人來加工,

工人和零件之間為【】的聯(lián)系。

32.一棵二叉樹第6層(根結點為第一層)的結點最多為個。

33.為解決在多重繼承環(huán)境中因公共基類帶來的問題,C++語言

提供了虛基類機制。

34.有如下類聲明:

classTestClass

(

inti;

private:intj;

protected:intk;

public:intm,n;

);

其中,私有成員的數(shù)量為o

35.用以下語句調用庫函數(shù)malloc,使字符指針st指向具有11個字節(jié)

的動態(tài)存儲空間,請?zhí)羁铡?/p>

st=(char*)[];

四、程序改錯題(10題)

36.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,但該程

序運行有問題,請改正main函數(shù)中的錯誤,使該程序的輸出結果正

確。

程序輸出:

8

8

注意:錯誤的語句在/********error********/的下面。修改該語句

即可,其他的語句不能修改。

試題程序:

#include(iostream.h>

classCO

(

public:

I********epj*or********I

staticintn=O:

CO

n++:

co

):

/**************I

intCO::n;

voidmain

(

COobj;

COobj2[7];

CO*C=NULL:

c=&obj:

/********ej*por********

eout?C.n?endl;

cout?C0::n?endl;

37.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運

行時有錯,請改正其中的錯誤,使程序正常運行,并使程序輸出的結果

為:

sizeof(Sl)=5

sizeof(s2)=10

sizeof(s3)=l

注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結

構,錯誤的語句在//******error******的下面。

⑴不能刪除assert()語句。

⑵只能修改后面的數(shù)字。

提示:assert函數(shù)如果為假,則會產生一個中斷異常。

試題程序:

#include<iostream.h>

#include<assert.h>

voidmain()

(

char*sl="abc":

II********error********

assert(sizeof(sl)==3):

cout?"sizeof(sl)=5"?endl;

chars2[10]="ab":

II********error********

assert(sizeof(s2)==2);

cout?"sizeof(s2)=10"?endl;

chars3=23:

II********error********

assert(sizeof(s3)==4);

cout?"sizeof(s3)=l"?endl;

return;

38.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序

運行時有錯,請改正其中的錯誤,使程序正常運行,輸出的結果為

Constructor,i=0,

Destructor

注意:錯誤的語句在//******errc)r******的下面,修改該語句即

可。

試題程序:

#include(iostream.h)

classTC

(

inti;

public:

TC;

voiddisplay;

?TC;

);

/st*si*KL*

//不不不不不不prrcr不不不不不不

TC:TC

(

cout?"Constructor"?",";

i=0;

)

/vt-

//不不不不不不prmr不不不不不不

TC:display

tout?"i="?i<<","?endl;

I/******epj^or******

TC:TC

(

COUI?"Destructor"?endl:

)

voidmain

(

TCa;

a.display;

)

39.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序

運行時有錯。請改正程序中的錯誤,使程序輸出的結果為

100

37

32

注意:錯誤的語句在//******error******的下面,修改該語句即

可。

試題程序:

#include<iostream.h>

//******ej*por******

voidmain

(

//******ej*por******

intm=0142:

//******ep^or******

intn=0X27:

intq=32;

cout<<m<<endl;

cout<<n<<endl;

cout<<q<<endl;

return;

)

40.使用VC++6.0打開考生文件夾下的源程序文件1.cpp。本程序

要求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可

能輸入多行,當輸入字符“?”時,默認字符輸入結束,最后把結果輸出

到屏幕中。

注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結

構,錯誤的語句在//******error******的下面。

試題程序:

#include<iostream.h>

voidmain

(

inti=O;

charstr[120];

cout?"Enterastringendwith?."?endl;

/I********eppor********

cin.getline(str,120);

********error********

while(str)

/I********epj*or********

if(str[i])=a)

str[i]=str[i]-a+A;

i++;

)

cout?str?endl;

return;

41.使用VC++6.0打開考生文件夾下的源程序文件1.cpp。本程序要

求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可能輸

入多行,當輸入字符“?”時,默認字符輸入結束,最后把結果輸出到屏幕

中。

注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結

構,錯誤的語句在//******error******的下面。

試題程序:

#include<iostream.h>

voidmain

inti=0;

charstr[120];

cout?"Enterastringendwith?."?endl;

1I********epj*or********

cin.getline(str,120);

1I********ep^or********

while(str)

********ex*x*or********

if(str[i])=a)

str[i]=str[i]-a+A;

1++;

)

cout?str?endl;

return;

42.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序

運行有問題,請改正main函數(shù)中的錯誤,使程序的輸出結果為:

number=l

number=10

number=100

注意:不要改動main函數(shù),不能增加或刪除行。也不能更改程序的結

構,錯誤的語句在//******errc)r******的下面。

試題程序:

#include<iostream.h>

classTC

public:

TC(inti)

number=i;

)

voidSetNumber(intm)

(

number=m;

)

intGetNumberconst

(

returnnumber;

)

voidPrintconst

(

cout?"number="?number?endl;

)

private:

intnumber;

);

voidmain

//********epj^or********

TCobjl;

objl.Print;

TCobj2(3);

//********epj^or********

objl.number=10;

I/********ej*j*0r*^^o******

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

43.使用VC++6.0打開考生文件夾下的源程序文件

1.cpp,該程序運行時有錯誤,請改正程序中的錯誤。本程序要求實

現(xiàn)的功能為從鍵盤輸入一個字符串,并將結果保存到文件1.txt中。

注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結

構,錯誤的語句在

/I******ex*i*or******白勺-?8j°

試題程序:

#include<iostream>

#include<fstream>

/I********ej'j"or********

usingstd;

voidWriteFile(char*s)

(

ofstreamoutl;

/I********ej'j"or********

outl.open("l.txt",binary|app);

for(inti=0;s[i]!=0;i++)

/j********ep^or********

outl.puts(s[i]);

outl.close;

}

voidClearFile

(

ofstreamoutl;

outl.open("l.txt");

outl.close;

}

intmain

(

chars[1024];

ClearFile;

cout?"pleaseinputastrin9:"?endl;

cin.getline(s,1024);

WriteFile(s);

returnO;

}

44.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運

行時有錯誤,請改正程序中的錯誤,使得程序輸出:

9,8,7,6,5

注意:錯誤的語句在/********error********/的下面,修改該語句即

可。其他的語句不能修改。

試題程序:

#include(iostream.h>

classTC

!********6j*j*or********!

TC(inti)

(

m_i=i;

)

voidprint

(

cout?-m_i?,;

)

public:

intm_i;

intmain

I********epj*or********I

inti;

TC04(10);

while(i>5)

!**************I

1++

04.print;

)

cout?endl;

returnO;

45.使用VC++6.0打開考生文件夾下的源程序文件

1.cpp,該程序運行時有錯誤,請改正程序中的錯誤。本程序要求實現(xiàn)

的功能為從鍵盤輸入一個字符串,并將結果保存到文件1.txt中。

注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結

構,錯誤的語句在

II******effor******白勺

試題程序:

#include<iostream>

#include<fstream>

II********ej*por********

usingstd;

voidWriteFile(char*s)

(

ofstreamoutl;

//********ej*por********

outl.open("1.txt",binary|app);

for(inti=0;s[i]!=0;i++)

II********epj*or********

outl.puts(s[i]);

}

outl.close;

)

voidClearFile

ofstreamoutl;

outl.open("l.txt");

outl.close;

)

intmain

(

chars[1024];

ClearFile;

cout?"pleaseinputastrin9:"?endl;

cin.getline(s,1024);

WriteFile(s);

returnO;

五、綜合應用題(2題)

46.請使用VC6或使用【答題】菜單打開考生文件夾proj3下的工程

proj3,其中聲明的CDeepCopy是一個用于表示矩陣的類。請編寫這個

類的賦值運算符成員函數(shù)Operator:,以實現(xiàn)深層復制。

要求:

未卜充編制的內寫;j^“〃************333************“與

,力****************666*************"J^間o不多改的部

分。

注意:程序最后將結果輸出到文件out.dat中。輸出函數(shù)writeToFile

已經(jīng)編譯為。bj文件,并且在本程序中調用。

//CDeepCopy.h

#include<iostream>

#include<string>

usingnamespacestd;

classCDeepCopy

(

public:

intn;//動態(tài)數(shù)組的元素個數(shù)

int*p;〃動態(tài)數(shù)組首地址

CDeepCopy(int);

?CDeepCopy;

CDeepCopy&operator=(constCDeepCopy&r);//賦值運算符函數(shù)

);

voidwriteToFile(char});

//main,cpp

#include,,CDeepCopy.h"

CDeepCopy::一CDeepCopy{delete[]P;}

CDeepCopy::CDeepCopy(intk){n=k;p=newint[n];}//構造函數(shù)實現(xiàn)

CDeepCopy&CDeepCopy::Operator=(constCDeepCopy&r)〃賦值運算

符函數(shù)實現(xiàn)

〃//華*1?舉舉舉舉舉舉舉舉舉舉333舉舉舉**1舉**1舉**1舉**1舉*舉舉

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

intmain

CDeepCopya(2),d(3);

a.p[O]=l;d.p[O]=666;//對象a,d數(shù)組元素的賦值

CDeepCopyb(3);//調用賦值運算符函數(shù)

a.p[O]=88;b=a;

cout?b.p[O];〃顯示內層局部對象的數(shù)組元素

)

cout?d.p[O];〃顯示d數(shù)組元素a.p[O]的值

cout?”dfadeaway;\n";

cout?a.p[O];//顯示a數(shù)組元素a.p[O]的值

,,,,

writeToFile();

return0;

)

47.使用VC++6.0打開考生文件夾下的源程序文件3.cpp,其中定

義了類A、A1和A2,其中A1類由A類公有派生,A2類由A1類公

有派生。

⑴定義類A的構造函數(shù),該構造函數(shù)有一個整型的參數(shù)x,在構造函

數(shù)中請將x賦值給數(shù)據(jù)成員a。請在注釋“//********1********”之

后添加適當?shù)恼Z句。

(2)定義類A1的構造函數(shù),該構造函數(shù)有兩個整型的參數(shù)x和y,在構

造函數(shù)中請將x賦值給數(shù)據(jù)成員b,將y作為基類A構造函數(shù)的參數(shù)

值傳人。請在注釋“//********2********”之后添加適當?shù)恼Z句。

(3)定義類A2的構造函數(shù),該構造函數(shù)有3個整型的參數(shù)x,y和z,

在構造函數(shù)中請將x賦值給數(shù)據(jù)成員C,將y和z分別賦值給基類A1

構造函數(shù)的參數(shù)X和y。請在注釋“//********3********”之后添加

適當?shù)恼Z句。

(4)完成類A2的成員函數(shù)show的定義,該函數(shù)調用基類成員函數(shù),輸

出基類數(shù)據(jù)成員a和b及類A2自身的數(shù)據(jù)成員C的值,上述3個值

在輸出時以空格隔開。請在注釋“//********4********”之后添加適

當?shù)恼Z句。

程序輸出結果如下:

7

3

738

注意:除在指定的位置添加語句之外,請不要改動程序的其他部分。

試題程序:

#include<iostream.h>

classA

(

inta;

public:

intgeta{retuma;}

};

classAl:publicA

(

intb;

public:

intgetb{returnb;}

);

classA2:publicAl

intC;

public:

****,****3********

voidshow

//********4********

);

voidmain

A2a(8.3.7):

cout?a.geta?endl:

cout?a.getb?endl:

a.show;

六、3.綜合應用題(2題)

48.使用VC6打開考生文件夾下的工程MyProjl。此工程包含千個源程

序文件MyMainl.cpp,其中定義了用于表示日期的類Date,但類Date的

定義并不完整。請按要求完成下列操作,將類Date的定義補充完成:

①定義私有數(shù)據(jù)成員year、month和day分別用于表示年、月、日,它

們都是int型的數(shù)據(jù)。請在注釋“//**1**”之后添加適當?shù)恼Z句。

②完成默認構造函數(shù)Date的定義,使Date對象的默認值為:year=l,

month=l,day=l,請在注釋“〃**2**”之后添加適當?shù)恼Z句。

③完成重載構造函數(shù)Date(inty,intm,intd)的定義,把數(shù)據(jù)成員yeai\

month和day分別初始化為參數(shù)y、m和d的值,請在注釋“//**3**”之

后添加適當?shù)恼Z句。

④完成成員函數(shù)print的類外定義,使其以“年-月-日”的格式將Date對

象的值輸出到屏幕上。請在注釋“〃**4**”之后添加適當?shù)恼Z句。

注意:除在指定位置添加語句之外,請不要改動程序中的其他內容。

源程序文件MyMainl.cpp清單如下:

//MyMainl.cpp

#include<iostream>

usingnamespacestd;

classDate

(

public:

〃**2**

Date(inty,intm,intd)

(

〃**3**

)

voidprint()const;

private:

//datamember

〃**]**

);

voidDate::print()const

(

〃**4**

)

intmain()

Datenational_day(1949,10,1);

national_day.print();

return0;

)

49.使用VC6打開考生文件夾下的工程test7_3,此工程包含一個源程

序文件test7_3.cpp,其中含有一個類Circle的定義,但該類的定義并不

完整。請按要求完成下列操作,將類Circle的定義補充完整。

⑴為類Circle增加一個構造函數(shù),該函數(shù)有一個參數(shù),并在構造時將該

參數(shù)值賦給成員radiuso將該函數(shù)實現(xiàn)為一個非內聯(lián)函數(shù),并且使用參

數(shù)列表的方式將類成員賦值。請在注釋“〃**1**”之后添加適當?shù)恼Z句。

(2)為類Circle增加一個成員函數(shù)print。,使得可以輸出有關圓的信息,

比如下列程序

Circlec;

c.SetRadius(5);

c.Print();

將輸出:Thecirclehasradiusof5!

請在注釋“〃**2**”之后添加適當?shù)恼Z句。

(3)完成友元函數(shù)voidCompareR(Circle*cl,Circle*c2)的定義,在屏幕中

輸出cl與c2比較radius大小結果,要求使用if-else結構完成。請在注

釋“〃**3**”之后添加適當?shù)恼Z句。

輸出結果如下;

Thecirclehasradusof5!

Thecirclehasradiusof10!

cl<c2

注意:除在指定位置添加語句之外,請不要改動程序中的其他內容。

源程序文件test7_3.cpp清單如下:

#include<iostream.h>

classCircle{

public:

Circle():radius(5){)

〃**]**

voidSetRadius(intr){radius=r;}

intGetRadius(){returnradius;}

〃**2**

friendvoidCompareR(Circle*cl,Circle*C2);

private:

intradius;

);

voidCompareR(Circle*cl,Circle*C2)

(

〃**3**

cout<<"cl>c2"<<endl;

else

if((cl->GetRadius())==(c2->GetRadius()))

cout<<"cl=c2"<<endl;

else

if((cl->GetRadiusO)<(c2->GetRadius()))

cout<<"cl<c2"<<endl;

)

voidmain()

(

Circlecl;

cl.SetRadius(5);

Cl.Print();

Circlec2(10);

c2.Print();

CompareR(&cl,&c2);

參考答案

1.D解析:理解sizeof的用法,它可以運算出各種數(shù)據(jù)類型所占內存空

間的多少。注意:選項C)中是指針p所指向的內存地址中內容是20。

注意:在用完申請后的內存應立刻釋放。

2.B

3.C解析:本題考查的是考生引用的掌握,ref實際上就是變量num的

別名,所以ref=ref+2時,num已經(jīng)變成了3。

4.A解析:對長度為n的線性表進行冒泡排序,在最壞情況下需要n(n-

1)/2次比較,現(xiàn)線性表的長度為6,在最壞情況下需要比較的次數(shù)為6(6-

1)/2=15O

5.D

6.D解析:構造函數(shù)和析構函數(shù)一樣,是類的特殊的成員函數(shù)。其特殊

之處在于,構造函數(shù)可以有多個版本以實現(xiàn)不同的初始化方式,不能指

定形參和函數(shù)類型,這些都是系統(tǒng)默認完成。

7.B解析:類對“+”重載后,對應的變量相加。

8.BB。【解析】數(shù)據(jù)庫設計階段主要包括需求分析、概念設計、邏輯設

計和物理設計。其中邏輯設計的主要工作是將E-R圖轉換為關系模式。

9.D解析:數(shù)據(jù)庫系統(tǒng)使數(shù)據(jù)具有兩方面的獨立性:一是物理獨立性,

即由于數(shù)據(jù)的存儲結構與邏輯結構之間由系統(tǒng)提供映像,使得當數(shù)據(jù)的

存儲結構改變時,其邏輯結構可以不變,因此,基于邏輯結構的應用程

序不必修改。二是邏輯獨立性,即由于數(shù)據(jù)的局部邏輯結構與總體邏輯

結構之間也由系統(tǒng)提供映像,使得當總體邏輯結構改變時,其局部邏輯

結構可以不變,從而根據(jù)局部邏輯結構編寫的程序也可以不必修改。因

此,選項A、選項B和選項C中的說法都是錯誤的。

10.C解析:本題考查考生對拷貝構造函數(shù)的掌握。因為++運算是右結

合的,所以在使用a對b賦值時,b的num變?yōu)?而a的hum變?yōu)?(先

賦值再自加)。

11.A

算法的有窮性,是指算法必須能在有限的時間內做完,即算法必須能

在執(zhí)行有限個步驟之后終止。

12.C

“++”是右結合的,所以先賦值為3,最后輸出3+1;常成員函數(shù)只有常

對象才能調用,所以輸出2。

13.D

本題主要考查了函數(shù)重載。函數(shù)重載允許用同一個函數(shù)名定義多個函

數(shù)。被重載的函數(shù)必須要有不同的形參列表(即參數(shù)個數(shù)不同或參數(shù)類

型不同),不可以根據(jù)函數(shù)返回值類型來重載函數(shù)。

14.B解析:本題由主函數(shù)main入手,定義TestClass型的常對象a,然

后調用對象a中的成員函數(shù)print。。因為在C++中,如果一個對象被聲

明為常對象,則不能調用該對象中的非const型的成員函數(shù)。所以,這

,,

里調用的是對象中的eonst型成員函數(shù)“voidprmt()eonst1輸出為print2o

15.C解析:在&&運算中,如果第1個表達式的值為假時,第2個表達

式將不再計算。在表達式中第1個表達式m=a>b的值為0,也就是假,

所以第2個表達式的將不再計算。所以n的值沒有變。

16.C

本題考查保護繼承中派生類對基類的訪問屬性,在受保護繼承中,基

類的公用成員和保護成員在派生類中成了保護成員,所以基類的成員

x2、x3變成了保護成員,派生類中的y2也是保護成員,所以共有3個

保護成員。本題答案為C、

17.C

Co【解析】在C語言中,未賦初值的靜態(tài)局部變量,編譯程序自動

給它賦初值0。所以選擇C。

18.A解析:結構化程序設計方法的四條原則是:①自頂向下:②逐步求

精;③模塊化;④限制使用goto語句?!白皂斚蛳隆笔侵冈诔绦蛟O計時,

先考慮總體,后考慮細節(jié);先考慮全局目標,后考慮局部目標?!爸鸩角?/p>

精”是指對復雜問題應設計一些子目標作過渡,逐步細節(jié)化?!澳K化”是

指一個復雜問題由若干稍簡單的問題構成;解決這個復雜問題的程序,

也應由若干稍簡單問題的小程序組成。

19.A

20.B

Bo【解析】滿二叉樹指除最后一層外,每一層上所有結點都有兩個子

結點的二叉樹。完全二叉樹指除最后一層外,每一層上的結點數(shù)均達

到最大值,在最后一層上只缺少右邊的若干葉子結點的二叉樹。因此

選項A敘述正確,而選項B敘述錯誤。由定義可知,滿二叉樹肯定是

完全二叉樹,而完全二叉樹一般不是滿二叉樹。

21.A

解析:字符數(shù)組不能直接賦值,所以選項A)錯誤。

22.D

本題主要考查了運算符重載。C++把重載的運算符視為特殊的函數(shù),

稱為運算符函數(shù),函數(shù)名就是在運算符前加上保留字operator。一般而

言,如果a是類X的對象,在類X中重載前置單目運算符@,則下列

兩種函數(shù)調用方法是等價的:第一種是通過運算符構成表達式的形式

進行調用,\r\n即@2;第二種是像一般函數(shù)那樣用函數(shù)名進行調用:

當把@作為成員函數(shù)重載時,調用形式為a.operator\r\n@();當把@作為

非成員函數(shù)重載時,調用形式為operator\r\n@(a)。本題是把前置單目

運算符++重載為成員函數(shù),因此與表達式++a等效的表示為a.operator

++00

23.B

解析:本題考查了類的訪問權限。在C++中,類的訪問權限一共有3

種,分別是:\u3000public(公有)、protected(保護)和private(私有)。因

此,本題應該選擇B。

24.靜態(tài)靜態(tài)解析:構造函數(shù)不能聲明為虛函數(shù),但在構造函數(shù)中可以

調用虛函數(shù),在構造函數(shù)和析構函數(shù)中調用虛函數(shù),將采用靜態(tài)聯(lián)編。

25.拷貝構造拷貝構造解析:本題考核拷貝構造函數(shù)的定義??截悩嬙?/p>

函數(shù)是一種特殊的成員函數(shù),它的作用是使用一個已存在的對象來初始

化一個被創(chuàng)建的同類的對象。

26.ptr->SetNum(50);ptr->SetNum(50);解析:本題考查的是考生使用

對象指針調用成員函數(shù)的能力,指針調用成員函數(shù)應該使用符號

27.繼承繼承解析:在面向對象的程序設計方法中,某些屬性和方法是

可以共享的,由子類從父類中繼承而來,這樣提高了軟件的可重用性。

28.軟件工程過程。軟件工程過程。解析:軟件開發(fā)環(huán)境或稱軟件工程

環(huán)境,它是全面支持軟件開發(fā)過程的軟件工具集合。

29.無歧義性無歧義性解析:軟件需求規(guī)格說明書是需求分析階段的最

后成果,是軟件開發(fā)中的重要文檔之一。包括正確性、無歧義性、完整

性、可驗證性、一致性、可理解性、可修改性和可追蹤性等。其中最重

要的特性是無歧義性,即需求規(guī)格說明書應該是精確的、無二義的,需

求說明書越精確,則以后出現(xiàn)錯誤、混淆、反復的可能性越小。

30.需求分析階段需求分析階段

31.多對多多對多解析:聯(lián)系是指現(xiàn)實世界中事物間的關聯(lián),在概念世

界中聯(lián)系反映了實體集間的一定關系。一個工人可以加工多種零件,每

一種零件可以由不同的工人來加工,因此它們之間的聯(lián)系屬于多對多的

聯(lián)系。

32.32

33.二義性二義性

34.2

35.malloc(ll)或malloc(sizeof(char)*11)malloc(11)或

malloc(sizeof(char)*11)解析:malloc函數(shù)的參數(shù)可以是一個具體的常數(shù),

也可以是一個表達式。在本題中,可以是malloc(ll),也可以借助于sizeof

運算符來表示。

36.(l)“staticintn=O"應改為"staticintn;

(2)“intC0::n;”應改為“intCO::n=0;”。

(3)“cout?c.n?endl;"應改為"cout?c->n?endl;"。

【解析】本題要在屏幕上輸出兩個字符,首先要靜態(tài)變量初始化,第1

處應改為“staticintn;”,第2處要給n賦值,第3處輸出時引用c的對

象,應改為"cout?c->n?endl;"。

37.(1)應改為"assert(sizeof(sl)==4);

\n⑵應改為"assert(sizeof(s2)==lO);

\n(3)應改為"assert(sizeof(s3)==l);

\n【解析】assert函數(shù)如果為假,則會產生一個中斷異常。所以要讓它正

常執(zhí)行輸出結果,那么assert函數(shù)只有為真,才不會產生中斷異常。

ctassert(sizeof(s1)==3);”語句中"sizeof(sl)==3”為假,這會使程序產生異

常,不能正常執(zhí)行。因為strl的值為abc,但是它還有一個尾符,它的

長度應該是4,而不是3,所以在第1處修改為“assert(sizeof(sl)==4)

str2[10]說明,str2的空間為10,在第2處修改為“assert(sizeof(s2)==10)

charstr3=23;語句說明23是字符,所占存儲空間為1,所以修改為

c'assert(sizeof(s3)==l);

38.⑴應改為“TC::TC”。

(2)應改為"voidTC::display”。

(3)應改為“TC::?TC”。

【解析】在類的外部定義成員函數(shù)時,必須在成員函數(shù)前面加上類名

和作用域運算符“::”,作用域運算符用采表示某個成員屬于哪個

類,使用格式為“(類名)::〈成員函數(shù)〉((參數(shù)函數(shù))),因此第1處應改

為“TC::TC”,默認構造函數(shù)沒有參數(shù)。由第2處“TC::display”后

的語句看,這是在類外實現(xiàn)TC函數(shù),因此也有作用域運算符使用錯

誤問題,display函數(shù)返回值為void,因此第2處的語句應改為

“voidTC::display”。由第3處的語句“TC::TC”可知,顯然這里是

在類外實現(xiàn)析構函數(shù),析構函數(shù)是一個特殊的函數(shù),它的名稱和類名

相同,并在前面加“?”字符,用采與構造函數(shù)加以區(qū)別,因此第3處

的語句應改為“TC::?TC”。

39.(l)“voidmain”。

(2)“intm=0144;

(3)“intn=OX25;”或“intn===0x25;

【解析】本題主要考查了主函數(shù)定義及塞同進制之間的轉換,包括十

進制到八進制,十進制到十六進制。主函數(shù)定義的定義形式為

“main”,函數(shù)名之后必須是一對括號,因此第1處應改為“voidmain”。

cout輸出默認是以十進制方式輸出的,根據(jù)題目要求輸出的結果可發(fā)

現(xiàn)變量的初值不正確,十進制的100對應八進制的144,卡進制的37

對應十六進制的25,因止匕2和3應分別改成“intm=0144;”,

“intn=0x25;”或“intn=0x25;

40.(1)應改為“ein.getline(str,120,?);”。

(2)應改為"while(str[i])”。

,,

(3)應改為“if(str[i]>=a&&str[i]<=2)o

【解析】本題中要求以輸入字符“?”為結束符,用于字符輸入的流成員

函數(shù)getline函數(shù)讀入一行字符,格式為“cin.getline(字符數(shù)組,字符

個數(shù),終止標志字符廣,所以第1處改為“cin.getline(str,

120,?);第2處的“while(str)”語句應該是判斷字符串str中的每一

個字符是否為結束符,若不是結束符,在循環(huán)中判斷每一個字符是否

為小寫,若為小寫,則轉換。所以應該修改為“while(str[i])”。第3處的

“if(str[i]>=a)”語句是判斷字符str用是否為小寫字符,而現(xiàn)有的語句只

是判斷字符是否大于a,但是小寫字符應該是a到2,所以修改為

,,

“if(str[i]>=a&&str[i]>=z)o

41.(1)應改為“ein.getline(str,120,?);

\n(2)應改為"while(str[i])”。

,,

\n(3)應改為"if(str[i]>=a&&str[i]<=2)o

\n【解析】本題中要求以輸入字符“?”為結束符,用于字符輸入的流成員

函數(shù)getline函數(shù)讀入一行字符,格式為“cin.getline(字符數(shù)組,字符個

數(shù),終止標志字符)”,所以第1處改為“cin.getline(str,120,?);第

2處的“while(str)”語句應該是判斷字符串str中的每一個字符是否為結

束符,若不是結束符,在循環(huán)中判斷每一個字符是否為小寫,若為小寫,

則轉換。所以應該修改為“while(str[i])”°第3處的“if(str[i]>=a)”語句是

判斷字符str用是否為小寫字符,而現(xiàn)有的語句只是判斷字符是否大于a,

但是小寫字符應該是a到2,所以修改為“if(str[i]>=a&&str[i]>=z)”。

42.(1)應改為"TCobjl(l);

(2)應改為“Objl.SetNumber(lO);

(3)應改為“Obj2.SelNumber(lOO);

【解析】本題第1處的“TCobjl;”語句是聲明TC類的對象Objl,根據(jù)

TC類構造函數(shù)的定義TC(inti),存在整型參數(shù),并且題目要求第一個

輸出結果兩1,所以補全參數(shù)1,即第1處的“TCobjl(l);第2處處

的“objl.number=10;”應該是調用成員函數(shù)SetNumber賦值。在C+

十中成員函數(shù)的使用形式應該是:對象名.成員函數(shù),所以修改為

“objl.SetNumber(lO);類是對象的抽象,而對象是類的具體實

例。第3處“TC.SetNumber(lOO);”語句中的TC為類,并不是對象,

這里應該使用定義的對象,即obj2,所以將語句修改為

“obj2.SetNumber(lOO);

43.⑴應改為"usingnamespacestd;"。

(2)應改為"outl.open("1.txt",ios::binaryIios::app);"。

,5

(3)應改為“outl.put(s[i]);O

【解析】本題第1處的“usingstd;”是在程序中引入標準命名空間std,

對于C++中引入標準命名空間的格式,缺少namespace,所以第1處

的語句修改為"usingnamespacestd;"。第2處,調用成員函數(shù)open

中,輸入、輸出方式是在ios類中定義的,所以“outl.open("l.txt",

binaryIapp);”語句缺少類ios,即第2處的語句修改為

“outl.open("l.txt",ios::binaryIios::app);“。第3個標識應

該用流成員函數(shù)put輸出字符,所以第3處的語句修改為

“outl.put(s[i]);“。

44.⑴應添加“public:

\n(2)“inti”應改為“inti(10);

\n(3)“i++;”應改為“i-

\n【解析】本題主要考查的是成員的訪問屬性。成員的訪問屬性有公有、

保護和私有3種,而默認的訪問屬性為私有,只有公有成員才能通過類

的對象被訪問。故應在構造函數(shù)前添加“public:",否則該類無法被實例

化。變量的初始化可以通過“=”號,也可以和初始化對象一樣添加構造

參數(shù),題目已要求使用后者。本題要求輸出5個數(shù),while的循環(huán)變量i

每次減1,在i>5時循環(huán),故i初始化應為10。若循環(huán)中i每次增1,則

循環(huán)永遠不會退出。

45.(1)應改為"usingnamespacestd;

\n⑵應改為“outl.open('l.txt',ios::binary|ios::app);"。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論