2023年河南省開封市全國計(jì)算機(jī)等級(jí)考試C++語言程序設(shè)計(jì)模擬考試(含答案)_第1頁
2023年河南省開封市全國計(jì)算機(jī)等級(jí)考試C++語言程序設(shè)計(jì)模擬考試(含答案)_第2頁
2023年河南省開封市全國計(jì)算機(jī)等級(jí)考試C++語言程序設(shè)計(jì)模擬考試(含答案)_第3頁
2023年河南省開封市全國計(jì)算機(jī)等級(jí)考試C++語言程序設(shè)計(jì)模擬考試(含答案)_第4頁
2023年河南省開封市全國計(jì)算機(jī)等級(jí)考試C++語言程序設(shè)計(jì)模擬考試(含答案)_第5頁
已閱讀5頁,還剩39頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2023年河南省開封市全國計(jì)算機(jī)等級(jí)考試

C++語言程序設(shè)計(jì)模擬考試(含答案)

學(xué)校:班級(jí):姓名:考號(hào):

一、1.選擇題(10題)

1.有以下程序:#include<iostream>usingnamespacestd;classR

{public:R(intrl,intr2){RI=rl;R2=r2;}voidprint();voidprintOconst;

private:intR1,R2;};voidR::print(){cout<<RI<<<<R2<<endl;}

voidR::print()const{cout<<RI<<<<R2<<endl;}intmain(){R

a(5,4);constRb(20,52);b.print();return0;}執(zhí)行后的輸出結(jié)果是()。

A.5,4B.20,52C.0,0D.4,5

2.()是以一種完全通用的方法來設(shè)計(jì)函數(shù)或類而不必預(yù)先說明將被使

用的每個(gè)對(duì)象的類型。

A.模板B.類C.對(duì)象D.函數(shù)

3.下列關(guān)于getline()函數(shù)的描述中,不正確的是()。

A.getline。函數(shù)是用來從鍵盤上讀取字符串的

B.getline()函數(shù)讀取字符串長度是受限制的

C.getline。函數(shù)讀取字符串時(shí),遇到終止符時(shí)就停止

D.getline。函數(shù)中所使用的終止符只能是換行符

4.有以下程序#include<iostream.h>floatfun(intx,inty){return(x+y);}

voidmain(){inta=2,b=5,c=8;cout<<fun((int)fun(a+c,b),a-c);}

程序運(yùn)行后的輸出結(jié)果是()。

A.編譯出錯(cuò)B.9C.21D.9

5.sizeof(float)是()。

A.一個(gè)雙精度型表達(dá)式B.一個(gè)整型表達(dá)式C.一種函數(shù)調(diào)用D.一個(gè)不

合法的表達(dá)式

6.有以下類定義:classMyClass{private:intid;chargender;char*phone;

public:MyClass():id(0),gender('#'),phone(NULL){}MyClass(intno,char

ge='札char*ph=NULL){id=no;gender=ge;phone=ph;}};下列類對(duì)象定義

語句中錯(cuò)誤的是_____O

A.MyClassmyObj;

B.MyClassmyObj(ll,);

C.MyClassmy0bj(12;m');

D.MyClassmyObj(12);

7.已知在函數(shù)func中語句this->ff=O;與語句ff=O;的效果完全相同。

對(duì)于這一現(xiàn)象,下列表述中錯(cuò)誤的是

A.ff是某個(gè)類的數(shù)據(jù)成員,func是該類的友元函數(shù)

B.ff是某個(gè)類的數(shù)據(jù)成員,func是該類的成員函數(shù)

C.this->ff和任是同一個(gè)變量

D.func不是一個(gè)靜態(tài)成員函數(shù)

8.某二叉樹T有n個(gè)節(jié)點(diǎn),設(shè)按某種順序?qū)中的每個(gè)節(jié)點(diǎn)進(jìn)行編號(hào),

編號(hào)值為1,2,...n,且有如下性質(zhì):T中任一節(jié)點(diǎn)v,其編號(hào)等于左

子樹上的最小編號(hào)減1,而V的右子樹的節(jié)點(diǎn)中,其最小編號(hào)等于V左

子樹上的節(jié)點(diǎn)的最大編號(hào)加1。此二叉樹是按()順序編號(hào)的。

A.前序遍歷B.中序遍歷C.后序遍歷D.按層次遍歷

9.下面程序的輸出結(jié)果是()。#include<iostream>usingnamespacestd;

intmain(){intn=10;while(n>7){n—;cout<<11<<',';)cout<

<endl;}

A.10,9,8,B.9,8,7,C.10,9,8,7,D.9,8,7,6,

10.下面重載乘法運(yùn)算符的函數(shù)原型聲明中錯(cuò)誤的是()

A.TestClassoperator*(MyClass,double);

B.TestClassoperator*(double,MyClass);

C.TestClassoperator*(double,double);

D.TestClassoperator*(MyClass,MyClass);

二、單選題(13題)

11.已知類X成功地重載了一、+、=、口這幾個(gè)運(yùn)算符。則其中肯定屬

于成員函數(shù)的運(yùn)算符是:

A.前置--和口B=^n[]C.[]和后置--D.+和二

12.有如下程序:

#nclude<iostream>

usingnamespacestd;

intmain

voidfunction(doubleval);

doubleval;

function(val);

cout?val;

return0;

)

voidfunction(doubleval)

}val=3;}

編譯運(yùn)行這個(gè)程序?qū)⒊霈F(xiàn)的情況是()。A.編譯出錯(cuò),無法運(yùn)行B.輸出:3C.

輸出:3.0D.輸出一個(gè)不確定的數(shù)

13.已知類Myclass的定義如下

classMyClass{

public:

voidfunction1(MyClass&C){cout<<c.data;)

staticvoidfunction2(MyClass&C){cout<<c.data;}

voidfunction3(){cout<<data;}

staricvoidfunction4(){cout<<data;}

private:

intdata;

);

其中有編譯錯(cuò)誤的函數(shù)是()。

A.function1B.function?C.functionsD.function4

14.下列控制格式輸入/輸出的操作符中,能夠設(shè)置浮點(diǎn)數(shù)精度的是

()。

A.setpreCisionB.setwC.setfillD.showpoint

15.下列數(shù)據(jù)結(jié)構(gòu)中,按先進(jìn)后出原則組織數(shù)據(jù)的是()

A.線性鏈表B.棧C.循環(huán)鏈表D.順序表

16.假定MyClass為一個(gè)類,那么下列的函數(shù)說明中,()為該類的

析構(gòu)函數(shù)。

A.void~MyClass();

B.~MyClass(intn);

C.MyClass();

D.~MyClass();

17.有如下程序:

#include<iostream>

usingnamespacestd;

classONE{

intc;

public:

ONE():c(0){cout?l;}

ONE(intn):c(n){cout?2;}

);

classTWO{

ONEonel;

ONEone2;

public:

TWO(intm):one2(m){cout?3;}

};

intmain(){

TWOt(4);

return0;

)

運(yùn)行時(shí)的輸出結(jié)果是

A.3B.23C.123D.213

18.有如下語句序列:

ifstreaminfile("DATA.DAT");

if(infile.good())cout?"A";

else{

cout?"B";

ofstreamoutfile("DATA.DAT");

if(outfile.fail())cout?"C";elsecout?"D";

)

若執(zhí)行這個(gè)語句序列顯示的是BD,則說明文件

DATA.DAT

A.以讀方式打開成功

B.以讀方式打開失敗,但以寫方式打開成功

C.以讀方式打開失敗,以寫方式打開也失敗

D.以讀方式打開成功,以寫方式打開也成功

19.有如下類定義:

classMyClass

(

public:

private:

intdata;

};

若要為MyClass類重載流輸入運(yùn)算符“>>”,使得程序中可以

€<cin?obj;”的形式改變MyClass類的對(duì)象Obj中數(shù)據(jù)成員data的值,

則橫線處的聲明語句應(yīng)為()。

A.friendistream&operator?(istream&is,MyClass&A.;

B.friendistream&operator?(istream&is,MyClassA.;

C.istream&operator?(istream&is,MyClass&A.;

D.istream&operator?(istream&is,MyClassA.;

20.以下函數(shù)值的類型是

fun(floatx)

{floaty;

y=3*x-4;

returny;

)

A.intB.不確定C.voidD.float

21.有如下程序:

#include<iostream>

usingnamespacestd;

voidfunction2(intn);

voidfunctionl(intn):{

if(n<=0)return;

function2(n-2);

)

voidfunction2(intn){

if(n<=O)return;

functionl(n-l);

)

intmain(){

functionl(5);

returnO;

下列關(guān)于程序運(yùn)行情況的描述中,正確的是()。

A.A.functionl運(yùn)行1次,function!運(yùn)行2次

B.functionl運(yùn)行2次,function!運(yùn)行1次

C.functionl運(yùn)行2次,function2運(yùn)行3次

D.function!運(yùn)行2次,function2運(yùn)行2次

22.一個(gè)函數(shù)為voidf(int,charch='a'),另—函數(shù)為voidf(int),則

它們()o

A.不能在同一程序中定義

B.可以在同一程序中定義并可重載

C.可以在同一程序中定義,但不可以重載

D.以上三種說法均不正確

23.下列關(guān)于關(guān)系運(yùn)算的敘述中正確的是()。

A.投影、選擇、連接是從二維表的行的方向來進(jìn)行運(yùn)算

B.并、交、差是從二維表的列的方向來進(jìn)行運(yùn)算

C.投影、選擇、連接是從二維表的列的方向來進(jìn)行運(yùn)算

D.以上三種說法都不對(duì)

三、2.填空題(12題)

24.如果要把返回值為void的函數(shù)A聲明為類B的友元函數(shù),則應(yīng)在

類B的定義中加入的語句是【】。

25.數(shù)據(jù)庫系統(tǒng)中實(shí)現(xiàn)各種數(shù)據(jù)管理功能的核心軟件稱為【】。

26.下面是復(fù)數(shù)類complex的定義,其中作為友元函數(shù)重載的運(yùn)算符“-

「'的功能是將參數(shù)對(duì)象的實(shí)部減1,然后返回對(duì)該對(duì)象的引用;請(qǐng)補(bǔ)充

完整。

classcomplex

(

private:

intreal;

ihtimag;

public:

complex(inti-O,inti=O):real(r),imag(i){}

voidshow()

{

cout<<real<<(imag<0?"-"<<imag<<'i';

)

【】;

};

complex&operator—(complex&c)

(

c.real—;

returnc;

)

27.排序是計(jì)算機(jī)程序設(shè)計(jì)中的一種重要操作,常見的排序方法有插入

排序、【】和選擇排序等。

28.常見的需求分析方法有【】和面向?qū)ο蟮姆治龇椒ā?/p>

29.在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,用來請(qǐng)求對(duì)象執(zhí)行某一處理或回答某些

信息的要求稱為【】。

30.對(duì)于下面定義的類MyClass,請(qǐng)?jiān)诤瘮?shù)f()中添加對(duì)象成員把n的值

修改為50。

classMyClass

(

public:

MyClass(intx){n=x;}

voidSetNum(intnl){n=nl;}

private:

intn;

);

intf()

(

MyClass*ptr=newMyClass(45);

[]

)

31.浮點(diǎn)數(shù)的默認(rèn)精度值是_____o

32.匯編程序的功能是將匯編語言所編寫的源程序翻譯成由【】組成的

目標(biāo)程序。

33.如果表達(dá)式-x中的“-”是重載的類運(yùn)算符,采用運(yùn)算符函數(shù)調(diào)用格

式,及表達(dá)式還可以表示為0

34.一個(gè)項(xiàng)目具有一個(gè)項(xiàng)目主管,一個(gè)項(xiàng)目主管可管理多個(gè)項(xiàng)目。則實(shí)

體集“項(xiàng)目主管”與實(shí)體集“項(xiàng)目”的聯(lián)系屬于【】的聯(lián)系。

35.在深度為5的完全二叉樹中,度為2的結(jié)點(diǎn)數(shù)最多為【】。

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

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

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

Constructor,i=0,

Destructor

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

可。

試題程序:

#include(iostream.h)

classTC

(

inti;

public:

TC;

voiddisplay;

TC;

);

Ii******e*or******

TC:TC

(

cout?"Constructor"?",";

i=0;

)

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

TC:display

(

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

)

!i******enor******

TC:TC

(

COUI?"Destructor"?endl:

)

voidmain

(

TCa;

a.display;

)

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

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

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

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

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

!1******error******白勺~

試題程序:

#include<iostream>

#include<fstream>

I!********error********

usingstd;

voidWriteFile(char*s)

ofstreamoutl;

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

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

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

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

outl.puts(s[i]);

}

outl.close;

voidClearFile

ofstreamout1;

outl.open("l.txt");

outl.close;

intmain

chars[1024];

ClearFile;

cout?"pleaseinputastrin9:"?endl;

cin.getline(s,1024);

WriteFile(s);

returnO;

)

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

運(yùn)行有問題,請(qǐng)改正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

TCobjl;

objl.Print;

TCobj2(3);

!I********enor********

objl.number=10;

II********ej*j*or*^^0******

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

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

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

9,8,7,6,5

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

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

試題程序:

#include(iostream.h>

classTC

!********e£i*or********!

TC(inti)

(

m_i=i;

)

voidprint

{

cout?—m_i?,;

)

public:

intm_i;

};

intmain

I********ej*j*or********!

inti;

TC04(10);

while(i>5)

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

1++:

04.print;

)

cout?endl;

returnO;

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

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

為:

sizeof(S1)=5

sizeof(s2)=I0

sizeof(s3)=l

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

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

(1)不能刪除assert()語句。

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

提示:assert函數(shù)如果為假,則會(huì)產(chǎn)生一個(gè)中斷異常。

試題程序:

#include<iostream.h>

#include<assert.h>

voidmain()

char*sl="abc":

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

assert(sizeof(s1)==3):

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

chars2[10]="ab":

//*1**1**1**1**1**4**1**1*<!>

//年>不不不不不個(gè)不m*cr個(gè)不不不不不不不

assert(sizeof(s2)==2);

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

chars3=23:

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

assert(sizeof(s3)==4);

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

return;

)

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

行時(shí)有錯(cuò),請(qǐng)改正其中的錯(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******epj*or******

TC:display

(

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

)

Ii******error******

TC:TC

(

COUI?"Destructor"?endl:

)

voidmain

(

TCa;

a.display;

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

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

100

37

32

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

可。

試題程序:

#include<iostream.h>

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

voidmain

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

intm=0142:

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

intn=0X27:

intq=32;

cout<<m<<endl;

cout<<n<<endl;

cout<<q<<endl;

return;

)

43.使用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;

charstrf120];

cout?"Enterastringendwith?."?endl;

//********error********

cin.getline(str,120);

1I********error********

while(str)

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

if(str[i])=a)

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

i++;

)

cout?str?endl;

return;

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

要求輸入一個(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;

I!********enor********

cin.getline(str,120);

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

while(str)

(

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

if(str[i])=a)

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

i++;

cout?str?endl;

return;

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

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

number=l

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

(

II********ej*ror********

TCobjl;

objl.Print;

TCobj2(3);

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

objl.number=10;

Ii********error*%()******

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

)

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

46.

請(qǐng)使用【答題】菜單命令或直接用VC6打開考生文件夾下的工程

prog3,其中聲明了VaiArray類,該類在內(nèi)部維護(hù)一個(gè)動(dòng)態(tài)分配的整型

數(shù)組。ValArray類的復(fù)制構(gòu)造函數(shù)應(yīng)實(shí)現(xiàn)對(duì)象的深層復(fù)制。請(qǐng)編寫

VaiArray類的復(fù)制構(gòu)造函數(shù)。在main函數(shù)中給出了一組測(cè)試數(shù)據(jù),此

種情況下程序的輸出應(yīng)該是:

VaiArrayvl={1,2,3,4,5}VaiArrayv2={1,2,3,4,5}要求:

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

”*********666*********”之間,不得修改程序的其他部分。

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

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

//VaiArray,h

#include<iostream>usingnamespacestd;classValArray{

int*v:intsize;public:

ValArray(constint*P,intn):size(n){

v=newint[size];

for(inti=0;i<size;i++)v[i]=P[i];

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

proj3,其中聲明的DataList類,是一個(gè)用于表示數(shù)據(jù)表的類。DataList

的重載運(yùn)算符函數(shù)Operator+,其功能是求當(dāng)前數(shù)據(jù)表與另一個(gè)相同長

度的數(shù)據(jù)表之和;即它返回一個(gè)數(shù)據(jù)表,其每個(gè)元素等于相應(yīng)兩個(gè)數(shù)

據(jù)表對(duì)應(yīng)元素之和。請(qǐng)編寫這個(gè)operator+函數(shù)。程序的正確輸出應(yīng)該

是:

兩個(gè)數(shù)據(jù)表:1,2,3,4,5,63,4,5,6,7,8兩個(gè)數(shù)據(jù)表之

和:

4,6,8,10,12,14要求:

補(bǔ)充編制的內(nèi)容寫在“//********333********''與

“〃********666********”之間,不得修改程序

的其他部分。

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

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

//DataList.h

#inClude<iostream>usingnamespaCestd;

ClaSSDataList{〃數(shù)據(jù)表類intfen;

double*d;public:

DataList(intlen,doubledata[]=NULL);DataList(DataList&data);

intlengthConst{returnlen;}

doublegetElement(inti)Consttreturnd[i];}

DataListoperator+(ConstDataList&list)Const;〃兩個(gè)數(shù)據(jù)表求和void

showConst;〃顯示數(shù)據(jù)表

);

voidwriteToFile(Char$,ConstDataList&);//main.Cpp

#inClude,,DataList.h"

DataList::DataList(intlen,doubledata[]):len(ien){d=new

doubletlen];

for(inti=0;i<len;i++)

dOOi=(data==NULL?O.0:data[i]);

)

DataList::DataList(DataList&data):len(data.len){d=new

doubleflenl;

fbr(inti=0;i<len;i++)d[i]=data.d[i];

DataListDataList::0perator+(Con8tDataList&list,)Const{〃兩個(gè)數(shù)據(jù)

表求和double*dd=newdoubletlist,lensth];

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

〃********666********

returnDataList(list.length,dd);}

voidDataList::showConst{〃顯示數(shù)據(jù)表fr(intoi=0;i<len-1;i++)

eout?d[i]?,,,“;

Cout?d[len-l]?endl;

intmain{

doublesl[]={l,2,3,4,5,6};

doubles2[]={3,4,5,6,7,8);

DataListlist1(6,si),list2(6,s2);〃定義兩個(gè)數(shù)據(jù)表對(duì)象eout<<“兩個(gè)

數(shù)據(jù)表:“<<endl:

listl.show:list2.show;eout?endl<<”兩個(gè)數(shù)據(jù)表之

和:n?endl:

(listl+list2).show;

writeToFile(,,,,?listl+lis⑵;return0:

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

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

testl3_.cpp,其中定義了類Vector,但類的定義并不完整。請(qǐng)按要求完成

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

(1)完成構(gòu)造函數(shù)的定義,把數(shù)據(jù)成員size初始化為參數(shù)s的值,數(shù)據(jù)成

員buffer指向動(dòng)態(tài)申請(qǐng)的int型size大小的空間。請(qǐng)?jiān)谧⑨尅啊?*1**”之

后添加適當(dāng)?shù)恼Z句。

⑵完成拷貝構(gòu)造函數(shù)的定義,注意解決多次刪除的問題。請(qǐng)?jiān)谧⑨?/p>

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

⑶完成成員函數(shù)elem的定義,該函數(shù)返回buffer的第ndx個(gè)元素的值,

注意如果ndx超界,請(qǐng)輸出“errorinindex”。請(qǐng)?jiān)谧⑨尅啊?*3**”之后添加

適當(dāng)?shù)恼Z句。

(4)完成析構(gòu)函數(shù)的定義,要求先將字符d打印在屏幕上,再釋放buffer

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

輸出結(jié)果如下:

123456789101234567891Odd

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

源程序文件testl3_3清單如下:

#include<iostream.h>

#include<stdlib.h>

classVector

public:

Vector(ints=100);

Vector(Vector&v);

int&elem(intndx);

voiddisplayO;

voidset();

?Vector();

protected:

intsize;

int*buffer;

);

Vector::Vector(ints)

/

I

****

1

J

.

Vector::Vector(Vector&v)

(

〃**2**

i++

*(buffer+i)=*(v.buffer+i);

)

)

int&Vector::elem(intndx)

//**3**

cout<<eri'orinindex<<end!;

exit(l);

)

returnbuffer[ndx];

)

voidVector::displayO

(

for(intj=0;j<size;j++)

cout<<elem(i)<<endl;

)

voidVector::set()

(

for(intj=0;i<size;j++)

elem(j)=j+l;

)

Vector::~Vector()

{

〃**4**

voidmain()

(

Vectora(10);

Vectorb(a);

a.set();

b.set();

a.displayO;

b.displayO;

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

序文件testl7_3.cpp,其中定義了用于表示點(diǎn)的類Point和表示內(nèi)容的類

Text以及二者的派生類CircleWithText,但它們的定義并不完整。請(qǐng)按

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

⑴定義類P。血的構(gòu)造函數(shù),請(qǐng)使用參數(shù)列表的形式將成員函數(shù)x和y

分別初始化為參數(shù)xl和yl的值。請(qǐng)?jiān)谧⑨尅啊?*1**。”之后添加適當(dāng)?shù)?/p>

語句。

(2)完成類Text的構(gòu)造函數(shù)Text(char*str)的定義,將char型的str指向

的內(nèi)容賦值給text并且輸出str所指向的內(nèi)容,請(qǐng)?jiān)谧⑨尅啊?*2**”之后

添加適當(dāng)?shù)恼Z句。

⑶定義類CircleWithText的構(gòu)造函數(shù)CircleWithText(intcx,intcy,char

*msg),int型的ex和cy用于賦值給x和y,char型的指針*msg用于賦

值給text,請(qǐng)?jiān)谧⑨尅啊?*3**”之后添加適當(dāng)?shù)恼Z句。

輸出結(jié)果如下:

Point:34

hello

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

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

#include<iostream.h>

#include<string.h>

classPoint

intx,y;

public:

〃**[**

cout<<"Point:"<<x<<"<<y<<'\n';

)

~Point(){}

);

classText

(

chartext[100];

public:

Text(char*str)

(

〃**2**

)

-Text(){}

);

classCircleWithText:publicPoint,publicText

{

public:

()

?CircleWithText(){}

);

voidmain()

(

CircleWithTextcm(3,4,"hello");

)

參考答案

l.B

2.A解析:此題考查的是模板的特點(diǎn)。模板是以一種完全通用的方法來

設(shè)計(jì)函數(shù)或類而不必預(yù)先說明將被使用的每個(gè)對(duì)象的類型。

3.D解析:本題主要考察C++中輸入流成員函數(shù)的使用。輸入流的成員

函數(shù)主要包括open。、get。、getline。、read。、seekg()、tellg()和close。

等函數(shù)。其中,getline()函數(shù)從輸入流中讀取多個(gè)字符,并且允許指定輸

入終止符,其原形為:

getline(char*line,intsize,char-\\n')o

其中:函數(shù)的第1個(gè)參數(shù)是字符數(shù)組,用于放置讀取的文本:第2個(gè)參

數(shù)是本次讀取的最大字符個(gè)數(shù),通過改變?cè)搮?shù)可以設(shè)置讀入的最大字

節(jié)數(shù)即字符串長度第3個(gè)參數(shù)是分隔字符,作為讀取一行結(jié)束的標(biāo)志,

默認(rèn)為換行符\",通過改變?cè)搮?shù),可以自定義輸入形式和結(jié)束標(biāo)志。

因此可以判斷,題目選項(xiàng)D的敘述是錯(cuò)誤的,可以通過改變參數(shù)修改

getline()函數(shù)中所使用的終止符。

4.B解析:本題的運(yùn)算過程是fun((int)fun(a+c,B,a-C,fun((int)fun(10,

5),2-8),fun((int)15.000000,-6),fun(15,-6)=9o

5.B

該函數(shù)用于數(shù)據(jù)類型和變量。注意:sizeof操作符不能用于函數(shù)、不完

全類型或位字段。不完全類型指具有未知存儲(chǔ)大小的數(shù)據(jù)類型,如未

知存儲(chǔ)大小的數(shù)組類型、void類型等。

6.B解析:初始化應(yīng)該和構(gòu)造函數(shù)相同。

7.A解析:本題考核this指針的使用。類的每一個(gè)成員函數(shù)都有一個(gè)隱

含定義的常量指針,稱為this指針。它是成員函數(shù)所屬對(duì)象的指針,它

指向類對(duì)象的地址。若func()是該類的友元函數(shù),this指針就沒有指向

同一個(gè)對(duì)象的地址,語句this->ff=O;與語句ff=O;的效果就不同了。

靜態(tài)成員函數(shù)沒有this指針。因?yàn)轭愔挥幸粋€(gè)靜態(tài)成員函數(shù)實(shí)例,所以

使用this指針沒有什么意義。在靜態(tài)成員函數(shù)中使用this指針會(huì)引起編

譯錯(cuò)誤。

8.A解析:根據(jù)節(jié)點(diǎn)v的右子樹的節(jié)點(diǎn)中,其最小編號(hào)等于v左子樹上

的節(jié)點(diǎn)的最大編號(hào)加1,可以斷定是前序遍歷。

9.B

10.C

1LB解析:賦值運(yùn)算符=和運(yùn)算符口只能作為成員函數(shù)重載,而一,+則

沒有限止。

12.D

本題考查函數(shù)調(diào)用及傳值方式傳遞參數(shù),執(zhí)行函數(shù)function時(shí),并沒

有將3的值傳回來,而val又沒有初始化,所以會(huì)輸出一個(gè)不確定的

值,D選項(xiàng)正確。

13.D

14.A

iomanip中定義的操縱符包括:setfill(ch)用ch填充空白、

setprecision(n)將浮點(diǎn)精度置為n、setw(w)、讀寫w個(gè)字符的值

showpoint沒置小數(shù)點(diǎn)。

15.B解析:棧是限定在二端進(jìn)行插入與刪除的線性表。在棧中,允許插

入與刪除的一端稱為棧頂,而不允許插入與刪除的另一端稱為棧底。棧

頂元素總是最后被插入的元素,從而也是最先能被刪除的元素;棧底元

素總是最先被插入的元素,從而也是最后才能被刪除的元素,即棧是按

照“先進(jìn)后出”或“后進(jìn)先出”的原則組織數(shù)據(jù)的。注意:隊(duì)列組織數(shù)據(jù)的

原則是“先進(jìn)先出”或“后進(jìn)后出,注意:數(shù)據(jù)結(jié)構(gòu)中,棧和隊(duì)列組織數(shù)

據(jù)的原則。

16.D解析:本題考核類的析構(gòu)函數(shù)。在C++中,析構(gòu)函數(shù)名為符號(hào)“?”

加類名,析構(gòu)函數(shù)沒有參數(shù)和返回值。根據(jù)以上知識(shí)可知,MyClass類

的正確析構(gòu)函數(shù)的說明為~MyClass()。

17.C

本題主要考查了成員對(duì)象。類TWO的數(shù)據(jù)成員是類ONE的對(duì)象onel

和one2,main。函數(shù)中首先創(chuàng)建類TWO的對(duì)象t并提供初始值4,先

執(zhí)行成員對(duì)象onel的構(gòu)造函數(shù)體,輸出1;再執(zhí)行成員對(duì)象one2的構(gòu)

造函數(shù)體,輸出2,最后執(zhí)行類TWO的構(gòu)造函數(shù)體,輸出3。因此本

題程序運(yùn)行時(shí)的輸出結(jié)果是123o

18.C

19.A

本題考查重載流運(yùn)算符“>>”,根據(jù)重載規(guī)則,本題答案為A。

20.A解析:函數(shù)定義時(shí)如果數(shù)據(jù)類型默認(rèn),則默認(rèn)為into函數(shù)中如果

有“retum(表達(dá)式):”語句,表達(dá)式的類型可能與函數(shù)的類型不一致,但

它并不能改變函數(shù)的類型,實(shí)際情況是把表達(dá)式轉(zhuǎn)換為函數(shù)值的類型作

為返回值,因此本題的函數(shù)值類型是int。

21.D

Do【解析】函數(shù)執(zhí)行過程為:functionl(5),function2⑶,

functionl(2),function2(0)return。

22.B解析:題目中的兩個(gè)函數(shù)參數(shù)個(gè)數(shù)不同,因此可以在同一程序中定

義為重載函數(shù)。所以,選項(xiàng)B)敘述正確。

23.C解析:在關(guān)系模型的數(shù)據(jù)語言中,一般除了運(yùn)用常規(guī)的集合運(yùn)算(并、

交、差、笛卡爾積等)外,還定義了一些專門的關(guān)系運(yùn)算,如投影、選擇、

連接等運(yùn)算。前者是將關(guān)系(即二維表)看成是元組的集合,這些運(yùn)算主

要是從二維表的行的方向來進(jìn)行的;后者主要是從二維表的列的方向來

進(jìn)行運(yùn)算。因此,選項(xiàng)A與B中的說法都是錯(cuò)誤的,而選項(xiàng)C中的說

法是正確的。

24.friendvoidA();friendvoidA();解析:C++中類的友元函數(shù)在聲明

時(shí)應(yīng)在該函數(shù)前面加上關(guān)鍵字friend,同樣如果要聲明一個(gè)類為另一個(gè)

類的友元類也要在前面類名前加上friend0

25.數(shù)據(jù)庫管理系統(tǒng)

數(shù)據(jù)庫管理系統(tǒng)(DBMS)

26.friendcomplex&operator-(complex&)friendcomplex&operator—

(complex&)解析:本題考核運(yùn)算符重載的定義。程序要填入的是運(yùn)算符

函數(shù)operator-在類complex中的聲明,運(yùn)算符“-”是作為友元函數(shù)重

載的。根據(jù)題目給出的條件,易得到答案。

27.交換排序交換排序解析:常見的排序方法有插入排序(包括簡單插入

排序法和希爾排序法等)、交換排序(包括冒泡排序和快速排序法等)和選

擇排序(包括簡單選擇排序和堆排序等)。注意:常見的排序方法及其作

用機(jī)制和區(qū)別。

28.結(jié)構(gòu)化分析方法結(jié)構(gòu)化分析方法解析:本題是基礎(chǔ)題,考核需求分

析方法。常見的需求分析方法有結(jié)構(gòu)化分析方法和面向?qū)ο蟮姆治龇椒ā?/p>

29.消息消息解析:消息是一個(gè)實(shí)例與另一個(gè)實(shí)例之間傳遞的信息,它

請(qǐng)求對(duì)象執(zhí)行某一處理或回答某一要求的信息,它統(tǒng)一了數(shù)據(jù)流和控制

流。

3O.Ptr->SetNum(50);Ptr->SetNum(50);解析:本題考查的是考生使

用對(duì)象指針調(diào)用成員函數(shù)的能力,指針調(diào)用成員函數(shù)應(yīng)該使用符號(hào)“-

>"。

31.6位6位

32.機(jī)器語言機(jī)器語言

33.x.operator—()

34.一對(duì)多一對(duì)多解析:實(shí)體集“項(xiàng)目主管”與實(shí)體集“項(xiàng)目”的聯(lián)系屬于

一對(duì)多的聯(lián)系。

35.15

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

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

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

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

37.(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;”是在程序中弓I入標(biāo)準(zhǔn)命名空間std,

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

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

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

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

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

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

38.⑴應(yīng)改為“TCobjl(l);3

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

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

【解析】本題第1處的“TCobjl;”語句是聲明TC類的對(duì)象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)該是:對(duì)象名.成員函數(shù),所以修改為

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

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

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

“obj2.SetNumber(lOO);

39.(1)應(yīng)添力「public:"。

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

\n(3)“i++;”應(yīng)改為“i—;

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

保護(hù)和私有3種,而默認(rèn)的訪問屬性為私有,只有公有成員才能通過類

的對(duì)象被訪問。故應(yīng)在構(gòu)造函數(shù)前添加“public:否則該類無法被實(shí)例

化。變量的初始化可以通過“=”號(hào),也可以和初始化對(duì)象一樣添加構(gòu)造

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

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

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

40.(1)應(yīng)改為"assert(sizeof(sD==4);

\n⑵應(yīng)改為"assert(sizeof(s2尸=10);

⑦⑶應(yīng)改為"assert(sizeof(s3尸=1);

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

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

uassert(sizeof(s1)=3);”語句中"sizeof(sD==3”為假,這會(huì)使程序產(chǎn)生異

常,不能正常執(zhí)行。因?yàn)閟trl的值為abc,但是它還有一個(gè)尾符,它的

長度應(yīng)該是4,而不是3,所以在第1處修改為“assert(sizeof(sD==4);”。

str2[10]說明,str2的空間為10,在第2處修改為"assert(sizeoRs2)=10);”。

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

t4assert(sizeof(s3)=1);

41.⑴應(yīng)改為“TC::TC”。

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

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

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

42.(l)uvoidmain,,o

(2)“intm=0144;

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

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

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

“main”,函數(shù)名之后必須是一對(duì)括號(hào),因此第1處應(yīng)改為“voidmain”。

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

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

對(duì)應(yīng)十六進(jìn)制的25,因此2和3應(yīng)分別改成“intm=0144;”,

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

43.⑴應(yīng)改為“ein.getline(str,120,?);”。

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

5,

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

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

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

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論