2022年湖北省孝感市全國計(jì)算機(jī)等級考試C++語言程序設(shè)計(jì)真題(含答案)_第1頁
2022年湖北省孝感市全國計(jì)算機(jī)等級考試C++語言程序設(shè)計(jì)真題(含答案)_第2頁
2022年湖北省孝感市全國計(jì)算機(jī)等級考試C++語言程序設(shè)計(jì)真題(含答案)_第3頁
2022年湖北省孝感市全國計(jì)算機(jī)等級考試C++語言程序設(shè)計(jì)真題(含答案)_第4頁
2022年湖北省孝感市全國計(jì)算機(jī)等級考試C++語言程序設(shè)計(jì)真題(含答案)_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

2022年湖北省孝感市全國計(jì)算機(jī)等級考試

C++語言程序設(shè)計(jì)真題(含答案)

學(xué)校:班級:姓名:考號:

一、1.選擇題(10題)

1.C++語言中關(guān)于構(gòu)造函數(shù)的說法正確的是

A.構(gòu)造函數(shù)的函數(shù)名不必和類名相同B.構(gòu)造函數(shù)只能每一個(gè)C.每個(gè)

類必定有構(gòu)造函數(shù)D.構(gòu)造函數(shù)必有返回值

2.假定MyClass為一個(gè)類,則該類的拷貝構(gòu)造函數(shù)的聲明語句為()。

A.MyClass&(MyClassx);

B.MyClass(MyClassx)

C.MyClass(MyClass&x);

D.MyClass(MyClass*x)

3.若執(zhí)行語句:cout<<setfillC*')<<setw(10)<<123<<"OK"<<

endl后將輸出

A*******]230K

B[23********OK

C*******]23********OK

D[23*******OK********

4.關(guān)于C++語言與C語言關(guān)系描述中錯(cuò)誤的是

A.C++語言是C語言的超集

B.C++語言對C語言進(jìn)行了擴(kuò)充

C.C++語言包含C語言的全部語法特征

D.C++語言與C語言都是面向?qū)ο蟮某绦蛟O(shè)計(jì)語言

5.模板是實(shí)現(xiàn)類屬機(jī)制的一種工具,其功能非常強(qiáng)大,它允許用戶構(gòu)造

類屬類,即()。

A.模板函數(shù)B.函數(shù)模板C.模板類D.類模板

6.下列關(guān)系模型中,能使經(jīng)運(yùn)算后得到的新關(guān)系中屬性個(gè)數(shù)多于原來關(guān)

系中屬性個(gè)數(shù)的是

A.選擇B.連接C.投影D.并

7.語句ofstreamf("SALARY.DAT",ios::app|los::binary);的功能是建立

流對象f,試圖打開文件SALARY.DAT并與之連接,并且。

A.若文件存在,將文件寫指針定位于文件尾;若文件不存在,建立一個(gè)

新文件

B.若文件存在,將其置為空文件;若文件不存在,打開失敗

C若文件存在,將文件寫指針定位于文件首;若文件不存在,建立一個(gè)

新文件

D.若文件存在,打開失??;若文件不存在,建立一個(gè)新文件

8.在不同文件的函數(shù)中,對非靜態(tài)全局變量的引用要加的關(guān)鍵字是()。

A.registerB.autoC.staticD.extern

9.關(guān)于成員函數(shù)的重載,說法正確的是()。

A.就是在類中設(shè)計(jì)多個(gè)函數(shù)名相同,參數(shù)個(gè)數(shù)及參數(shù)類型也相同的函數(shù)

B.析構(gòu)函數(shù)可以重載

C.函數(shù)重載,要求函數(shù)名相同,但參數(shù)個(gè)數(shù)不同,或參數(shù)相同,但其類

型不同

D.構(gòu)造函數(shù)不可重載

10.在任意一棵二叉樹的前序序列和后序序列中,各葉子之間的相對次

序關(guān)系()。

A.不一定相同B.都不相同C.互為逆序D.都相同

二、單選題(13題)

11.已知函數(shù)f的原型是"voidf(int*x,int&y);”,變量vl、v2的定義是

“intvl,v2;",下列調(diào)用語句中,正確的是()。

A.f(vl,v2)B.t(vl,&v2)C.f(&vl,v2)D.f(&vl,&v2);

12.有如下類定義:

classTest

{public:

Test(){a=0;c=0;}//①

intf(inta)const{this->a=a;}//②

staticintg(){returna;}//③

voidh(int

B.{Test::b=b;};//④

private:

inta;

staticintb;

constintc;

);

intTest::b=0;

在標(biāo)注號碼的行中,能被正確編譯的是

A.①B.②C.③D.@

13.C++程序執(zhí)行總是從【】開始的。

A.main函數(shù)B.第一行C.頭文件D.函數(shù)注釋

14.以下程序的正確運(yùn)行結(jié)果是()。#include<iostream.h>intfun(int);

voidmain(){inta=2,i;for(i=0;i<3;i++)cout<<fun(a)<<endl;cout<<

endl;}intfun(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);}

A.4,5,6B.6,7,9C.7,8,9D.7,7,7

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

的是_________O

A.charfun(int,int);

B.doublefun(int,int,double);

C.intfun(int,clar*);

D.floatfun(int,int,int);

16.C++語言中關(guān)于構(gòu)造函數(shù)的說法正確的是()。

A.構(gòu)造函數(shù)的函數(shù)名不必和類名相同B.構(gòu)造函數(shù)只能有一個(gè)C.每個(gè)

類必定有構(gòu)造函數(shù)D.構(gòu)造函數(shù)必有返回值

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

選擇的存儲(chǔ)類別是()。

A.A.autoB.xegisterC.staticD.autO或register

18.下列類的定義中,有()處語法錯(cuò)誤。classBase{public:Base(){}

Base(inti){data=i;}private:intdata;};classDerive:publicBase{public:

Derive():Base(O){}Derive(intx){d=x;}voidsetvalue(inti){data=i;}

private:d;};

A.lB.2C.3D.4

19.棧底至棧頂依次存放元素A、B、C、D,在第五個(gè)元素E入棧前,

棧中元素可以出棧,則出棧序列可能是()。

A.ABCEDB.DCBEAC.DBCEAD.CDABE

20.下列關(guān)于棧的敘述正確的是()。

A.棧頂元素最先被刪除B.棧頂元素最后才能被刪除C.棧底元素永遠(yuǎn)

不能被刪除D.以上三種說法都不對

21.當(dāng)需要將一^?函數(shù)boolisnunlber(charc)聲明為內(nèi)聯(lián)函數(shù)時(shí),此內(nèi)聯(lián)函

數(shù)的函數(shù)原型為()o

A.enumboolisnumber(charc);

B.defineboolisnumber(charc);

C.inlineboolisnumber(charc);

D.extemboolisnumber(charc);

22.函數(shù)模板:template<classT>Tadd(Tx,Ty){returnx+y;}下列

對add函數(shù)的調(diào)用不正確的是()。

A.add<>(1,2)B=add<int>(1,2)C.add(1.0,2)D.add(1.0,2.0)

23.下列工具中為需求分析常用工具的是()0

A.PADB.PFDC.N-SD.DFD

三、2.填空題(12題)

24.結(jié)構(gòu)化分析方法是面向進(jìn)行分析的方法。

25.類支持輸入操作,類支持輸出操作。

26.在面向?qū)ο蠓椒ㄖ?,類之間共享屬性和操作的機(jī)制稱為【】。

27.在下面程序的橫線處填上適當(dāng)?shù)恼Z句,使該程序執(zhí)行結(jié)果為10。

#include<iostream>

usingnamespacestd;

classMyClass

{

public:

MyClasS(intA)

('

X=a;

【】〃取x的值

private:

intx;

intmain()

MyClassmy(10);

28.非成員函數(shù)只有在聲明為類的【】才能訪問這個(gè)類的所有private成

員。

29.設(shè)在主函數(shù)中有以下定義和函數(shù)調(diào)用語句,且fun()函數(shù)為void類

型,請寫出fun()函數(shù)的首部【】。

intmain()

(

doubles[10][22];

intn;

fun(s);

return0;

}

30.C++語言程序由函數(shù)構(gòu)成,其至少包含一個(gè)函數(shù),這就是【】。

31.C++程序是從【】函數(shù)開始執(zhí)行的。

32.以下程序的輸出結(jié)果是【】。

#include<iostream.h>

voidmain()

{inta=0;

a+=(a=8);

cout<<a;

)

33.基類為虛函數(shù),撤銷對象調(diào)用析構(gòu)函數(shù)時(shí),采用聯(lián)編。

34.【】技術(shù)是將數(shù)據(jù)和行為看成是一個(gè)統(tǒng)一的整體,使一個(gè)軟件成分,

即所謂的對象。

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

提供了【】機(jī)制。

四、程序改錯(cuò)題(10題)

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

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

入多行,當(dāng)輸入字符“?”時(shí),默認(rèn)字符輸入結(jié)束,最后把結(jié)果輸出到屏幕

中。

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

構(gòu),錯(cuò)誤的語句在//******error******的下面。

試題程序:

#include<iostream.h>

voidmain

inti=O;

charstr[120];

cout?"Enterastringendwith?."?endl;

!1********enor********

cin.getline(str,120);

!1********error********

while(str)

!1********error********

if(str[i])=a)

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

1++;

cout?str?endl;

return;

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

運(yùn)行時(shí)有錯(cuò)誤,請改正錯(cuò)誤,使程序正常運(yùn)行,并且要求最后一個(gè)

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

程序異常,輸出信息為

error

O

ERROR

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

構(gòu),錯(cuò)誤的語句在//******errc*r******的下面。

試題程序:

#include<iostream.h)

intmain

try

(

throw("error");

)

I/********enor********

catch(chars)

{

cout?s?endl;

)

try

(

throw((int)0);

)

II********enor********

catch

(

cout?i?endl;

)

try

{

throw(O);

throw("error");

)

II********enor********

catch

(

cout?"ERROR"?endl;

returnO;

)

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

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

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

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

構(gòu),錯(cuò)誤的語句在

******error******的下面。

試題程序:

#include<iostream>

#include<fstream>

!1********enor********

usingstd;

voidWriteFile(char*s)

ofstreamoutl;

!1********error********

outl.open("l.txt",binarylapp);

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

!1********enor********

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;

)

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

運(yùn)行時(shí)有錯(cuò),請改正其中的錯(cuò)誤,使程序正常運(yùn)行,輸出的結(jié)果為

Constructor,i=0,

Destructor

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

可。

試題程序:

#include(iostream.h)

classTC

(

inti;

public:

TC;

voiddisplay;

TC;

};

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

TC:TC

cout?"Constructor"?","

i=0;

)

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

TC:display

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

!!******enor******

TC:TC

COUI?"Destructor"?endl:

voidmain

TCa;

a.display;

)

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

1.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請改正程序中的錯(cuò)誤。本程序要求實(shí)

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

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

構(gòu),錯(cuò)誤的語句在

II******error******白勺~曲j。

試題程序:

#include<iostream>

#include<fstream>

II********enor********

usingstd;

voidWriteFile(char*s)

(

ofstreamoutl;

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

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

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

(

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

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);

retumO;

41.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)

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

number=1

number=10

number=100

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

構(gòu),錯(cuò)誤的語句在//******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

!1********error********

TCobjl;

objl.Print;

TCobj2(3);

!1********enor********

objl.number=10;

Ii********enx)r*%()******

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

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

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

能輸入多行,當(dāng)輸入字符“?”時(shí),默認(rèn)字符輸入結(jié)束,最后把結(jié)果輸出

到屏幕中。

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

構(gòu),錯(cuò)誤的語句在//******errc)r******的下面。

試題程序:

#include<iostream.h>

voidmain

inti=O;

charstr[120];

cout?"Enterastringendwith?."?endl;

II********enor********

cin.getline(str,120);

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

while(str)

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

if(str[i])=a)

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

i++;

)

cout?str?endl;

return;

)

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

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

number=1

number=10

number=100

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

構(gòu),錯(cuò)誤的語句在//******errc)r******的下面。

試題程序:

#include<iostream.h>

classTC

{

public:

TC(inti)

(

number=i;

)

voidSetNumber(intm)

(

number=m;

)

intGetNumberconst

retumnumber;

voidPrintconst

cout?"number="?number?endl;

)

private:

intnumber;

};

voidmain

(

1I********ej*ror********

TCobjl;

objl.Print;

TCobj2(3);

!!********error********

objl.number=10;

II********enor*******

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

)

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

行時(shí)有錯(cuò),請改正其中的錯(cuò)誤,使程序正常運(yùn)行,輸出的結(jié)果為

Constructor,i=0,

Destructor

注意:錯(cuò)誤的語句在//******error******的下面,修改該語句即可。

試題程序:

#include(iostream.h)

classTC

(

inti;

public:

TC;

voiddisplay;

-TC;

);

I!******eiTor******

TC:TC

(

cout?"Constructor"?",

i=0;

)

II******eno1******

TC:display

|

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

1I******enor******

TC:TC

COUI?"Destructor"?endl:

voidmain

TCa;

a.display;

45.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)

行時(shí)有錯(cuò)誤,請改正程序中的錯(cuò)誤,使得程序輸出:

9,8,7,6,5

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

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

試題程序:

#include(iostream.h>

classTC

!********error********/

TC(inti)

(

m_i=i;

)

voidprint

{

cout?—m_i?,;

)

public:

intm_i;

intmain

I********error********/

inti;

TC04(10);

while(i>5)

!********errQr********/

i++:

04.print;

cout?endl;

retumO;

五、綜合應(yīng)用題(2題)

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

義了用于表示矩形的CRect類,但類CRect的定義并不完整。請按要

求完成下列操作,將類CRect的定義補(bǔ)充完整。

(1)定義私有數(shù)據(jù)成員leftPoint>topPoint>rightPoint>bottomPoint,分

別用于表示矩形左上角及右下角的點(diǎn)的坐標(biāo),它們都是double型的數(shù)

據(jù)。請?jiān)谧⑨?之后添加適當(dāng)?shù)恼Z句。

(2)完成默認(rèn)構(gòu)造函數(shù)CRect的定義,指定默認(rèn)實(shí)參為0,它們都是

double型的數(shù)據(jù)。請?jiān)谧⑨?之后添加適當(dāng)?shù)恼Z句。

(3)定義函數(shù)體為空的析構(gòu)函數(shù)。請?jiān)谧⑨?之后添加適當(dāng)?shù)恼Z句。

(4)在main函數(shù)中定義GReet類的實(shí)例rect2,并把re-

cti的值賦給rect2。請?jiān)谧⑨?之后添加適當(dāng)?shù)恼Z句。

注意:除在指定位置添加語句之外,不要改動(dòng)程序中的其他內(nèi)容。

試題程序:

#include<iostream.h>

classCRect

(

private:

public:

II

voidSetPoints(double,double,double,double);

voidSetLeftPoint(doublem){leftPoint=m;}

voidSetRightPoint(doublem){rightPoint=m;}

voidSetTopPoint(doublem){topPoint=m;}

voidSetBottomPoint(doublem){bottomPoint=m;}

voidDisplay();

);

CReet::CRect(doublel,doublet,doubler,doubleb)

{

leftPoint=1;topPoint=t;

rightPoint=r;bottomPoint=b;

voidCRect::Setpoints(doublel,doublet,doubler,doubleb)

leftPoint=1;topPoint=t;

rightPoint=n;bottomPoint=b;

)

voidCRect::Display()

{

cout?"left-toppointis("?leftPoint<<","?top-

Point?")"?\n;

cout?"right-bottompointis("?rightPoint?","

<<bottomPoint?")"?\n;

)

voidmain()

{

CRectrectO;

rectO.Display();

rectO.SetPoints(20,20.6,30,40);

rectO.Display();

CRectrectl(O,0,150,150);

recti.SetTopPoint(10.5);

recti.SetLeftPoint(10.5);

II********4********rect2Display()

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

proj3,其中聲明的CDe叩Copy是一個(gè)用于表示矩陣的類。請編寫這個(gè)

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

要求:

補(bǔ)充編制的內(nèi)容寫在"〃************333*************與

“〃****************666*************"之間o不.多改不呈的其彳也部

分。

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

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

//CDeepCopy.h

#include<iostream>

#include<string>

usingnamespacestd;

classCDeepCopy

public:

intn;〃動(dòng)態(tài)數(shù)組的元素個(gè)數(shù)

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

CDeepCopy(int);

?CDeepCopy;

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

};

voidwriteToFile(char});

//main,cpp

#include,,CDeepCopy.h"

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

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

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

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

/

//***********666不***不******

)

intmain

CDeepCopya(2),d(3);

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

(

CDeepCopyb(3);//調(diào)用賦值運(yùn)算符函數(shù)

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

cout?b.pfO];〃顯示內(nèi)層局部對象的數(shù)組元素

)

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

cout?”dfadeaway;\n";

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

writeToFile("");

return0;

)

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

48.使用VC6打開考生文件夾下的工程test8_3,此工程包含一個(gè)源程

序文件test8_3.cpp,該文件設(shè)計(jì)了用于輸出乘法九九表的類。請認(rèn)真閱

讀已有的代碼,按要求完成下列操作,將程序補(bǔ)充完整。

(1)定義類Table的私有數(shù)據(jù)成員x和y,分別用于表示九九表中的兩個(gè)

乘數(shù)(x*y),它們都是int型的數(shù)據(jù)。請?jiān)谧⑨尅啊?*1**”之后添加適當(dāng)?shù)?/p>

語句;

(2)完成類Table的成員函數(shù)prin()的定義,該函數(shù)以"x*y=z”的格式打印

出九九表中的一個(gè)乘法算式,請使用格式化輸出函數(shù)prinff實(shí)現(xiàn),在注

釋“〃**2**,,之后添加適當(dāng)?shù)恼Z句;

(3)完成類Table9的成員函數(shù)print。的定義,該函數(shù)調(diào)用基類Table的

print。函數(shù),將九九表輸出到屏幕,請?jiān)谧⑨尅啊?*3**”之后添加適當(dāng)?shù)?/p>

語句;

⑷補(bǔ)充主函數(shù),在屏幕上輸出九九表,以便測試所定義的類的正確性。

請?jiān)谧⑨尅啊?*4**”之后添加適當(dāng)?shù)恼Z句。

注意:除在指定位置添加語句之外,請不要改動(dòng)程序中的其他內(nèi)容。

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

#include<iostream.h>

#include<stdio.h>

classTable

(

〃**]**

intz;

public:

voidprint(intx,inty,intz);

);

voidTable::print(intx,inty,intz)

)

classTable9:publicTable

(

public:

voidprint();

);

voidTable9::print()

(

〃**3**

intx,y,z;

for(i=1;i<10;i++)

(

for(j=l;j<i+l;j++)

(

x=i;

y=j;

z=i*j;

Table::print(y,x,z);

)

printf("\n");

)

)

main()

(

〃+*4**

return0;

)

49.使用VC6打開考生文件夾下的工程test40_3o此工程包含一個(gè)

test40_3.cpp,其中定義了類CVector,但該類的定義并不完整。請按要

求完成下列操作,將程序補(bǔ)充完整。

⑴完成類CVector構(gòu)造函數(shù)的定義,把傳入的int型參數(shù)a和b分別賦

值給類的成員變量X和y。請?jiān)谧⑨尅啊?*1**”之后添加適當(dāng)?shù)恼Z句。

(2)完成類CVector的“+”運(yùn)算符重載函數(shù)的定義,使Cvector類的兩個(gè)對

象相加時(shí)可以直接使用符號“+”,并且結(jié)果仍然為類Cvector的對象,請

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

(3)在主函數(shù)中添加適當(dāng)?shù)恼Z句,把類Cvector的對象a和b相加,并且

把結(jié)果保存在對象c中,最后以“x,y”的形式輸出在屏幕上,請?jiān)谧⑨?/p>

“〃**3**,,之后添加適當(dāng)?shù)恼Z句。

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

#include<iostream.h>

classCVector

(

public:

intx,y;

CVector(){};

CVector(int,int);

CVectoroperator+(CVector);

);

CVector::CVector(inta,intb)

(

〃**]**

)

CVectorCVector::operator+(CVectorparam)

(

〃**2**

temp.y=y+param.y;

return(temp);

)

intmain()

(

CVectora(3,1);

CVectorb(1,2);

CVectorc;

〃**3**

return0;

參考答案

LC解析:本題考查構(gòu)造函數(shù)的概念。構(gòu)造函數(shù)可以被重載,構(gòu)造函數(shù)

的函數(shù)名必須和類名相同:構(gòu)造函數(shù)可以有一個(gè),也可以有多個(gè),構(gòu)造

函數(shù)沒有返回值。

2.C解析:本題考核拷貝構(gòu)造函數(shù)的概念。聲明拷貝構(gòu)造函數(shù)的格式為:

〈類名〉::<拷貝構(gòu)造函數(shù)>(const〈類名>&<引用名>);,其中const

是修飾符可,以省略。

3.A解析:本題考核格式控制數(shù)據(jù)的輸入輸出。函數(shù)setfill(charC)用于

設(shè)置填充字符,在輸出數(shù)據(jù)時(shí),如果數(shù)據(jù)寬度小于設(shè)置的寬度,則空閑

位置要用填充字符填滿。函數(shù)setw(intn)用于設(shè)置輸入輸出寬度,寬度

設(shè)置的效果只對一次輸入或輸出有效,在完成一次數(shù)據(jù)的輸出或輸入后,

寬度設(shè)置自動(dòng)恢復(fù)為0,例如題中語句以寬度10輸出數(shù)據(jù)“123”后,字

符串“OK”的輸出寬度就自動(dòng)恢復(fù)為0了。而且輸出的初始狀態(tài)為右對

齊,所以最終的輸出為*******123OK。

4.D解析:C語言是一種面向過程的程序設(shè)計(jì)語言,而C++語言是一種

面向?qū)ο蟮脑O(shè)計(jì)語言,C++語言是C語言的超集,它包含了C語言的

所有語言特性,并進(jìn)行了擴(kuò)充。

5.C

6.B解析:本題主要考查關(guān)系模型中幾種運(yùn)算的特征。經(jīng)過選擇或投影

運(yùn)算得到的新關(guān)系的屬性個(gè)數(shù)最多不會(huì)超過原關(guān)系中的屬性個(gè)數(shù)。經(jīng)過

連接運(yùn)算得到的新關(guān)系最多不少于原關(guān)系中屬性的個(gè)數(shù)。故選項(xiàng)B正

確。

7.B

8.D

9.C解析:函數(shù)重載要求函數(shù)名相同,但參數(shù)個(gè)數(shù)或參數(shù)類型不同,?構(gòu)

造函數(shù)可以重載;析構(gòu)函數(shù)不能重載。

10.D解析:前序遍歷序列的順序是先根,再左子樹,最后右子樹;后序

遍歷序列的順序是先左子樹,再右子樹,最后根。因此各葉子之間的相

對次序關(guān)系在前序序列和后序序列中是一樣的。

11.B

Bo【解析】voidf(int*X,int&oy);第一個(gè)參數(shù)需要取值,第二個(gè)參

數(shù)需要取地址,所以為vl為取值,&Lv2為取址。

12.D

用類型修飾符const聲明的變量,必須在聲明時(shí)進(jìn)行初始化。因此,選

項(xiàng)A錯(cuò)誤。常成員函數(shù)不能更新對象的數(shù)據(jù)成員。因此,選項(xiàng)B錯(cuò)

誤。靜態(tài)成員函數(shù)不能直接訪問類中說明的非靜態(tài)成員。因此,選項(xiàng)

C錯(cuò)誤。只有選項(xiàng)D是正確的。

13.A

14.C

15.D

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

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

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

16.C

17.C

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

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

18.B解析:本題考核派生類的定義和成員的訪問權(quán)限。

第1處錯(cuò)誤:在派生類的構(gòu)造函數(shù)Derive(intx)中沒有調(diào)用基類的構(gòu)造函

數(shù)對基類對象初始化。

第2處錯(cuò)誤:數(shù)據(jù)data是基類Base的私有成員,派生類Derive不能訪

問,所以在函數(shù)setvalue中對data的賦值是錯(cuò)誤的。

19.B解析:棧操作原則上“后進(jìn)先出”,棧底至棧頂依次存放元素A、

B、C、D,則表明這4個(gè)元素中D是最后進(jìn)棧,B、C處于中間,A最

早進(jìn)棧。所以出棧時(shí)一定是先出D,再出C,最后出A。

20.AA?!窘馕觥織J窍薅ㄔ谝欢诉M(jìn)行插入刪除的先入后出的線性表數(shù)據(jù)

結(jié)構(gòu),棧頂元素最后被插入到棧中,但是最先被刪除;而棧底元素最先

被插入,最后被刪除。

21.C

Co【解析】本題考查內(nèi)聯(lián)函數(shù)的相關(guān)知識點(diǎn)。函數(shù)原型應(yīng)指出函數(shù)

名、返回值類型以及在調(diào)用函數(shù)時(shí)提供的參數(shù)的個(gè)數(shù)和類型,因?yàn)橐?/p>

聲明為內(nèi)聯(lián)函數(shù),故應(yīng)加inline關(guān)鍵字。

22.C

23.D解析:需求分析常用的工具有數(shù)據(jù)流圖(DFD)、數(shù)據(jù)字典(DD)、

判定樹和判定表。PAD(問題分析圖)、PFD(程序流程圖)、N-S(盒式圖)

都是詳細(xì)設(shè)計(jì)的常用工具,不是需求分析的工具。

24.數(shù)據(jù)流數(shù)據(jù)流解析:結(jié)構(gòu)化分析方法的實(shí)質(zhì)是著眼于數(shù)據(jù)流,自頂

向下,逐層分解,建立系統(tǒng)的處理流程,以數(shù)據(jù)流圖和數(shù)據(jù)字典為主要

工具,建立系統(tǒng)的邏輯模型。

25.istream、ostream

26.繼承繼承解析:類是面向?qū)ο笳Z言中必備的程序語言結(jié)構(gòu),用來實(shí)

現(xiàn)抽象數(shù)據(jù)類型。類與類之間的繼承關(guān)系實(shí)現(xiàn)了類之間的共享屬性和操

作,一個(gè)類可以在另一個(gè)已定義的類的基礎(chǔ)上定義,這樣使該類型繼承

了其超類的屬性和方法,當(dāng)然,也可以定義自己的屬性和方法。

27.intGetNum(){returnx;}intGetNum(){returnx;)解析:由主函數(shù)中

調(diào)用對象my成員函數(shù)GetNum。可得到,成員函數(shù)GetNum。的功能是

返回其私有數(shù)據(jù)成員x的值。

28.友元函數(shù)友元函數(shù)解析:本題考核友元函數(shù)。C++規(guī)定,一個(gè)類的

私有成員和保護(hù)成員,只能由其本身的成員來訪問,不能被其他函數(shù)訪

問,這樣形成了封裝的概念,也保護(hù)了類本身的數(shù)據(jù)不致于受到破壞。

但是,如果想讓類中的成員數(shù)據(jù)可以被其他函數(shù)訪問,可以通過友元函

數(shù)聲明,來分享類中的資源。類的友元函數(shù)可以直接訪問該類的所有成

員,包括私有成員。

29.voidfun(b[][22])voidfun(b[][22])解析:此題考核的知識點(diǎn)是函數(shù)的

定義形式與數(shù)組名作為函數(shù)的參數(shù)。函數(shù)頭的定義形式是“存儲(chǔ)類型說

明符數(shù)據(jù)類型說明符函數(shù)名(形參列表)”,此題沒有涉及到函數(shù)的存儲(chǔ)類

別。如果函數(shù)的參數(shù)是數(shù)組,其第1維的長度可以省略。因此本題的函

數(shù)首部可以寫成:voidfun(b口[22])。

3O.main函數(shù)main函數(shù)解析:C++語言程序由函數(shù)構(gòu)成,其至少包含一

個(gè)main。函數(shù)。

31.mainmain解析:所有的C++語言程序都是從main函數(shù)開始執(zhí)行,而

普通函數(shù)的存在是為了簡化main函數(shù)的復(fù)雜程度。

32.1616解析:解答本題的關(guān)鍵是要分析清楚表達(dá)式a+=(a=8)中,a的

值已經(jīng)被賦為8,而不是0°

33.動(dòng)態(tài)動(dòng)態(tài)

34.面向?qū)ο竺嫦驅(qū)ο?/p>

35.虛基類虛基類

36.(1)應(yīng)改為"ein.getline(str,120,?);

\n(2)應(yīng)改為"while(st巾])”。

\n(3)應(yīng)改為"if(str[i]>=a&&st巾]<=2)”。

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

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

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

2處的“while(str)”語句應(yīng)該是判斷字符串str中的每一個(gè)字符是否為結(jié)

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

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

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

,,

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

37.(1)應(yīng)改為飛2記11?121'*5)”。

⑵應(yīng)改為“cateh(inti)”。

(3)應(yīng)改為"catch(…)”。

【解析】本題中第1個(gè)標(biāo)識前的異常拋出語句為“throw,error");",其

中的類型為字符串。所以對應(yīng)的異常捕捉語句catch中應(yīng)該符合這個(gè)類

型,而程序中給出的語句“catch(chars)”是字符型的,所以第1處的語

句修改為“catch(char*S)”。第2個(gè)標(biāo)識前的異常拋出語句為

“throw((int)0);",其中的類型為int。對應(yīng)的異常捕捉語句catch中應(yīng)

該符合這個(gè)類型,所以補(bǔ)充catch子句中的類型,否則如果找不到匹配

的catch塊,系統(tǒng)就會(huì)調(diào)用一個(gè)系統(tǒng)函數(shù),使程序終止運(yùn)行。即第2處

的語句修改為“catch(inti)”。如果在catch子句中沒有指定異常信息的類

型,那么就用刪節(jié)號"…''表示它可以捕捉任何類型的異常信息,即修

改為“catch(…)”。

38.(1)應(yīng)改為"usingnamespacestd;"。

\n(2)應(yīng)改為"outl.open('l.txt',ios::binary|ios::app);

\n(3)應(yīng)改為“outl.put(s[i]);”。

\n【解析】本題第1處的“usingstd;”是在程序中引入標(biāo)準(zhǔn)命名空間std,

對于C++中引入標(biāo)準(zhǔn)命名空間的格式,缺少namespace,所以第1處

的語句修改為“usingnamespacestd第2處,調(diào)用成員函數(shù)open中,

輸入、輸出方式是在ios類中定義的,所以“outl.open是.txt',binary|

app);”語句缺少類ios,即第2處的語句修改為“outl.open(1l.txt',ios::

binary|ios::app);”。第3個(gè)標(biāo)識應(yīng)該用流成員函數(shù)put輸出字符,所

以第3處的語句修改為“outl.put(s[i]);

39.(1)應(yīng)改為叮(2::TC”。

⑵應(yīng)改為“voidTC::display”。

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

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

和作用域運(yùn)算符“::”,作用域運(yùn)算符用采表示某個(gè)成員屬于哪個(gè)

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

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

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

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

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

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

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

的語句應(yīng)改為“TC::?TC”。

40.(1)應(yīng)改為"usingnamespacestd;"。

(2)應(yīng)改為"outl.open("l.txt",ios::binaryIios::叩p);

(3)應(yīng)改為“outl.put(s[i]);

【解析】本題第1處的“usingstd;”是在程序中引入標(biāo)準(zhǔn)命名空間std,

對于C++中引入標(biāo)準(zhǔn)命名空間的格式,缺少namespace,所以第1處

的語句修改為“usingnamespacestd;第2處,調(diào)用成員函數(shù)open

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

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

“outl.open("l.txt",ios::binaryIios::app);第3個(gè)標(biāo)識應(yīng)

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

“outl.put(s[i]);

41.⑴應(yīng)改為"TCobjl⑴;

\n(2)應(yīng)改為“Objl.SetNumber(lO);

\n(3)應(yīng)改為“0bj2.SelNumber(lOO);"。

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

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

出結(jié)果兩1,所以補(bǔ)全參數(shù)1,即第1處的“TCobjl⑴;"。第2處處的

“objl.number=10;”應(yīng)該是調(diào)用成員函數(shù)SetNumber賦值。在C++中

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

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

第3處叮(3.5611^11^61'(100);”語句中的T(2為類,并不是對象,這里

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

“obj2.SetNumber(lOO);

42.(1)應(yīng)改為“ein.getline(str,120,?);

⑵應(yīng)改為“while(str[i])"°

,,

(3)應(yīng)改為“if(str[i]>=a&&str[i]<=2)0

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

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

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

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

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

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

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

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

,,

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

43.(1)應(yīng)改為"TCobjl(l);

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

(3)應(yīng)改為“0bj2.SelNumber(lOO);

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

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

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

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

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

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

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

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

“obj2.SetNumber(lOO);

44.(1)應(yīng)改為“TC::TC”。

\n⑵應(yīng)改為"voidTC::display”。

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

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

和作用域運(yùn)算符“::”,作用域運(yùn)

溫馨提示

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

評論

0/150

提交評論