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頁,還剩38頁未讀, 繼續(xù)免費(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題)

i.軟件開發(fā)的結(jié)構(gòu)化生命周期方法將軟件生命周期劃分成()

A.定義、開發(fā)、運(yùn)行維護(hù)

B.設(shè)計(jì)階段、編程階段、測試階段

C.總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編程調(diào)試

D.需求分析、功能定義、系統(tǒng)設(shè)計(jì)

2.使用輸入輸出操作符setw,能夠控制()。

A.填充字符B.輸出寬度C.對齊方式D.輸出精度

3.下列字符串中可以用作C++語言標(biāo)識符的是

A._1234B.foo----barC.virtualD.34var

4.若有如下語句#include<iostream.h>voidmain(){intx=3:

do{X=X-2;cout<<X;)while(!(-x));}則上面程序段

A.輸出的是1B.輸出的是1和-2C.輸出的是3和0D.是死循環(huán)

5.下列程序輸出的結(jié)果是()。#include<stdio.h>uni(chara,char

b){charc;c=a;a=b;b=c;}fun2(char*a,charb){chare;c=*a;*a=b;

b=c;}fun3(char*2,char*b){chare;c=*a;*a=*b;*b=c;}voidmain()

{chara,b;a='A';b='B';funl(a,b);putchar(a);putchar(b);

A.BABBABB.ABBBBAC.ABBABAD.ABABBA

6.若有以下程序:#include<iosti,eam>usingnamespacestd;classA

{private:inta;public:A(inti){a=i;}voiddisp(){cout<<a<<}};

classB{private:intb;public:B(intj){b=j;}voiddisp(){cout<<b<<

}};classC:publicB,publicA{private:intc;public:C(intk):A(k-

2),B(k+2){c=k;}voiddisp(){A::disp();B::disp();cout<<c<<endl;}};

intmain(){Cobj(10);obj.dispO;return0;}

A.10,10,10B.10,12,14C.8,10,12D.8,12,10

7.程序的3種基本控制結(jié)構(gòu)是

A.過程、子過程和分程序B.順序、選擇和重復(fù)C.遞歸、堆棧和隊(duì)列D.

調(diào)用、返回和轉(zhuǎn)移

8.下程序的輸出結(jié)果是

main()

{inta=0,i;

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

{switch(i)

{case0:

case3:a+=2;

case1:

case2:a+=3;

default:a+=5;

)

)

cout<<a<<endl;

)

A.31B.13C.10D.20

9.下面程序的運(yùn)行結(jié)果為()。#include<iostream.h>voidmain(){char

a-3':switch(a){case'3':cout<<"3';case'2':cout<<"2";break;

default:cout<<"1";}}

A.3B.321C.31D.32

10.C++中運(yùn)算符優(yōu)先級由高到低排列正確的是

A.::+++||B.<*||,C.sizeof%+::D.,&&newsizeof

二、單選題(13題)

11.下面關(guān)于運(yùn)算符重載的描述錯(cuò)誤的是()o

A.運(yùn)算符重載不能改變操作數(shù)的個(gè)數(shù)、運(yùn)算符的優(yōu)先級、運(yùn)算符的結(jié)合

性和運(yùn)算符的語法結(jié)構(gòu)

B.不是所有的運(yùn)算符都可以進(jìn)行重載

C.運(yùn)算符函數(shù)的調(diào)用必須使用關(guān)鍵字Operator

D.在C++語言中不可通過運(yùn)算符重載創(chuàng)造出新的運(yùn)算符

12.待排序的關(guān)鍵碼序列為(33,18,9,25,67,82,53,95,12,70),

要按關(guān)鍵碼值遞增的順序排序,采取以第一個(gè)關(guān)鍵碼為基準(zhǔn)元素的快速

排序法,第一趟排序后關(guān)鍵碼33被放到第()個(gè)位置。

A.3B.5C.7D.9

13.下面關(guān)于虛函數(shù)的描述中正確的是()o

A.虛函數(shù)是一個(gè)靜態(tài)成員函數(shù)

B.虛函數(shù)是一個(gè)非成員函數(shù)

C.虛函數(shù)可以在函數(shù)說明時(shí)定義,也可以在函數(shù)實(shí)現(xiàn)時(shí)定義

D.派生類的虛函數(shù)與基類中對應(yīng)的虛函數(shù)具有相同的參數(shù)個(gè)數(shù)和類型

14.類MyClass的定義如下:classMyClass{public:

MyClass(){value=0;}SetVariable(inti){value=i;}private:intvalue;};

則對下列語句序列正確的描述是()。

A.MyClass*p,my;p=&my;

B.語句p=&my;是把對象my賦值給指針變量p

C.語句MyClass*p,my;會調(diào)用兩次類MyClass的構(gòu)造函數(shù)

D.對語句*p.SetVariable(5)與語句my.SetVariable(5)等價(jià)

15.下面的語句中錯(cuò)誤的是()。

A.inta=5;intx[a];

B.eonstinta=5;intx[a];

C.intn=5;int*P=newint[a];

D.constintn=5;int*p=newintfa];

16.棧通常采用的兩種存儲結(jié)構(gòu)是

A.A.線性存儲結(jié)構(gòu)和鏈表存儲結(jié)構(gòu)

B.散列方式和索引方式

C.鏈表存儲結(jié)構(gòu)和數(shù)組

D.線性存儲結(jié)構(gòu)和非線性存儲結(jié)構(gòu)

17.執(zhí)行下列程序后,w的值為()O

intw='A',x=14,y=15;

w=((xIIy)&&(w<'a'));

A.A.-1B.NULLC.1D.O

18.已知一函數(shù)的形參說明為intarr[5][61,則與此等效的形參說明為

()0

A.intarr[][]B.int[5][]C.int*a[6]D.int(*a)[6]

19.存取指針?biāo)傅闹禃r(shí),采用的運(yùn)算符是()。

A.#B.&C.%D.*

20.有下列程序:

#include<stdiO.h>

voidmain()

{intx=l,y=2,z=3;

if(x>y)

if(y<z)print{("%d",++z);

elseprintf("%d",++y);

printf("%d\n”,x++);

)

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

A.A.331B.41C.2D.1

21.下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性結(jié)構(gòu)的是

A.循環(huán)隊(duì)列B.帶鏈隊(duì)列C.二叉樹D.帶鏈棧

22.以下敘述正確的是()。

A.函數(shù)可以嵌套定義但不能嵌套調(diào)用

B.函數(shù)既可以嵌套調(diào)用也可以嵌套定義

C.函數(shù)既不可以嵌套定義也不可以嵌套調(diào)用

D.函數(shù)可以嵌套調(diào)用但不可以嵌套定義

23.有如下程序:

#include<iostream>

usingnamespacestd;

classDA{

intk;

public:

DA(intx=l):k(x){}

~DA(){cout?k;}

);

intmain(){

DAd[]={DA(3),DA(3),DA(3));

DA+p=newDA[2];

delete[]p;

return();

這個(gè)程序的輸出結(jié)果是()。A.lllB.333C.11333D.11133

三、2.填空題(12題)

24.在C++的面向?qū)ο蟪绦蛟O(shè)計(jì)框架中,【】是程序的基本組成單元。

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

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

intmain()

(

doubles[10][22];

intn;

fun(s);

return0;

}

26.對具有n個(gè)結(jié)點(diǎn)的線性表進(jìn)行順序查找,最壞情況下需要的比較次

數(shù)為【]o

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

#include<iostream>

usingnamespacestd;

voidfun()

staticinta=0;

a+=2;

cout<<a;

)

intmain()

(

intcc;

for(cc=l;cc<4;cc++)

fun();

cout<<endl;

return0;

)

28.假定q所指對象的值為25,q+l所指對象的值為46,則執(zhí)行”(*q)++;”

語句后,q所指對象的值為o

29.已知有函數(shù)f的定義如下:

intf(){

staticints=0;

s+=2;

returns;

)

則在某程序中第二次執(zhí)行函數(shù)調(diào)用語句f();時(shí),函數(shù)f的返回值是______

30.一個(gè)工人可以加工多種零件,每一種零件可以由不同的工人來加工,

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

31.在面向?qū)ο蠓椒ㄖ校惖膶?shí)例稱為o

32.關(guān)系數(shù)據(jù)庫的關(guān)系演算語言是以【】為基礎(chǔ)的DML語言。

33.假定動(dòng)態(tài)分配一個(gè)類型為Worker的具有n個(gè)元素的數(shù)組,并由P指

向這個(gè)動(dòng)態(tài)數(shù)組,如果要釋放這個(gè)數(shù)組,則使用的語句為【】。

34.[]是一系列相關(guān)函數(shù)的模型或樣板,這些函數(shù)的[】形式相同,

只是所針對的【】不同。

35.表達(dá)式x.operator+(y.operator++(0))還可以寫成。

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

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

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

Constructor,i=0,

Destructor

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

可。

試題程序:

#include(iostream.h)

classTC

inti;

public:

TC;

voiddisplay;

TC;

};

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

TC:TC

cout?"Constructor"?","

i=0;

)

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

TC:display

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

)

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

TC:TC

COUI?"Destructor"?endl:

)

voidmain

TCa;

a.display;

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

charstrf120];

cout?"Enterastringendwith?."?endl;

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

cin.getline(str,120);

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

while(str)

(

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

if(str[i])=a)

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

i++;

cout?str?endl;

return;

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

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

確。

程序輸出:

8

8

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

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

試題程序:

#include(iostream.h>

classCO

public:

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

staticintn=0:

CO

n++:

-co

n-:

}:

I********ej*j*01********

intCO::n;

voidmain

{

COobj;

COobj2[7];

CO*C=NULL:

c=&obj:

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

eout?C.n?endl;

cout?C0::n?endl;

39.使用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ò)誤的語句在

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

試題程序:

#include<iostream>

#include<fstream>

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

usingstd;

voidWriteFile(char*s)

ofstreamoutl;

!I********eno1********

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

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

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

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;

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

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

Constructor,i=0,

Destructor

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

試題程序:

#include(iostream.h)

classTC

(

inti;

public:

TC;

voiddisplay;

~TC;

};

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

TC:TC

(

cout?"Constructor"?",";

i=0;

)

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

TC:display

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

)

//******ej*j*oj*******

TC:TC

(

COUI?"Destructor"?endl:

)

voidmain

(

TCa;

a.display;

)

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

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

TCobjl;

objl.Print;

TCobj2(3);

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

objl.number=10;

I/********error*%o******

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

42.使用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ò)誤的語句在

II******error******卜|o

試題程序:

#include<iostream>

#include<fstream>

/I********ej*j*or********

usingstd;

voidWriteFile(char*s)

ofstreamoutl;

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

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

fbr(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;

)

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

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

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

i++;

)

cout?str?endl;

return;

)

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

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

100

37

32

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

可。

試題程序:

#include<iostream.h>

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

voidmain

(

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

intm=0142:

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

intn=0X27:

intq=32;

cout<<m<<endl;

cout<<n<<endl;

cout<<q<<endl;

return;

)

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

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

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

程序異常,輸出信息為

error

0

ERROR

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

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

試題程序:

#include<iostream.h)

intmain

(

try

{

throw("error");

)

II********enoj*********

catch(chars)

(

cout?s?endl;

)

try

(

throw((int)0);

)

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

catch

(

cout?i?endl;

)

try

(

throw(O);

throw("error");

catch

cout?"ERROR"?endl;

returnO;

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

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

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

有派生。

(1)定義類A的構(gòu)造函數(shù),該構(gòu)造函數(shù)有一個(gè)整型的參數(shù)x,在構(gòu)造函

數(shù)中請將x賦值給數(shù)據(jù)成員a。請?jiān)谧⑨尅?/********1********”之

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

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

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

值傳人。請?jiān)谧⑨尅?/********2*********之后添加適當(dāng)?shù)恼Z句。

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

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

構(gòu)造函數(shù)的參數(shù)x和y0請?jiān)谧⑨尅?/********3********”之后添加

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

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

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

在輸出時(shí)以空格隔開。請?jiān)谧⑨尅?/********4*********之后添加適

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

程序輸出結(jié)果如下:

7

3

738

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

試題程序:

#include<iostream.h>

classA

(

inta;

public:

intgeta{retuma;}

};

classAl:publicA

{

intb;

public:

[Isj*

intgetb{returnb;}

};

classA2:publicA1

(

intC;

public:

//****,****3********

voidshow

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

)

};

voidmain

{

A2a(8.3.7):

cout?a.geta?endl:

cout?a.getb?endl:

a.show;

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

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

一個(gè)水果,則計(jì)算水果的重量,還要計(jì)算所有賣出水果的總重量以及

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

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

變量A11N0,請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。

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

到AllWeight中,并且AllNo自加。請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。

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

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

(4)完成靜態(tài)成員變量的初始化為0,請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。

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

他的程序代碼。

試題程序:

#include(iostream.h>

classTCFruit

{

private:

floatWeight;

staticintAllNo;

public:

TCFruit(floatw)

(

[I*4^*|**|**4*vj*

AllWeight+=w:

AllNo++:

)

~TCFruit

(

AllWeight-Weight:

)

voiddisplay

(

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

endl;

cout?,,Allsellnumber:"?AllNo?endl;

cout?"Allsellweight:"?AUWeight?"k9"?

endl?endl;

)

};

Ii********4********

floatTCFruit::AHWeight=O.0;

intmain

(

TCFruitFruitl(l.2);

Fruitl.display;

TCFruitFruit2(2.3);

Fruit2.display;

returnO;

)

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

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

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

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

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

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

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

語句。

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

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

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

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

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

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

輸出結(jié)果如下:

Point:34

hello

注意:除在指定位置添加語句之外,請不要改動(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)

-Text(){}

);

classCircleWithText:publicPoint,publicText

{

public:

()

?CircleWithText(){}

);

voidmain()

(

CircleWithTextcm(3,4,"hello");

)

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

test36_3.cpp,其中定義了類CRectangle,但該類的定義并不完整。請按

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

⑴定義類CRectangle的數(shù)據(jù)成員width和height,它們都是int型的數(shù)

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

⑵添加類CRectangle的友元函數(shù)duplicate。的聲明,其返回值類型和參

數(shù)類型均為Crectangle的,請?jiān)谧⑨尅啊?*2**”之后添加適當(dāng)?shù)恼Z句。

(3)完成類Crectangle的成員函數(shù)set_values的定義,把傳入的參數(shù)a和

b分別賦值為數(shù)據(jù)成員width和height,請?jiān)谧⑨尅啊?*3**”之后添加適

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

(4)完成派生類Crectangle的友元函數(shù)duplicate的定義,把函數(shù)中的臨時(shí)

對象rectres的值返回主函數(shù),請?jiān)谧⑨尅?/**4**”之后添加適當(dāng)?shù)恼Z句。

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

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

#include<iostream.h>

classCRectangle

(

H**j**

public:

voidset_values(int,int);

intarea(void){return(width*height);}

//**2**

);

voidCRectangle::set_values(inta,intb)

(

H**3**

)

CRectangleduplicate(CRectanglerectparam)

(

CRectanglerectres;

rectres.width=rectparam.width*2;

rectres.height=rectparam.height*2;

〃**4**

)

voidmain()

(

CRectanglerect,rectb;

rect.set_values(2,3);

rectb-duplicate(rect);

cout<<rectb.area()<<end1;

參考答案

LA解析:通常,將軟件產(chǎn)品從提出、實(shí)現(xiàn)、使用維護(hù)到停止使用退役

的過程稱為軟件生命周期。它可以分為軟件定義、軟件開發(fā)及軟件運(yùn)行

維護(hù)3個(gè)階段。

2.B本題考查的是輸入輸出操作符。使用輸入輸出操作符setw,可以控

制輸入輸出寬度。

3.A解析:C++語言標(biāo)識符只能由數(shù)字,字母和下劃線組成,并且只能

以字母和下劃線為開頭。

4.B解析:do...while語句的一般格式為do循環(huán)體語句while(表達(dá)式);,

先執(zhí)行循環(huán)體語句一次,再判斷表達(dá)式的值,若為真則繼續(xù)執(zhí)行循環(huán),

否則終止循環(huán)。本題中,先執(zhí)行X=x-2,即為1。判斷表達(dá)式的值,!(-

-x)為真,x=0,繼續(xù)循環(huán)。再次執(zhí)行循環(huán)體語句后,x=-2,此時(shí)表

達(dá)式的值為0,結(jié)束循環(huán)。

5.B解析:由程序中的主函數(shù)main入手,分別調(diào)用funl,fun2,fun3函

數(shù),得出輸出結(jié)果。其中,3個(gè)函數(shù)都是實(shí)現(xiàn)的兩個(gè)形參的交換功能,

只是值傳遞的方式不同,有的是引用,有的是傳值。第一個(gè)函數(shù)中參數(shù)

采用的是值傳遞的方式,形參的變化不影響實(shí)參。所以d調(diào)用funl后,

實(shí)參a和b并沒有交換,仍然是AB。第二個(gè)調(diào)用中,實(shí)參a采用的是

地址印傳遞的是地址所以形參a的改變合影響實(shí)參a的值,即BB。

同理,調(diào)用fun3后為BAO

6.D解析:本題考核派生類構(gòu)造函數(shù)的使用。本題中,派生類c具有多

重繼承關(guān)系,所以在派生類C的構(gòu)造函數(shù)中應(yīng)該包含基類A和B的成

員初始化列表。

7.B解析:采用結(jié)構(gòu)化程序設(shè)計(jì)方法編寫程序,可使程序結(jié)構(gòu)良好、易

讀、易理解、易維護(hù),它包括3種基本控制結(jié)構(gòu),分別是順序結(jié)構(gòu)、選

擇結(jié)構(gòu)和重復(fù)結(jié)構(gòu)(又稱循環(huán)結(jié)構(gòu))。注意:控制程序結(jié)構(gòu)的方法和作用。

8.A解析:本題也是考察switch語句中的break的作用,由于題中所有

的case分支都沒有break,故將順序執(zhí)行這些分支。只要耐心按照流程

將數(shù)據(jù)累加到a上,就可以得到正確答案為Ao

9.D解析:本題主要考查的是switch語句的使用,在第一個(gè)case處,因

為滿足條件所以輸出字符3,但這個(gè)分支沒有break語句終止,所以會

繼續(xù)執(zhí)行下面的分支語句,即輸出字符2,這時(shí)出現(xiàn)break語句,結(jié)束

整個(gè)語句,即輸出32。

10.A解析:運(yùn)算符的優(yōu)先級是::最高,其次是【】,(),等,然后是

++,再低還有->*,*,+,<<,>>,=o注意:逗號的優(yōu)

先級最低。

11.C

Co【解析】例如“::”運(yùn)算符就不能被重載;通過重載可以創(chuàng)造新的

運(yùn)算方式,但是不能臆造新的運(yùn)算符;定義的時(shí)候必須使用關(guān)鍵字

Operator,而調(diào)用時(shí)可直接使用運(yùn)算符。

12.BB.【解析】快速排序的基本思想是:從表中選取一個(gè)元素(如本題中

的33),將表中小于此元素的移到前面,大于此元素的移到后面,結(jié)果

把線性表分割成兩部分(兩個(gè)子表),此元素插入到其分界線的位置處。

然后分別對兩個(gè)子表再次分割……本題中33作為分割的中界線,第一

趟排序后排在比它小的18、9、25、12后面。

13.DD?!窘馕觥勘绢}考查虛函數(shù)的概念。虛函數(shù)是非靜態(tài)的成員函數(shù),

它不能是友元函數(shù),但可以在另一個(gè)類中被聲明為友元函數(shù)。虛函數(shù)必

須是類的成員函數(shù),虛函數(shù)聲明只能出現(xiàn)在類定義的函數(shù)原型聲明中,

而不能在成員函數(shù)的函數(shù)體實(shí)現(xiàn)的地方,一般要求基類中說明了虛函數(shù)

后,派生類說明的虛函數(shù)應(yīng)該與基類中虛函數(shù)的參數(shù)個(gè)數(shù)相等,對應(yīng)參

數(shù)的類型相同。如果不相同,則將派生類虛函數(shù)的參數(shù)類型強(qiáng)制轉(zhuǎn)換為

基類中虛函數(shù)的參數(shù)類型。

14.D

15.A

在C++中定義數(shù)組時(shí),數(shù)組的范圍參數(shù)在靜態(tài)定義時(shí)必須是一個(gè)常

數(shù),而在動(dòng)態(tài)分配內(nèi)存定義時(shí)可以是常數(shù),也可以是一個(gè)賦了值的參

數(shù)故選項(xiàng)A是錯(cuò)誤的定義方法。

16.A解析:和線性表類似,棧也有兩種存儲方法,一是順序棧,二是鏈

式棧。棧的順序存儲結(jié)構(gòu)是利用一組地址連續(xù)的存儲單元一次存儲自棧

底到棧頂?shù)臄?shù)據(jù)元素,同時(shí)附設(shè)指針top指示棧頂元素的位置,由于棧

的操作是線性表操作的特例,相對而言,鏈?zhǔn)綏5牟僮鞲子趯?shí)現(xiàn)。注

意:這3種運(yùn)算方法在各種存儲結(jié)構(gòu)中的應(yīng)用。

17.C

Co【解析】把x和y化為二進(jìn)制,X=14表示為1110,y=15表示為

1111,所以xlly=l,A的ASCH是65,a的ASCII是97,所以

‘A'<'a'=l,因此W=l。

18.D解析:二維數(shù)組可以看作是一維數(shù)組的擴(kuò)展。選項(xiàng)D表示的是一

個(gè)一維數(shù)不清組,里面每個(gè)元素是一個(gè)指針,而指針肯定指向某個(gè)地址,

從而完成二維數(shù)組的擴(kuò)展。考生要注意選項(xiàng)C中*和口的運(yùn)算優(yōu)先級。

19.D

Do【解析】對指針?biāo)赶虻牡刂啡≈禃r(shí),采用的存取運(yùn)算符為*。B

為取地址符。

20.D

Do【解析】C語言中規(guī)定,else與離它最近的if相匹配。

x=l,y=2,z=3,所以第一個(gè)if的條件(x>y)不成立,直接執(zhí)行

printf("%d\n",x+1);語句,輸出x的值1,再把x加1。

21.C

根據(jù)數(shù)據(jù)結(jié)構(gòu)中各數(shù)據(jù)元素之間的前后件關(guān)系的復(fù)雜程度,一般將數(shù)

據(jù)結(jié)構(gòu)分為兩大類:線性結(jié)構(gòu)和非線性結(jié)構(gòu)。循環(huán)隊(duì)列、帶鏈隊(duì)列和帶

鏈棧都是線性結(jié)構(gòu),而二叉樹是非線性結(jié)構(gòu)。

22.D解析:在C語言中,所有的函數(shù)都是平行的,即在定義函數(shù)時(shí)是

互相獨(dú)立的,一個(gè)函數(shù)并不從屬于另一個(gè)函數(shù),即函數(shù)不能嵌套定義,

但可以互相調(diào)用,但不能調(diào)用main函數(shù)。注意:函數(shù)不能嵌套定義,

但可以嵌套調(diào)用,故選項(xiàng)A)、B)和C)中的描述都錯(cuò)誤。

23.C

Co【解析】本題考查的是析構(gòu)函數(shù)和對象的生存期。在主函數(shù)中,首

先定義了一個(gè)DA類對象數(shù)組d,從初始化列表中可以看出,它包含三

個(gè)對象;然后通過new運(yùn)算符動(dòng)態(tài)創(chuàng)建了一個(gè)DA類的對象數(shù)組,并

將首地址賦給DA類指針P;接著通過delete口運(yùn)算符銷毀指針P所指

向的數(shù)組,故此時(shí)會輸出11。最后函數(shù)結(jié)束,銷毀前面定義的對象數(shù)

組d,會輸出333。故最后的輸出結(jié)果是11333。

24.類類解析:在C++的面向?qū)ο蟪绦蛟O(shè)計(jì)框架中,類是程序的基本組

成單元,程序的主體通常由若干類的定義構(gòu)成。

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

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

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

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

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

26.nn解析:對具有n個(gè)結(jié)點(diǎn)的線性表進(jìn)行順序查找,最壞情況下需要

比較n次。

27.246246解析:本題考核函數(shù)調(diào)用和靜態(tài)變量。在主函數(shù)中通過一個(gè)

for循環(huán)調(diào)用了3次fun()函數(shù)。第1次調(diào)用fun()函數(shù)時(shí),a的初始值為

0,執(zhí)行語句“a+=2;"后,a的值為2,輸出2。第2次調(diào)用時(shí),a的初始

值為2,執(zhí)行語句“a+=2/后,a的值為4,最后輸出4。第3次調(diào)用時(shí),

a的初始值為4,執(zhí)行語句“a+=2;”后,a的值為6,最后輸出6。

28.26

29.44解析:此題考查的是局部靜態(tài)變量。局部靜態(tài)變量是在函數(shù)或語

句塊中以static關(guān)鍵字定義的局部變量。其作用域和普通局部變量一樣

只在定義函數(shù)或語句塊中有效,但生存周期卻是和全局變量一樣,一直

延續(xù)到程序結(jié)束。故第一次調(diào)用f(),局部靜態(tài)變量s變?yōu)?。第二次調(diào)

用f(),s又自增2,所以函數(shù)f的返回值是4。

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

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

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

聯(lián)系。

31.對象對象解析:在面向?qū)ο蟾拍钪?,所有的同類的?shí)體的抽象就構(gòu)

成一個(gè)類,而類被實(shí)例化就形成一個(gè)對象。

32.謂詞演算謂詞演算解析:關(guān)系數(shù)據(jù)庫中的關(guān)系演算包括元組關(guān)系演

算和域關(guān)系演算。二者都是由原子公式組成的公式。而這些關(guān)系演算都

是以數(shù)理邏輯中的謂詞演算為基礎(chǔ)的。

33.delete[]p;delete[]p;解析:語句為delete[]p;o

34.函數(shù)模板源代碼數(shù)據(jù)類型函數(shù)模板\r\n源代碼\r\n數(shù)據(jù)類型解析:

函數(shù)模板是一系列相關(guān)函數(shù)的模型或樣板,這些函數(shù)的源代碼形式相同,

只是所針對的數(shù)據(jù)類型不同。注意:聲明一個(gè)函數(shù)的模板格式是:

template<<模板形參表聲明>><函數(shù)聲明>

35.x+y++或x+(y++)x+y++或x+(y++)

36.⑴應(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.⑴應(yīng)改為“ein.getline(str,120,?);”。

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

,,

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

【解析1本題中要求以輸入字符“?”為結(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[i]是否為小寫字符,而現(xiàn)有的語句只

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

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

38.(1)“staticintn=O”應(yīng)改為"staticintn;"。

(2)“intCO::n;”應(yīng)改為“intCO::n=0;

(3)“cout?c.n?endl;"應(yīng)改為"cout?c-〉n<<endl;

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

處應(yīng)改為“staticintn;",第2處要給n賦值,第3處輸出時(shí)引用c的對

象,應(yīng)改為"cout<<c->n?endl;"。

39.(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++中弓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)識應(yīng)該用流成員函數(shù)put輸出字符,所

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

40.⑴應(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”。

41.⑴應(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);

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

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

(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]);”。

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

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

\n⑶應(yīng)改為“if(str[i]>=a&&str[i]<=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[i]是否為小寫字符,而現(xiàn)有的語句只是判斷字符是否大于a,

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

€t,,

44.(l)voidmaino

⑵“intm=0144;”。

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

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

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

“mai

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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

提交評論