




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 印刷服務(wù)合同
- 手破碎機(jī)設(shè)備買賣合同
- 聘用出納合同增加多場景
- 生產(chǎn)車間承包合同協(xié)議
- 機(jī)械工程勞務(wù)分包合同
- 河北化工醫(yī)藥職業(yè)技術(shù)學(xué)院《中學(xué)生物課堂教學(xué)技能訓(xùn)練》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣州華立科技職業(yè)學(xué)院《數(shù)據(jù)挖掘與決策管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 寧波衛(wèi)生職業(yè)技術(shù)學(xué)院《界面化學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 宜春學(xué)院《需求工程》2023-2024學(xué)年第二學(xué)期期末試卷
- 宿州職業(yè)技術(shù)學(xué)院《水質(zhì)工程學(xué)實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 《設(shè)備科安全培訓(xùn)》課件
- 延長石油招聘筆試題庫
- 糖尿病與飲酒
- 建筑安全施工勞動(dòng)保護(hù)考核試卷
- 烹飪工藝與營養(yǎng)基礎(chǔ)知識單選題100道及答案解析
- DB52T 1036-2015 建材產(chǎn)品中廢渣摻加量的測定方法
- 磁力聚星星選達(dá)人認(rèn)證考試-初階
- 《心態(tài)管理》課件
- 裝修垃圾清運(yùn)方案
- 2024年三違人員培訓(xùn)制度(四篇)
- 急救藥品課件教學(xué)課件
評論
0/150
提交評論