2022年江西省萍鄉(xiāng)市全國計算機等級考試C++語言程序設計真題(含答案)_第1頁
2022年江西省萍鄉(xiāng)市全國計算機等級考試C++語言程序設計真題(含答案)_第2頁
2022年江西省萍鄉(xiāng)市全國計算機等級考試C++語言程序設計真題(含答案)_第3頁
2022年江西省萍鄉(xiāng)市全國計算機等級考試C++語言程序設計真題(含答案)_第4頁
2022年江西省萍鄉(xiāng)市全國計算機等級考試C++語言程序設計真題(含答案)_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2022年江西省萍鄉(xiāng)市全國計算機等級考試

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

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

一、L選擇題(10題)

L軟件結構設計的圖形工具是()o

A.DFD圖B.結構圖C.PAD圖D.N-S圖

2.設intb=12表達式b+=b-=b*b求值后b的值是。

A.552B,264C,144D.-264

3.信息隱蔽的概念與下述哪一種概念直接相關()。

A.軟件結構定義B.模塊獨立性C.模塊類型劃分D.模塊耦合度

4.下面的程序的結果是main(){intx=3,y=0,z=0;

if(x=y+z)cout<<"***elsecout<<"###

#";}

A.有語法錯誤不能通過編譯

B.輸出****

C.可以通過編譯,但是不能通過連接,因而不能運行

D.輸出####

5.有如下的對類“X”的說明,其中是錯誤的。classX{

A.inta=10;B.X();public:C.X(intval);D.~X();}

6.類的析構函數(shù)的作用是()。

A.一般成員函數(shù)B.創(chuàng)建對象C.初始化對象D.刪除對象

7.決定C++語言中函數(shù)的返回值類型的是()。

A.retum語句中的表達式類型

B.調用該函數(shù)時系統(tǒng)隨機產(chǎn)生的類型

C.調用該函數(shù)時的主調用函數(shù)類型

D.在定義該函數(shù)時所指定的數(shù)據(jù)類型

8.有下列二叉樹,對此二叉樹前序遍歷的結果為()o

A.ACFHIBEDGB.ABCDEFGHIC.ABDEGCFHID.ABCDEFHGI

9.設有intx=ll;,則表達式(x++*2/3)的值是

A.7B,8C.11D.12

10.下列對變量的引用中,錯誤的是()。

A.inta;int&p=a;

B.chara;char&p=a;

C.inta;int&p;p=a;

D.floata;float&p=a;

二、單選題(13題)

11.數(shù)據(jù)結構作為計算機的一門學科,主要研究數(shù)據(jù)的邏輯結構、對各

種數(shù)據(jù)結構進行的運算,以及()。

A.A.數(shù)據(jù)的存儲結構B.計算方法C.數(shù)據(jù)映象D.邏輯存儲

12.對于一個類定義,下列敘述中錯誤的是()。

A.如果沒有定義拷貝構造函數(shù),編譯器將生成一個拷貝構造函數(shù)

B.如果沒有定義缺省的構造函數(shù),編譯器一定將生成一個缺省的構造函

數(shù)

C.如果沒有定義構造函數(shù),編譯器將生成一個缺省的構造函數(shù)和一個拷

貝構造函數(shù)

D.如果已經(jīng)定義了構造函數(shù)和拷貝構造函數(shù),編譯器不會生成任何構造

函數(shù)

13.已知類MyClass聲明如下:

classMyClass{

intn;

public:

MyClass(intk):n(k){}

intgetValue()const{returnn;}

};

在下列數(shù)組定義中正確的是O

A.MyClassxl[2];

B.MyClassx2[2]={newMyClass(l),newMyClass(2)};

C.MyClass*x3[2];""

D.MyClass*x4[2]={MyClass(l),MyClass(2)};

14.下面關于數(shù)組的初始化正確的是()o

A.charstr[]={,a,,'b',5C5}

B.charstr[2]={'a','b','c'}

C.charstr[2][3]={{'a','b'},{'C','d'},{V,T}}

D.charstr={-a,-b,-C)

15.要利用C++流進行文件操作,必須在程序中包含的頭文件是

()。

A.iostreamB.fstreamC.strstreamD.iomanip

16.有如下程序:

ClassBase{public:

intdata;};

ClassDerivedl:publicBase{};

ClassDerived2:protectedBase{};

intmain(){

Derivedldl;Derived2d2;dl.data=O;〃①

d2.data=O;〃②return0;

)

下列關于程序編譯結果的描述中,正確的是()。

A.①②皆無編譯錯誤B.①有編譯錯誤,②無編譯錯誤C.①無編譯錯誤,

②有編譯錯誤D.①②皆有編譯錯誤

17.軟件需求分析階段的工作,可以分為四個方面:需求獲取、需求分

析、編寫需求規(guī)格說明書以及。

A.階段性報告B.需求評審C.總結D.都不正確

18.下面程序輸出的結果為()。

#include''iostream.h"

classA

{public:

A(){cOUt<<"CLASSA"<<endl;}

?A(){)};

ClaSSB:publicA

{public:

B(){cout<<"CLASSB"<<endl;}

?B(){}};

voidmain()

{A*P;

P=newB:

B*q:

q=newB;}

A.CLASSA

B.CLASSACLASSBCLASSBCLASSB

C.CLASSA

D.CLASSACLASSBCLASSBCLASSACLASSBCLASSBCLASSB

19.設int&max(int&,int&)返回兩參數(shù)中較大者,如有兩整型變量inta=5;int

b=10;在執(zhí)行max(a,b)++后,a,b的值分別為

A.5,10B,6,10C,5,11D,6.11

20.為了使模塊盡可能地獨立,要求

A.模塊的內聚程度要盡量高,且各模塊間的耦合程度要盡量強

B.模塊的內聚程度要盡量高,且各模塊間的耦合程度要盡量弱

C.模塊的內聚程度要盡量低,且各模塊間的耦合程度要盡量弱

D.模塊的內聚程度要盡量低,且各模塊間的耦合程度要盡量強

21.設R是一個2元關系,S是一個3元關系,則下列運算中正確的是

()o

A.R-SB.RxSC.RASD.RUS

22.某二叉樹有5個度為2的結點,則該二叉樹中的葉子結點數(shù)是

A.10B.8C.6D.4

23.C++語言類體系中,不能被派生類繼承的有()o

A.轉換函數(shù)B.構造函數(shù)C.虛函數(shù)D.靜態(tài)成員函數(shù)

三、2.填空題(12題)

24.結構化設計主要分為系統(tǒng)設計和模塊設計,【】的任務是決定系統(tǒng)

的模塊結構。

25.閱讀下面程序:

#include<iostream.h>

voidfunl(chara,charb)

(

charc;

c=a;a=b;b=C;

)

voidfun2(char&a,charb)

(

charc;

c=a;a=b;b=c;

)

voidfun3(char&a,char&b)

(

charc;

c=a;a=b;b=C;

)

voidmain()

(

chara,b;

a='A';b='B';

funl(a,b);cout<<a<<b;

a='A';b='B';

fun2(a,b);cout<<a<<b;

a='A';b='B';

fun3(a,b);cout<<a<<b;

則該程序的輸出為【】。

26.在數(shù)據(jù)庫的概念結構設計中,常用的描述工具是【】。

27.在長度為n的有序線性表中進行二分查找,最壞的情況下需要的比

較次數(shù)為【】。

28.下列程序的招待結果是【]o

#include<iostream,h>

floattemp;

float&fn2(floatr)

(

temp=r*r*3.14;

returntemp;

)

voidmain()

(

floata=fn2(5.0);

float&b=fn2(5.0)

b=20;

cout<<temp<<endl;

29.在擴展的E-R模型中;子類【】超類所有的聯(lián)系和屬性。

30.在程序設計階段應該采取【】和逐步求精的方法,把一個模塊的功

能逐步分解,細化為一系列具體的步驟,進而用某種程序設計語言寫成

程序。

31.寫出下列程序的運行結果【】。

#include<iostream.h>.

#include<fstream.h>

#include<stdlib.h>

voidmain()

(

fstreamoutfile,infile;

outfile.open("data.clat",ios::out);

if(!outfile)

(

cout<<"Can'topenthefile."<<endl;

abort();

)

outfile<<"1234567890"<<endl;

outfile<<"aaaaaaaaa"<<endl;

outfile<<”**********"<<endl;

outfile.close();

infile.open("data.dat",ios::in);

if(Jinfile)

(

cout<<"Can'topenthefile."<<endl;

abort();

charline[80];

int1=0;

while(Jinfile.eof())

I++;

infile.getline(line,sizeof(line));

cout<<I<<<<line<<endl;

)

infile.close();

32.main函數(shù)中發(fā)生編譯錯誤的語句是[]o

#include<iostream,h>

classA

(

public:

inta;

constintb:

A():a(10),b(20){

voidfun()const

(

cout<<"a="<<a<<"\tb="<<b<<endl;

voidmain()

Aobj1;

constA*ptr=newA:

ptr=&obj1;

ptr->a=100;

ptr->fun(),

33.下列程序的輸出結果是【】。

#include<iostream>

usingnamespacestd;

intmain()

intdata=l;

int&r=data;

data+=5;

r+=5;

cout<<data<<endl;

return0;

)

34.在樹形結構中,樹根結點沒有【】。

35.靜態(tài)成員函數(shù)可以直接訪問類的【】成員,不能直接訪問類的【】

成員。

四、程序改錯題(10題)

36.使用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

****************

TCobjl;

objl.Print;

TCobj2(3);

II********ej*j*or********

objl.number=10;

II*************

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

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

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

9,8,7,6,5

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

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

試題程序:

#include(iostream.h>

classTC

I********ei*ror********/

TC(inti)

(

m_i=i;

)

voidprint

(

cout?—m_i?,;

}

public:

intm_i;

intmain

I********ej*por********I

inti;

TC04(10);

while(i>5)

I********eirOr********I

1++

04.print;

)

cout?endl;

returnO;

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

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

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

到屏幕中。

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

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

試題程序:

#include<iostream.h>

voidmain

(

inti=O;

charstr[120];

cout?"Enterastringendwith?."?endl;

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

cin.getline(str,120);

II********ej*j*or********

while(str)

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

if(str[i])=a)

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

i++;

)

cout?str?endl;

return;

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

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

number=l

number=10

number=100

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

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

試題程序:

#include<iostream.h>

classTC

(

public:

TC(inti)

number=i;

voidSetNumber(intm)

(

number=m;

)

intGetNumberconst

(

returnnumber;

)

voidPrintconst

(

cout?"number="?number?endl;

)

private:

intnumber;

);

voidmain

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

TCobjl;

objl.Print;

TCobj2(3);

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

objl.number=10;

II********ej*j*0j**^^o******

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

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

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

確。

程序輸出:

8

8

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

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

試題程序:

#include(iostream.h>

classCO

public:

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

staticintn=0:

CO

n++:

?CO

):

I********enor********I

intCO::n;

voidmain

(

COobj;

COobj2[7];

CO*C=NULL:

c=&obj:

/********epj^0r********I

eout?C.n?endl;

cout?C0::n?endl;

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

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

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

中。

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

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

試題程序:

#include<iostream.h>

voidmain

inti=0;

charstr[120];

cout?"Enterastringendwith?."?endl;

II********ej*j*or********

cin.getline(str,120);

II********eppor********

while(str)

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

if(str[i])=a)

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

i++;

cout?str?endl;

return;

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

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

100

37

32

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

可。

試題程序:

#include<iostream.h>

******ei^or******

voidmain

//******enor******

intm=0142:

//************

intn=0X27:

intq=32;

cout<<m<<endl;

cout<<n<<endl;

cout<<q<<endl;

return;

)

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

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

Constructor,i=0,

Destructor

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

試題程序:

#include(iostream.h)

classTC

(

inti;

public:

TC;

voiddisplay;

-TC;

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

TC:TC

cout?"Constructor"?"

i=0;

II******ej*x*or******

TC:display

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

II******ej*x*or******

TC:TC

COUI?"Destructor"?endl:

voidmain

TCa;

a.display;

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

運行時有錯誤,請改正錯誤,使程序正常運行,并且要求最后一個

catch必須拋出執(zhí)行的任何異常。

程序異常,輸出信息為

error

0

ERROR

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

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

試題程序:

#include<iostream.h)

intmain

(

try

(

throw("error");

catch(chars)

(

cout?s?endl;

)

try

(

throw((int)0);

)

//********e

catch

cout?i?endl;

try

throw(O);

throw("error");

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

catch

(

cout?"ERROR"?endl;

)

returnO;

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

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

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

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

構,錯誤的語句在

/I************白勺-?,jo

試題程序:

#include<iostream>

#include<fstream>

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

usingstd;

voidWriteFile(char*s)

ofstreamoutl;

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

outl.open("l.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.使用VC++6.。打開源程序文件3.cpp。其中類TC用于把文件

輸出到屏幕,然后進行文件的分割。分割的方法如下:第一個文件的

大小是文件的前一半,另外一個文件的大小是剩余部分。此程序將

in.txt文件中的內容輸出到

屏幕,并且將文件按照以上方式分割,存于文件。utl.txt和out2.txt

中。

其中定義的類并不完整,按要求完成下列操作,將類的定義補充完

整。

⑴從輸入文件中獲得一個字符,并判斷是否到文件結

尾,如果到文件結尾,則退出循環(huán)。請在注釋1后添加適當?shù)恼Z句。

(2)把獲得的輸入文件的內容存儲到bur中,并且用len

記錄下文件的長度。請在注釋2后添加適當?shù)恼Z句。

(3)將輸入文件的后一半內容存儲在第二個文件中,請

在注釋3后添加適當?shù)恼Z句。

(4)使用文件流對象打開輸入文件in.txt,請在注釋4

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

注意:增加代碼或者修改代碼的位置已經(jīng)用符號表示出來。請不要修

改其他的程序代碼。

試題程序:

#include<iostream.h>

#include<fstream.h>

#include<stdlib.h)

classTC

(

public:

TC(char*fileName)

(

len=O;

fstreaminfile;

infile.open(fileName,ios::in)

charch;

while

(

cout?ch;

//********2********

)

infile,close;

)

voidsplit

(

fstreamoutfilel;

fstreamoutfile2;

outfilel.open("outl.txt",ios::out);

outfile2.open("out2.txt",ios::out);

inti=0:

for(i=0;i<len/2;i++)

outfilel?buf[i];

do

//********3********

)

while(i!=len);

outfilel.close;

outfile2.close;

)

prwate:

intlen;

charbuf[1024];

);

voidmain

(

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

TCobj;

obj.split;

return;

)

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

義的類不完整,按要求完成下列操作,將類的定義補充完整。每賣出

一個水果,則計算水果的重量,還要計算所有賣出水果的總重量以及

總個數(shù),同時允許退貨,請按照以下的操作,把類補充完整。

⑴定義類TCFruit的私有靜態(tài)數(shù)據(jù)成員float型變量AllWeight和int型

變量A11N0,請在注釋1后添加適當?shù)恼Z句。

(2)完成類TCFruit的帶一個float型變量w的構造函數(shù),并把這個w加

到AllWeight中,并且AllNo自加。請在注釋2后添加適當?shù)恼Z句。

⑶在析構函數(shù)中,在AllWeight中減去weight,然后AllNo自減,請

在注釋3后添加適當?shù)恼Z句。

(4)完成靜態(tài)成員變量的初始化為0,請在注釋4后添加適當?shù)恼Z句。

注意:增加或者修改代碼的位置已經(jīng)用符號表示出來,請不要修改其

他的程序代碼。

試題程序:

#include(iostream.h>

classTCFruit

(

private:

floatWeight;

staticintAHNo;

public:

TCFruit(floatw)

(

//?I>?I>?I>*1**1**1**1**1**1**1^

AllWeight+=w:

AllNo++:

TCFruit

//********3********

A11Weight-=Weight:

)

voiddisplay

(

cout?"SellaFruitwith"?Weight?"k9"<<

endl;

cout?,,Allsellnumber:''?A11No?endl;

cout?"Allsellweight:"?A11Weight?"k9"?

endl?endl;

)

);

II********4********

floatTCFruit::AllWeight=O.0;

intmain

(

TCFruitFruitl(l.2);

Fruitl.display;

TCFruitFruit2(2.3);

Fruit2.display;

returnO;

)

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

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

序文件test21_3.cpp,其中定義了用于表示長方形的類CRectangle,但類

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

的定義補充完整。

⑴定義CRectangle的構造函數(shù),函數(shù)含參數(shù)dx,dy,da和db,它們都

是double型的數(shù)據(jù),請將類數(shù)據(jù)成員x,y,a和b初始化,并輸出

“CRectangleConstructed."(另起一行輸出該文字)。請在注釋“〃**1**之后

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

(2)完成類CRectangle的成員函數(shù)getperimeter。的定義,將以a和b為

邊的矩形周長的值返回,請在注釋“〃**2**”之后添加適當?shù)恼Z句。

(3)完成類CRectangle的成員函數(shù)getarea。的定義將以a和b為邊的矩

形面積的值返回,請在注釋“〃**3**”之后添加適當?shù)恼Z句。

(4)完成類CRectangle的友元函數(shù)frienddoubledist(CRectangle&rt)的定

義,先定義兩個double型的臨時變量tx和ty,然后將參數(shù)對象rt的數(shù)

據(jù)成員x與a的一半相加,y與b的一半相加,分別賦值給tx和ty,最

后求出tx與ty的平方和的值之后將它的平方根返回,將請在注釋

“〃**4**,,之后添加適當?shù)恼Z句。

輸出結果如下:

CRectangleConstructed.

Down_Leftcornerpointis:(100,50)

a=1200,b=700

Perimeterofthisrectangleis:3800

Areaofthisrectangleis:840000

TheDistanceis:806.226

CRectangleConstructed.

Down_Leftcornerpointis:(200,150)

a=2000,b=800

Perimeterofthisrectangleis:5600

Areaofthisrectangleis:1.6e+006

TheDistanceis:1320.04

CRectangleDestructed.

CRectangleDestructed.

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

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

#include<iostream.h>

#include<math.h>

classCRectangle

(一

private:

doublex;

doubley;

doublea;

doubleb;

public:

CRectangle()

(-

cout<<"\nCRectangleConstructed."<<endl;

)

CRectangle(doubledx,doubledy,doubleda,doubledb)

(“

〃**]**

a=da;

b=db;

cout<<"\nCRectangleConstructed."<<endl;

CRectangle()

cout<<"CRectangleDestructed."<<endl;

)

voidputxy(doubledx,doubledy){x=dx;y=dy;}

voidputab(doubleda,doubledb)(a=da;b=db;}

doublegetx(){returnx;}

doublegety(){returny;}

doublegeta(){returna;}

doublegetb(){returnb;}

doublegetperimeter()

(-

〃**2**

)

doublegetarea()

(一

〃**3**

)

frienddoubledist(CRectangle&rt);

);

doubledist(CRectangle&rt)

{,

ty=rt.y+rt.b/2.0;

returnsqrt(tx*tx+ty*ty);

)

voidmain()

(

CRectanglerect;

rect.putxy(100.0,50.0);

rect.putab(1200.0,700.0);

cout<<"Down_Leftcornerpointis:("<<rect.getx()<<","<<

rect.gety()<<")"<<endl;

cout<<"a="<<rect.geta()<<",b="<<rect.getb()<<endl;

cout<<"Perimeterofthisrectangleis:"<<rect.getperimeter()<<endl;

cout<<"Areaofthisrectangleis:"<<rect.getarea()<<endl;

cout<<

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

序文件testl8_3.cpp,其中定義了用于表示雇員的類Employee,但類

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

定義補充完整。

(1)補充類Employee的構造函數(shù),請使用字符串函數(shù)將數(shù)據(jù)成員name,

address,city,province和zipcode分另初始化為參數(shù)*nm,*addr,*city,

*prov和*zip的值。請在注釋“〃**1**”之后添加適當?shù)恼Z句;

(2)完成類Employee的成員函數(shù)ChangeName(char*newName)的定義

將newName指向的內容賦值給數(shù)據(jù)成員name,請在注釋“〃**2**”之后

添加適當?shù)恼Z句;

(3)完成類Employee的成員函數(shù)Display。的定義,先使用指針buffer動

態(tài)申請一個char型的200單位大小的空間,然后使用字符串函數(shù)將數(shù)

據(jù)成員name和address依次復制其中,最后返回該指針buffer,將請在

注釋“〃**3**,,之后添加適當?shù)恼Z句。輸出結果如下:

王東建國路大街105號

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

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

#include<iostream.h>

#include<string.h>

classEmployee{

protected:

charname[20];

charaddress[100];

charcity[20];

charprovince[20];

charzipcode[10];

public:

Employee(char*nm,char*addr,char*city,char*prov,char*zip);

voidChangeName(char*newName);

char*Display();

};

Employee::Employee(char*nm,char*adr,char*cit,char*prov,char*zip)

(

〃**]**

strcpy(city,cit);

strcpy(province,prov);

strcpy(zipcode,zip);

}.

voidEmployee::ChangeName(char*newName)

{”

〃**2**

)

char*Employee::Display()

{'

〃**3**

strcat(buffer,address);

returnbuffer;

)

voidmain()

(

Employeeemp("李華","建國路大街105號","石家莊“,“河北“,"103400");

emp.ChangeName("王東”);

cout<<emp.Display()<<endl;

)

參考答案

1.BB.【解析】常用的軟件結構設計工具是結構圖,也稱程序結構圖。

DFD圖(數(shù)據(jù)流圖)是以圖形的方式描述數(shù)據(jù)在系統(tǒng)中流動和處理的過

程,只反映系統(tǒng)必須完成的邏輯功能。它是需求分析階段的圖形工具。

盒式圖(N—S圖)和問題分析圖(PAD.是詳細設計的常用工具。

2.D

3.B解析:信息隱蔽是指在一個模塊內包含的信息(過程或數(shù)據(jù)),對于不

需要這些信息的其他模塊來說是不能訪問的。模塊獨立性是指每個模塊

只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡

單。衡量軟件的模塊獨立性的度量標準是耦合性和內聚性。一個模塊的

耦合性越強,則該模塊的模塊獨立性越強。

4.D解析:注意本題本意是考察x==y+z,但是少寫了一個=,因此邏輯

表達式變成了賦值語句,故x的值為0,即假,因此程序執(zhí)行else部分。

本題答案為D。

5.A

6.D解析:析構函數(shù)的作用是刪除對象。

7.D

8.C解析:對二叉樹的前序遍歷是指先訪問根結點,然后訪問左子樹,

最后訪問右子樹,并且,在訪問左、右子樹時,先訪問根結點,再依

次訪問其左、右子樹。

9.A解析:當自加運算符做后綴表達式的時候,表達式的值不變,只有

變量的值增1,所以表達式(x++*2/3)相當于(11*2/3)取整后為7。

10.C解析:本題考核引用的定義和初始化。引用具有如下特點:

①引用能夠使用任何合法變量名。

②引用不是變量,所以必須在定義時初始化,而且一旦初始化之后,

就不能再成為其他變量的引用。

③引用不是值,不占存儲空間,說明引用時,目標的存儲狀態(tài)不會改

變。所以,引用只有說明,沒有定義。

④引用僅在說明時帶有“&”,以后就像普通變量一樣使用,不能再帶

在選項C中,由于在定義引用p后沒有進行初始化,所以此語句是錯

誤的。故本題答案是C。

1LA解析:數(shù)據(jù)結構作為計算機的一門學科,主要研究和討論以下三

個方面的問題:①數(shù)據(jù)集合中各數(shù)據(jù)元素之間所固有的邏輯關系,即

數(shù)據(jù)的邏輯結構;②在對數(shù)據(jù)進行處理時,各數(shù)據(jù)元素在計算機中的

存儲關系,即數(shù)據(jù)的存儲結構;③對各種數(shù)據(jù)結構進行的運算。

12.B

本題考查構造函數(shù)和復制構造函數(shù),如果沒有定義構造函數(shù),編譯器

將生成一個缺省的構造函數(shù)和一個拷貝構造函數(shù),如果已經(jīng)定義了構

造函數(shù)和拷貝構造函數(shù),編譯器不會生成任何構造函數(shù)。如果沒有定

義拷貝構造函數(shù),編澤器將生成一個拷貝構造函數(shù)。

13.C

本題主要考查了對象數(shù)組、指針數(shù)組和new運算符。new運算符返回

指向指定類型的一個指針。對象數(shù)組是指數(shù)組元素為對象的數(shù)組,該

數(shù)組中的每一個元素都是同一個類的對象。定義對象數(shù)組時,系統(tǒng)將

自動調用構造函數(shù)創(chuàng)建每一個對象元素,因為類MyClass中定義了一

個有一個整型參數(shù)的構造函數(shù),編譯器將不再為其生成缺省構造函

數(shù),所以定義對象數(shù)組時必須分別調用有參構造函數(shù)為每一個數(shù)組元

素指定初始值。因此選項A錯誤,沒有初始化對象數(shù)組;選項B中,用

指向對象的指針初始化對象數(shù)組,類型不匹配,因此選項B錯誤;指針

數(shù)組是由指針組成的數(shù)組,即數(shù)組中的每一個元素都是指向同一類型

對象的指針。選項C定義了指向MyClass類對象的指針數(shù)組x3,該定

義語句正確;選項D中,只能用指向MyClass類對象的指針或用已有的

MyClass類對象的地址來初始化指針數(shù)組x4的每一個元素,不能用對

象進行初始化,因此選項D錯誤。

14.A

本題考查的是字符數(shù)組的初始化。選項B中用3個底素初始化大小為

2的數(shù)組,越界了;選項c中應該是2行3列的數(shù)組,題中使用3行2

列初始化;選項D中數(shù)組合后應用方括號。

15.B

解析:iostream通用I/O流類和其他I/O流的基類;fstream類用來對文

件流進行操作,fstream類的頭文件是fstream.h:stxstream類同時可以

支持C風格的串流的輸入輸出操作iomanip是I/O流控制頭文件,就

像c中的格式化輸出一樣。

16.C

本題考查公用繼承和保護繼承對基類成員的訪問屬性。在公用繼承

中,基類的公用成員和保護成員在派生類中保持原有訪問屬性,其私

有成員仍為基類私有、稿.受保護繼承中,基類的公用成員和保護成

員在派生類中成了保護成員,其私有成員仍為基類私有。本題中

Derivedl公用繼承Base.所以①編譯正確,Derived2保護繼承Base,

所以②編譯不正確。

17.B解析需求分析階段的工作,可以概括為以下4個方面需求獲取、

需求分析、編寫需求規(guī)格說明書和需求評審。本題的正確答案為B。

18.C

Co【解析】本題考查類的繼承、類的實例化和構造函數(shù)、析構函數(shù)的

調用方式以及何時調用。每實例化一個類就要調用其構造函數(shù),結束

運行該實例后調用析構函數(shù)。

19.C

考點:本題主要考查知識點為引用作為函數(shù)參數(shù)透析:執(zhí)行

max(a,b)++后,函數(shù)返回變量b后加1,即b=ll.因為函數(shù)參數(shù)采用的

引用方式,使用改變的是實參變量b的值。

20.B解析:程序設計的相關概念。

21.B解析:關系的交⑺)、并(U)和差(一)運算要求兩個關系是同元的,

顯然作為二元的R和三元S只能做笛卡兒積運算。

22.C

根據(jù)二叉樹的性質,在任意二叉樹中,度為0的結點(即葉子結點)總是

比度為2的結點多一個。

23.B

Bo【解析】派生類對象的數(shù)據(jù)結構是由基類中說明的數(shù)據(jù)成員和派生

類中說明的數(shù)據(jù)成員共同構成,所以不能繼承基類的構造函數(shù),必須

重新定義。

24.系統(tǒng)設計系統(tǒng)設計解析:結構化設計主要分為系統(tǒng)設計和模塊設計

-系統(tǒng)設計的任務是決定系統(tǒng)的模塊結構:模塊設計的任務是具體考慮

每一個模塊內部采用什么算法,模塊的輸入、輸出以及該模塊的功能。

25.ABBBBA

26.E-R圖E-R圖

27.1og2nlog2n解析:在長度為n的有序線性表中進行二分查找,最壞的

情況下需要的比較次數(shù)為logzn。

28.2020解析:本題考察全局變量和引用的綜合使用。在主函數(shù)中,b實

際上是temp的一個引用。因此在給b賦值20的時候,輸出的temp就

是20o

29.繼承繼承

30.自頂而下自頂而下

31.1:12345678902:aaaaaaaaa3:**********4:

32.ptr->a=100;ptr->a=100;解析:本題考察的是const的使用。const

修飾的是指針變量的值,及指針本身是可變的,但指針所指對象的值是

常量,即ptr->a是不能被改變的。

33.11

34.前件前件解析:在樹形結構中,每一個結點只有一個前件,稱為父

結點,沒有前件的結點只有一個,稱為樹的根結點;每一個結點可以有

多個后件,它們都稱為該結點的了結點。沒有后件的結點稱為葉子結點。

35.靜態(tài)非靜態(tài)靜態(tài)\r\n非靜態(tài)解析:靜態(tài)成員函數(shù)可以直接訪問該類

中的靜態(tài)數(shù)據(jù)成員,而不能訪問該類中的非靜態(tài)數(shù)據(jù)成員。

36.⑴應改為"TCobjl(l);

\n(2)應改為“Objl.SetNumber(lO);”。

\n(3)應改為“0bj2.SelNumber(lOO);

\n【解析】本題第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ù),所以修改為

5,

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

第3處"(2.5611^11加61"(10());”語句中的1(2為類,并不是對象,這里

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

“obj2,SetNumber(lOO);

37.⑴應添加“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)永遠不會退出。

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

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

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

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

函數(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,所以修改為

,5

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

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

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

(3)應改為“0bj2.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);

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

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

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

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

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

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

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

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

5,

W(3)應改為"iRstr[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[i]是否為小寫字符,而現(xiàn)有的語句只是判斷字符是否大于a,

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

42.(1)“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;

43.(1)應改為“TC::TC”。

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

\n(3)應改為“TC::~TC”。

\n【解析】在類的外部定義成員函數(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”。

44.⑴應改為"catch(char*s)”。

⑵應改為“cateh(

溫馨提示

  • 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

提交評論