版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2021年湖南省邵陽市全國計算機(jī)等級考試
C++語言程序設(shè)計真題(含答案)
學(xué)校:班級:姓名:考號:
一、L選擇題(10題)
1.在C++中,打開一個文件,就是將這個文件與一個()建立關(guān)聯(lián);關(guān)閉
一個文件,就是取消這種關(guān)聯(lián)。
A.類B.流C.對象D.結(jié)構(gòu)
2.關(guān)系表中的每一橫行稱為一個
A.關(guān)系B.元組C.屬性D.字段
3.關(guān)于虛函數(shù),下列表述正確的是()。
A.如果重定義虛函數(shù)時使用了保留字virtual,則該重定義函數(shù)仍然是虛
函數(shù)
B.虛函數(shù)不得聲明為靜態(tài)函數(shù)
C.虛函數(shù)不得聲明為另一個類的朋友函數(shù)
D.派生類必須重新定義基類的虛函數(shù)
4.設(shè)有n元關(guān)系R及m元關(guān)系S,則關(guān)系只與S經(jīng)笛卡兒積后所得新
關(guān)系是一個()元關(guān)系。
A.mB.nC.m+nD.m*n
5.在下列數(shù)據(jù)管理的各階段中,數(shù)據(jù)獨(dú)立性最高的階段是
A.手工管理B.文件系統(tǒng)C.數(shù)據(jù)項管理D.數(shù)據(jù)庫系統(tǒng)
6.C++語言函數(shù)中不能由系統(tǒng)自動生成的是
A.析構(gòu)函數(shù)B.構(gòu)造函數(shù)C.內(nèi)聯(lián)函數(shù)D.拷貝構(gòu)造函數(shù)
7.下列敘述中正確的是
A.軟件測試的主要目的是確定程序中錯誤的位置
B.軟件調(diào)試的主要目的是發(fā)現(xiàn)程序中錯誤的類型
C.程序經(jīng)調(diào)試后還應(yīng)進(jìn)行測試
D.軟件的測試與調(diào)試工,作最好都由程序編制者來完成
8.已知函數(shù)f的原型是:voidf(int*a,long&b);,變量vl、v2的定義
是:intvl;longv2;,正確的調(diào)用語句是______。
A.f(vl,&v2);
B.f(vl,v2);
C.f(&vl,v2);
D.f(&v「&v2);
9.下列模板聲明中有語法錯誤的是
A.template<typenameT>Tfun(Tx){returnx;}
B.template<typenameT>Tfun(Tx,intn){returnx術(shù)n;}
C.template<classT>Tfun(T*P){retum*P;}
D.template
10.若有如下程序:#include<iostream>usingnamespacestd;int
main(){char*p="abcdefgh",*r;long*q;q=(long*)p;q++;r=(char*)q;cout
<<r<<endl;return0;}上述程序的輸出結(jié)果是()。
A.abcdefghB.OC.abcdD.efgh
二、單選題(13題)
11.類MyClass的定義如下:
classMvClass
(
public:
MyClass(){value=0;}
SetVariable(inti){value=i;}
private:
intvalue;
);
則對下列語句序列正確的描述是()o
A.語句p=&my;是把對象my賦值給指針變量P
B.語句MyClass*P,my;會調(diào)用兩次類MyClass的構(gòu)造函數(shù)
C.對語句*P.SetVariable(5)的調(diào)用是正確的
D.語句p->SetVariable(5)與語句my.SetVariable(5)等價
12.設(shè)有“intx=ll;",則表達(dá)式(x++*2/3)的值是()。
A.7B.8C.llD.12
13.有如下程序:
#include<iostream>
usingnamespacestd;
classXA{
inta;
public:
staticintb;
XA(intaa):a(aa){b++;}
?XA(){}
intget(){returna;}
);
intXA::b=0
intmain(){
XAdl(l),d2(3);
cout?dl.get()+d2.get()+XA::b?endl;
returnO;
)
運(yùn)行時的輸出結(jié)果是()oA.5B.6C.7D.8
14.下列選項中屬于面向?qū)ο笤O(shè)計方法主要特征的是()。
A.繼承B.自頂向下C.模塊化D.逐步求精
15.設(shè)函數(shù)中有整型變量n,為保證其在未賦初值的情況下初值為0,應(yīng)
選擇的存儲類別是()。
A.A.autoB.xegisterC.staticD.autO或register
16.運(yùn)算符重載時不需要保持的性質(zhì)是_______。
A.操作數(shù)個數(shù)B.操作數(shù)類型C.優(yōu)先級D.結(jié)合性
17.關(guān)于在調(diào)用模板函數(shù)時模板實(shí)參的使用,下列表述中正確的是()。
A.對于虛擬類型參數(shù)所對應(yīng)的模板實(shí)參,如果能從模板函數(shù)的實(shí)參中獲
得相同的信息,則都可以省略
B.對于虛擬類型參數(shù)所對應(yīng)的模板實(shí)參,如果它們是參數(shù)表中的最后的
若干個參數(shù),則都可以省略
C.對于虛擬類型參數(shù)所對應(yīng)的模板實(shí)參,若能夠省略則必須省略
D.對于常規(guī)參數(shù)所對應(yīng)的模板實(shí)參,任何情況下都不能省略
18.以下不使用線性結(jié)構(gòu)表示實(shí)體之間聯(lián)系的模型的是()。
A.線性表B.棧和隊列C.二叉樹D.以上三個都不是
19.下列選項中不屬于結(jié)構(gòu)化程序設(shè)計方法的是()。
A.A.自頂向下B.逐步求精C.模塊化D.司復(fù)用
20.
(33)下列關(guān)于虛函數(shù)的說明中,正確的是().
A)從虛基類繼承的函數(shù)都是虛函數(shù)B)虛函數(shù)不得是靜態(tài)成員函數(shù)
C)只能通過指針或引用調(diào)用虛函數(shù)D)抽象類中的成員函數(shù)都是虛函數(shù)
21.
25.執(zhí)行語句:cout<<setfill('*')(〈setw(10)〈〈setfilK'#')((left〈〈123〈〈"OK"((endl;
后將輸出().
A.123*******OK
B.123####多##OK
C.123********OK********
D.123#######OK########
22.下列選項中正確的語句是()o
A.chars[3];s="BOOK!";
B.char*s;s={"BOOK!"!;
C.chars[10];s="BOOK";
D.char*S;s="BOOK!";
23.在多繼承中,公有派生和私有派生對于基類成員在派生類中的可訪
問性與單繼承的規(guī)則()。
A.完全相同B.完全不同C.部分相同,部分不同D.以一上都不對
三、2.填空題(12題)
24.為了便于對照檢查,測試用例應(yīng)由輸入數(shù)據(jù)和預(yù)期的【】兩部分組
成。
25.當(dāng)輸入d的值22時,以下程序的輸出結(jié)果是【】。
voidbin(intb){
if(b>=2)bin(b/2);
cout<<b%2;
voidmain(){
intd;
cin>>d;
bin(D);
)
26.排序是計算機(jī)程序設(shè)計中的一種重要操作,常見的排序方法有插入
排序、【】和選擇排序等。
27.在最壞情況下,冒泡排序的時間復(fù)雜度為o
28.函數(shù)f()的功能是將形參x的值轉(zhuǎn)換為二進(jìn)制數(shù),所得二進(jìn)制數(shù)的每
一位數(shù)放在一維數(shù)組y中返回。二進(jìn)制的最低位放在下標(biāo)為0的元素
中,請將程序補(bǔ)充完整。
voidf(intx,inty[]){
intm=0,n;
do{
n=x%[];
y[m++]=n;
x/=2;
}while(x);
)
29.在下面的程序的橫線處填上適當(dāng)?shù)恼Z句,使該程序的輸出為12。
#include<iostream.h>
usingnamespacestd;
classBase
(
public:
inta,b;
Base(inti){a=i;}
};
classDerived:publicBase
(
inta;
public:
Derived(intx):Base(x),b(x+l){};
voidshow()
(
,輸出基類數(shù)據(jù)成員a的值
cout<<b<<endl;
)
);
intmain()
(
Derivedd(l);
d.show();
return0;
30.在面向?qū)ο蟮脑O(shè)計中,用來請求對象執(zhí)行某一處理或回答某些信息
的要求稱為【】。
31.下列程序的輸出結(jié)果為:
Ohjectid=0
Objectid=l
請將程序補(bǔ)充完整。
#include<iostream>
usingnamespaeestd;
classPoint{
public:
Point(intxx=O,intyy=O){X=xx;Y=yy;countP++;}
?Point(){countP—;}
intGetX(){returnX;}
intGetY(){returnY;}
staticvoidGetC(){cout<<"Objectid="<<<countP<<endl;}
private:
intX,Y;
staticintcountP;
);
〃靜態(tài)數(shù)據(jù)成員的初始化
intmain(){
Point::GetC();
PointA(4,5);
A.GetC();
return0;
)
32.在C++語言中,訪問一個對象的成員所用的運(yùn)算符是【】,訪問一
個指針?biāo)赶虻膶ο蟮某蓡T所用的運(yùn)算符是【】。
33.執(zhí)行這個程序的輸出結(jié)果是();
#include<iostream>
usingnamespacestd;
classTestClassl
(
public:
voidfunl(){cout<<"TestClassl\n";}
virtualvoidfun2(){cout<<"TestClassl\n";}
);
classTestClass2:publicTestClassl
(
public:
voidfunl(){cout<<"TestClass2\n";}
voidfun2(){cout<<"TestClass2\n";)
);
voidf(TestClassl&b){b.funl();b.fun2();}
intmain()
(
TestClass2obj;
f(obj);
return0;
34.程序的結(jié)果為【】。
#include,,iostream.h"
template<typenameT>
Ttotal(T*data)
(
Ts=0;
while(*data)
(
s+=*data++;
returns;
intmain()
{intx[]={2,4,6,8,0,12,14,16,18];
cout<<total(x);
r
35.有如下程序:
#include<iostream>
usingnamespacestd;
classCA{
public:
CA(){cout+,A,;}
);
classCB:privateCA{
public:
CB(){cout<<}
);
intmain(){
CAa;
CBb;
return0;
)
這個程序的輸出結(jié)果是______。
四、程序改錯題(10題)
36.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)
行有問題,請改正main函數(shù)中的錯誤,使程序的輸出結(jié)果為:
number=l
number=10
number=100
注意:不要改動main函數(shù),不能增加或刪除行。也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******error******的下面。
試題程序:
#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*j*or********
TCobjl;
objl.Print;
TCobj2(3);
II********ej*j*or********
objl.number=10;
II*************
TC.SetNumber(lOO);
objl.Print;
obj2.Print;
37.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序
運(yùn)行時有錯,請改正其中的錯誤,使程序正常運(yùn)行,輸出的結(jié)果為
Constructor,i=0,
Destructor
注意:錯誤的語句在//******errc>r******的下面,修改該語句即
可。
試題程序:
#include(iostream.h)
classTC
inti;
public:
TC;
voiddisplay;
?TC;
);
//******enor******
TC:TC
(
cout?"Constructor"?",";
i=0;
)
I/******ej'j*or******
TC:display
(
tout?"i="?i<<","?endl;
)
I/******ej'j*or******
TC:TC
(
COUI?"Destructor"?endl:
)
voidmain
(
TCa;
a.display;
38.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序
運(yùn)行時有錯誤,請改正錯誤,使程序正常運(yùn)行,并且要求最后一個
catch必須拋出執(zhí)行的任何異常。
程序異常,輸出信息為
error
0
ERROR
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******error******的下面。
試題程序:
#include<iostream.h)
intmain
(
try
throw("error");
/I********epj*or********
catch(chars)
(
cout?s?endl;
try
throw((int)0);
II********epj*or********
catch
cout?i?endl;
try
(
throw(O);
throw("error");
II********ej*j*or********
catch
(
cout?"ERROR"?endl;
)
returnO;
39.使用VC++6.0打開考生文件夾下的源程序文件1.cppo本程序要
求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可能輸
入多行,當(dāng)輸入字符“?”時,默認(rèn)字符輸入結(jié)束,最后把結(jié)果輸出到屏幕
中。
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******error******的下面。
試題程序:
#include<iostream.h>
voidmain
(
inti=0;
charstr[120];
cout?''Enterastringendwith?."?endl;
********error********
cin.getline(str,120);
II********eppor********
while(str)
II********ej*j*or********
if(str[i])=a)
str[i]=str[i]-a+A;
1++;
)
cout?str?endl;
return;
40.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)
行時有錯,請改正其中的錯誤,使程序正常運(yùn)行,并使程序輸出的結(jié)果
為:
sizeof(Sl)=5
sizeof(s2)=10
sizeof(s3)=l
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******error******的下面。
⑴不能刪除assert()語句。
(2)只能修改后面的數(shù)字。
提示:assert函數(shù)如果為假,則會產(chǎn)生一個中斷異常。
試題程序:
#include<iostream.h>
#include<assert.h>
voidmain()
char*sl="abc":
II********error********
assert(sizeof(sl)==3):
cout?"sizeof(sl)=5"?endl;
chars2[10]="ab":
II********error********
assert(sizeof(s2)==2);
cout?"sizeof(s2)=10"?endl;
chars3=23:
II****************
assert(sizeof(s3)==4);
cout?"sizeof(s3)=l"?endl;
return;
)
41.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)
行時有錯誤,請改正程序中的錯誤,使得程序輸出:
9,8,7,6,5
注意:錯誤的語句在/********error********/的下面,修改該語句即
可。其他的語句不能修改。
試題程序:
#include(iostream.h>
classTC
I********ej*£*or********I
TC(inti)
(
m_i=i;
)
voidprint
(
cout?—m_i?,'i
)
public:
intm_i;
intmain
I********ej*por********I
inti;
TC04(10);
while(i>5)
I********ei*rOr********/
i++:
04.print;
cout?endl;
returnO;
42.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序
運(yùn)行有問題,請改正main函數(shù)中的錯誤,使程序的輸出結(jié)果為:
number=l
number=10
number=100
注意:不要改動main函數(shù),不能增加或刪除行。也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******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
/I********eppor********
TCobjl;
objl.Print;
TCobj2(3);
/I********eppor********
objl.number=10;
//********eno[******
TC.SetNumber(lOO);
objl.Print;
obj2.Print;
43.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序
運(yùn)行時有錯。請改正程序中的錯誤,使程序輸出的結(jié)果為
100
37
32
注意:錯誤的語句在//******errc)r******的下面,修改該語句即
可。
試題程序:
#include<iostream.h>
//******epj*or******
voidmain
(
I/************
intm=0142:
//******epj*or******
intn=0X27:
intq=32;
cout<<m<<endl;
cout<<n<<endl;
cout<<q<<endl;
return;
)
44.使用VC++6.。打開考生文件夾下的源程序文件1.cpp。本程序
要求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可
能輸入多行,當(dāng)輸入字符“?”時,默認(rèn)字符輸入結(jié)束,最后把結(jié)果輸出
到屏幕中。
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******errc>r******的下面。
試題程序:
#include<iostream.h>
voidmain
(
inti=O;
charstr[120];
cout?"Enterastringendwith?."?endl;
/I********eppor********
cin.getline(str,120);
/I********eppor********
while(str)
/I********eppor********
if(str[i])=a)
str[i]=str[i]-a+A;
i++;
)
cout?str?endl;
return;
45.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)
行時有錯,請改正其中的錯誤,使程序正常運(yùn)行,輸出的結(jié)果為
Constructor,i=0,
Destructor
注意:錯誤的語句在//******error******的下面,修改該語句即可。
試題程序:
#include(iostream.h)
classTC
(
inti;
public:
TC;
voiddisplay;
~TC;
);
/*1**1*7)KIX
//不不不不不不prrcr不不不不不不
TC:TC
(
cout?"Constructor"?",";
i=0;
)
/*1**1**1**1**1*KL*xl*
//不不不不不不prrcr不不不不不不
TC:display
(
tout?"i="?i?","?endl;
)
/*1**1*
//不不不不不不prrcr不不不不不不
TC:TC
COUI?"Destructor"?endl:
voidmain
(
TCa;
a.display;
)
五、綜合應(yīng)用題(2題)
46.使用VC++6.。打開源程序文件3.cpp。其中類TC用于把文件
輸出到屏幕,然后進(jìn)行文件的分割。分割的方法如下:第一個文件的
大小是文件的前一半,另外一個文件的大小是剩余部分。此程序?qū)?/p>
in.txt文件中的內(nèi)容輸出到
屏幕,并且將文件按照以上方式分割,存于文件outl.txt和out2.txt
中。
其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完
整。
⑴從輸入文件中獲得一個字符,并判斷是否到文件結(jié)
尾,如果到文件結(jié)尾,則退出循環(huán)。請在注釋1后添加適當(dāng)?shù)恼Z句。
(2)把獲得的輸入文件的內(nèi)容存儲到bur中,并且用len
記錄下文件的長度。請在注釋2后添加適當(dāng)?shù)恼Z句。
(3)將輸入文件的后一半內(nèi)容存儲在第二個文件中,請
在注釋3后添加適當(dāng)?shù)恼Z句。
(4)使用文件流對象打開輸入文件in.txt,請在注釋4
后添加適當(dāng)?shù)恼Z句。
注意:增加代碼或者修改代碼的位置已經(jīng)用符號表示出來。請不要修
改其他的程序代碼。
試題程序:
#include<iostream.h>
#include<fstream.h>
#include<stdlib.h)
classTC
(
public:
TC(char*fileName)
(
len=O;
fstreaminfile;
infile.open(fileName,ios::in);
charch;
while
(
cout?ch;
/********2********
)
infile,close;
voidsplit
fstreamoutfilel;
fstreamoutfile2;
outfilel.open("outl.txt",ios::out);
outfile2.open("out2.txt",ios::out);
inti=0:
for(i=0;i<len/2;i++)
(
outfilel?buf[i];
)
do
(
//********3********
)
while(i!=len);
outfilel.close;
outfile2.close;
)
prwate:
intlen;
charbuf[1024];
);
voidmain
(
//********4********
TCobj;
obj.split;
return;
47.使用VC++6.。打開考生文件夾下的源程序文件3.cpp。其中定
義的類不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。每賣出
一個水果,則計算水果的重量,還要計算所有賣出水果的總重量以及
總個數(shù),同時允許退貨,請按照以下的操作,把類補(bǔ)充完整。
⑴定義類TCFruit的私有靜態(tài)數(shù)據(jù)成員float型變量AllWeight和int型
變量A11N0,請在注釋1后添加適當(dāng)?shù)恼Z句。
(2)完成類TCFruit的帶一個float型變量w的構(gòu)造函數(shù),并把這個w加
到AllWeight中,并且AllNo自加。請在注釋2后添加適當(dāng)?shù)恼Z句。
(3)在析構(gòu)函數(shù)中,在AllWeight中減去weight,然后AllNo自減,請
在注釋3后添加適當(dāng)?shù)恼Z句。
(4)完成靜態(tài)成員變量的初始化為0,請在注釋4后添加適當(dāng)?shù)恼Z句。
注意:增加或者修改代碼的位置已經(jīng)用符號表示出來,請不要修改其
他的程序代碼。
試題程序:
#include(iostream.h>
classTCFruit
(
private:
floatWeight;
staticintAllNo;
public:
TCFruit(floatw)
//********2********
AllWeight+=w:
AllNo++:
TCFruit
//********3********
A11Weight-=Weight:
)
voiddisplay
(
cout?"SellaFruitwith"?Weight?"k9"<<
endl;
cout?,,Allsellnumber:''?A11No?endl;
cout?"Allsellweight:"?A11Weight?"k9"?
endl?endl;
)
);
II********4********
floatTCFruit::AllWeight=O.0;
intmain
(
TCFruitFruitl(l.2);
Fruitl.display;
TCFruitFruit2(2.3);
Fruit2.display;
returnO;
)
六、3.綜合應(yīng)用題(2題)
48.使用VC6打開考生文件夾下的工程test4_3o此工程包含一個源程
序文件test4_3.cpp,其對一個學(xué)校的教師和考生情況進(jìn)行了描述。由于
教師和考生之間有相同的信息,如姓名、年齡等,所以可抽象出一個基
類person,考生類student和教師類teacher作為person類的派生類。請
按要求完成下列操作,將程序中的類定義補(bǔ)充完整。
(1)定義基類person的私有數(shù)據(jù)成員name和age,分別用于表示姓名和
年齡,name為字符指針,age為血型的數(shù)據(jù)。請在注釋“〃**1**”之后添
加適當(dāng)?shù)恼Z句。
(2)完成基類person的重載構(gòu)造函數(shù)person(char*minta)的定義,把數(shù)據(jù)
成員name,age分別初始化為參數(shù)n,a的值,請在注釋“〃**2**”之后
添加適當(dāng)?shù)恼Z句。
(3)根據(jù)主函數(shù)main中對si的聲明,定義派生類student的構(gòu)造函數(shù)。
在注釋“〃**3**,,之后添加適當(dāng)?shù)恼Z句。
(4)完成派生類teacher成員函數(shù)voidsetinf(ehar*n,inta,char*d,char*1)
的定義,其功能為記錄教師的姓名、年齡、院,系與職稱信息。請在注
釋“〃**4**,,之后添加適當(dāng)?shù)恼Z句。
輸出結(jié)果如下:
劉雷(45)destructor
蔣軍(23)destructor
注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。
源程序文件test4_3.cpp清單如下:
#include<iostream.h>
classperson
(
〃**]**
public:
person(){}
person(char*n,inta)
(
〃**2**
)
voidsetname(char*n){name=n;)
voidsetage(inta){age=a;}
?person(){cout<<name<<"("<<age<<")destructor"<<endl;)
);
classstudent:publicperson
(
char*department;
intcode;
public:
〃**3**
(
department=d;
code=c;
)
);
classteacher:publicperson
char*department;
char*level;
public:
teacher(){}
voidsetinf(char*n,inta,char*d,char*1)
(
〃**4**
department=d;
level=l;
)
);
voidmain()
(
studentsl("蔣軍",23,”計算機(jī)學(xué)院”,2);
teachertl;
tLsetinf("劉雷",45,”計算機(jī)學(xué)院","教授)
)
49.使用VC6打開考生文件夾下的工程tsst6_3,此工程包含一個源程
序文件test6_3.cpp,其中定義了用于表示考生的類Student,請按要求完
成下列操作,將程序補(bǔ)充完整。
(1)定義私有數(shù)據(jù)成員code、english分別用于表示考生的編號、英語成
績、它們都是血型的數(shù)據(jù)。請在注釋“//**1**”之后添加適當(dāng)?shù)恼Z句。
(2)完成成員函數(shù)voidStudent::inputinformation()的定義,該函數(shù)用于用
戶輸入一個考生對象的信息,輸入格式如下:
輸入編號:
英語成績;
計算機(jī)成績:
請在注釋“〃**2**”之后添加適當(dāng)?shù)恼Z句。
(3)利用己實(shí)現(xiàn)的類Student的成員函數(shù),完成函數(shù)voidfirstname(Student
*A[],intnum)的定義,該函數(shù)根據(jù)考生信息A[],輸出num個考生中總
分最高者的編號及其相應(yīng)的總分,在此不考慮總分相同的情況。請在注
釋“〃**3**,,之后添加適當(dāng)?shù)恼Z句。
注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。
源程序文件test6_3.cpp清單如下:
#include<iostream.h>
classStudent
(
〃**]**
intcomputer;
inttotal;
public:
voidgetinformation();
voidcomputesum();
intgetcode();
intgettotalscore();
?Student();
);
voidStudent::getinformation()
(一
COUt<<"英語成績:";
cin>>english;
cout<〈”計算機(jī)成績:
cin>>computer;
)
voidStudent::computesum()
(
total=english+computer;
cout<<"編號"<<code<<"總分:"<<total<<endl;
intstudent::getcode()
{'
returncode;
)
intStudent::gettotalscore()
(-
returntotal;
)
voidfirstname(Student*A[],intnum)
(
〃**3**
tempsum=(*A[0]).gettotalscore();
for(inti=l;i<num;i++)
(
if(((*A[i]).gettotalscoreQ)>tempsum)
(
tempcode=(*A[i]),getcode();
telnpsum=(*A[i]).gettotalscore();
)一
)
cont<<"總分最高者<<tempcode<<"<<tempsum<<endl;
)
voidmain()
(
Student*A[3];
inti,n=3;
for(i=0;i<n;i++)
(
A[i]=newStudent;
A[i]->getinformation();
)
for(i=0;i<n;i++)
(
A[i]->computesum();
firstname(A,3);
參考答案
1.B
2.B解析:關(guān)系表中的每一橫行稱為一個元組。
3.B
4.C解析:本題考核對笛卡兒積運(yùn)算的掌握。笛卡兒積是兩個關(guān)系的合
并操作,因此n元關(guān)系R與m元關(guān)系S經(jīng)笛卡兒積后所得新關(guān)系是
m+n元關(guān)系。
5.D解析:顯然,在數(shù)據(jù)庫系統(tǒng)階段,數(shù)據(jù)獨(dú)立性最高。
6.C解析:一個類中由系統(tǒng)自動生成的函數(shù)有構(gòu)造函數(shù),析構(gòu)函數(shù),拷
貝構(gòu)造函數(shù)。注意:內(nèi)聯(lián)函數(shù)只能由用戶自己定義。注意:類能自動生
成的函數(shù),尤其注意構(gòu)造函數(shù)和析構(gòu)函數(shù),還有拷貝構(gòu)造函數(shù)。
7.C解析:軟件測試的目標(biāo)是在精心控制的環(huán)境下執(zhí)行程序,以發(fā)現(xiàn)程
序中的錯誤,給出程序可靠性的鑒定。
測試不是為了證明程序是正確的,而是在設(shè)想程序有錯誤的前提下進(jìn)行
的,其目的是設(shè)法暴露程序中的錯誤和缺陷。
由于測試的這一特征,一般應(yīng)當(dāng)避免由開發(fā)者測試自己的程序。
測試只能說明程序有錯,而不能證明程序無錯,希望通過有限次的測試
就能發(fā)現(xiàn)程序中的所有錯誤是不可能的,即完全測試是不可能的。
因此,選項A)與D)中的說法都是錯誤的。
調(diào)試也稱排錯。
.測試的目的是暴露錯誤,而調(diào)試的目的是發(fā)現(xiàn)錯誤的位置,并改正錯誤。
.經(jīng)測試發(fā)現(xiàn)錯誤后,可以立即進(jìn)行調(diào)試并改正錯誤;經(jīng)過調(diào)試后的程序
還需進(jìn)行回歸測試:以檢查調(diào)試的效果,同時也可防止在調(diào)試過程中引
進(jìn)新的錯誤。
因此,選項B)中的說法也是錯誤的,而選項C)中的說法是正確的。
8.C解析:vl是需要傳遞地址給a,b是引用。
9.C
10.D解析:本題定義了一個字符型指針變量p,并通過賦初值讓它指向
了一個字符串。還定義了另一個字符型指針變量r和一個長整型指針變
量q。首先通過語句“q=Qong*)p;",把p的地址值強(qiáng)制轉(zhuǎn)換為長整型地
址值并賦值給q,然后執(zhí)行“q++;”,地址值增加了4,執(zhí)行語句
“r=(char*)q;把長整型指針變量q的值再強(qiáng)制轉(zhuǎn)換成字符型地址值并
賦給r,r的值應(yīng)為字符串中字符“e”的地址。最后輸出r指向的字符串。
U.D\nD。【解析】選項A,語句P=&my;是把對象my的地址值賦值給
指針變量P;選項B,語句MyClass*P,my;中由于P只是一個指向?qū)?/p>
象的指針,因此定義指針P不調(diào)用構(gòu)造函數(shù),所以此語句只調(diào)用一次構(gòu)
造函數(shù):對成員函數(shù)的引用可以通過兩種形式:指針一>成員函數(shù)(形參
表),或者對象名.成語函數(shù)名(形參表),故選項C錯誤,選項D正確。
\n
12.A
Ao【解析】當(dāng)自加運(yùn)算符做后綴表達(dá)式的時候,表達(dá)式的值不變,只
有變量的值增1,所以表達(dá)式(x++*2/3)相當(dāng)于(11*2/3)取整后為
7。
13.C
Co【解析】每調(diào)用一次get函數(shù)時,對新的類A對象進(jìn)行一次實(shí)例
化,調(diào)用一次構(gòu)造函數(shù),類A的靜態(tài)成員變量b便加1。
14.A
面向?qū)ο笤O(shè)計方法的三個基本特性即封裝、多態(tài)、繼承。結(jié)構(gòu)化程序
設(shè)計方法的主要原則可以概括為自頂向下、逐步求精、模塊化、限制
使用goto語句。故答案為A)o
15.C
Co【解析】在C語言中,未賦初值的靜態(tài)局部變量,編譯程序自動
給它賦初值0。所以選擇C。
16.B\n重載運(yùn)算符的規(guī)則如下:①C++不允許用戶自己定義新的運(yùn)算符,
只能對已有的C++運(yùn)算符進(jìn)行重裁②C++不能重載的運(yùn)算符只有5個;
③重載不能改變運(yùn)算符運(yùn)算對象的個數(shù);④重載不能改變運(yùn)算符的優(yōu)先
級和結(jié)合性;⑤重載運(yùn)算符的函數(shù)不能有默認(rèn)的參數(shù);⑥重載的運(yùn)算符
必須和用戶定義的自定義類型的對象一起使用,至少應(yīng)有一個是類對象,
即不允許參數(shù)全部是C++的標(biāo)準(zhǔn)類型。所以答案為Bo
\n
17.D
在調(diào)用一個模板函數(shù)時,編譯系統(tǒng)需要足夠的信息來判別每個虛擬類
型參數(shù)所對應(yīng)的實(shí)際類型,可以從兩個不同的渠道獲得這樣的信息:
從模板實(shí)參表(用“<>”括起來的參數(shù)表)或從模板函數(shù)實(shí)參表(用“”括起
來的參數(shù)表)。如果從后者獲得的信息已經(jīng)能夠判定其中部分或全部虛
擬類型參數(shù)所對應(yīng)的實(shí)際參數(shù),而且它們又正好是參數(shù)表中最后的若
干參數(shù),則模板實(shí)參表中的那幾個參數(shù)可以省略。如果模板實(shí)參表中
的實(shí)參都被省略了,則空表“<>”也可以不要,因此選項D錯誤。反
之,對于某個模板實(shí)參,如果從模板函數(shù)的實(shí)參表中無法獲得同樣的
信息,就不能省略;或者雖然能夠獲得同樣的信息,但在它后面還有
其他不能省略的實(shí)參,則其自身還是不能省略。
18.C
19.DD?!窘馕觥靠蓮?fù)用屬于面向?qū)ο蟪绦蛟O(shè)計方法,其他選項屬于結(jié)構(gòu)
化程序設(shè)計方法。
20.B(33)B)【解析】此題考查的是虛函數(shù)的概念。在成員函"3"\11數(shù)的
聲明前面加上virtual關(guān)鍵字,即可把函數(shù)聲明為虛函數(shù)。虛函\r\n\r\n數(shù)
可以是另一個函數(shù)的友元函數(shù)而不能是靜態(tài)成員函數(shù)。
21.B
22.D
Do【解析】在選項D中.字符指針s指向字符串常量BOOK!。故選
項D正確。
23.A
24.輸出結(jié)果輸出結(jié)果
25,10110
26.交換排序交換排序解析:常見的排序方法有插入排序(包括簡單插入
排序法和希爾排序法等)、交換排序(包括冒泡排序和快速排序法等)和選
擇排序(包括簡單選擇排序和堆排序等)。注意:常見的排序方法及其作
用機(jī)制和區(qū)別。
27.n(n-l)/2n(n-l)/2解析:冒泡排序法是通過相鄰數(shù)據(jù)元素的交換逐步
將線性表變成有序。假設(shè)線性表的長度為n,則在最壞的情況下,冒泡
排序需要經(jīng)過n/2遍的從前往后的掃描和n/2遍的從后往前的掃描,需
要的比較次數(shù)為n(n-l)/2o
28.22解析:函數(shù)f()的功能是將形參x的值轉(zhuǎn)換為二進(jìn)制數(shù),所以程序
的空白處應(yīng)填入2。
29.cout<<Base::acout<<Base::a解析:此題考查的是基類和派生類的
構(gòu)造函數(shù)。派生類構(gòu)造函數(shù)的執(zhí)行順序為:首先調(diào)用基類的構(gòu)造函數(shù),
調(diào)用順序按它們被繼承時說明的順序;然后調(diào)用子對象的構(gòu)造函數(shù),調(diào)
用順序按它們在類中說明的順序;最后是派生類構(gòu)造函數(shù)中的內(nèi)容。此
題要求結(jié)果是輸出12,分析題目,首先調(diào)用基類的構(gòu)造函數(shù),然后是調(diào)
用子對象的構(gòu)造函數(shù),橫線處要求輸出基類成員a的值,填入cout<<
Base::a即可。
30.消息消息解析:在面向?qū)ο蟮脑O(shè)計中,用來請求對象執(zhí)行某一處理
或回答某些信息的要求稱為消息。
3POint::counfP=0;intPOint::counfP=0;解析:靜態(tài)數(shù)據(jù)成員的初始
化格式為:
<數(shù)據(jù)類型><類名>::<靜態(tài)數(shù)據(jù)成員名>=<初始值>;
32.成員選擇運(yùn)算符(或成員訪問運(yùn)算符(或“->”)成員選擇運(yùn)算符
(或成員訪問運(yùn)算符(或解析:本題考查的是使用對象和對
象指針訪問成員所使用的符號的不同,考生請注意它們的區(qū)別。
33.TestClasslTcstClass2TestClass1\r\nTcstClass2解析:主函數(shù)中首先定
義TestClass2對象obj,然后執(zhí)行“f(obj);‘‘。"voidf(TestClassl&
b){b.fiinl();b.fim2();}"語句中fun中參數(shù)為TestClassl類型的對象b,其
中調(diào)用fun1()和fun2()o基類TestClassl中的fun2()為虛函數(shù),所以派
生類中的fun2也是虛函數(shù),所以輸出為調(diào)用TestClassl中的funl,
TestClass2中的fun2o即結(jié)果為TestClassl和TestClass2o
34.2020解析:要理解*data的含意。
35.AAB。AABO解析:本題考查的是派生類的構(gòu)造函數(shù)。建立派生類
對象時,構(gòu)造函數(shù)的執(zhí)行順序:執(zhí)行基類的構(gòu)造函數(shù),調(diào)用順序按照各
個基類被繼承時聲明的順序(自左向右),接著執(zhí)行成員對象的構(gòu)造函數(shù),
調(diào)用順序按照各個成員對象在類中聲明的順序->執(zhí)行派生類的構(gòu)造函
數(shù)。題目中首先定義了類CA的對象a,輸出,然后定義CB類的對
象b,因為CB類派生自CA類,所以會先執(zhí)行CA類的構(gòu)造函數(shù),再
執(zhí)行CB類的構(gòu)造函數(shù),即輸出A和,
36.(1)應(yīng)改為"TCobjl⑴;
3(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ù),并且題目要求第一個輸
出結(jié)果兩1,所以補(bǔ)全參數(shù)1,即第1處的“TCobjl(l);第2處處的
“objl.number=10;”應(yīng)該是調(diào)用成員函數(shù)SetNumber賦值。在C++中
成員函數(shù)的使用形式應(yīng)該是:對象名.成員函數(shù),所以修改為
5,
“objl.SetNumber(lO);o類是對象的抽象,而對象是類的具體實(shí)例。
第3處“TC.SetNumber(lOO);”語句中的TC為類,并不是對象,這里
應(yīng)該使用定義的對象,即obj2,所以將語句修改為
“obj2.SetNumber(lOO);
37.(1)應(yīng)改為“TC::TC”。
(2)應(yīng)改為"voidTC::display”。
(3)應(yīng)改為“TC::?TC”。
【解析】在類的外部定義成員函數(shù)時,必須在成員函數(shù)前面加上類名
和作用域運(yùn)算符“::”,作用域運(yùn)算符用采表示某個成員屬于哪個
類,使用格式為“(類名)::<成員函數(shù)〉((參數(shù)函數(shù))),因此第1處應(yīng)改
為“TC::TC”,默認(rèn)構(gòu)造函數(shù)沒有參數(shù)。由第2處“TC::display”后
的語句看,這是在類外實(shí)現(xiàn)TC函數(shù),因此也有作用域運(yùn)算符使用錯
誤問題,display函數(shù)返回值為void,因此第2處的語句應(yīng)改為
“voidTC::display”。由第3處的語句“TC::TC”可知,顯然這里是
在類外實(shí)現(xiàn)析構(gòu)函數(shù),析構(gòu)函數(shù)是一個特殊的函數(shù),它的名稱和類名
相同,并在前面加“?”字符,用采與構(gòu)造函數(shù)加以區(qū)別,因此第3處
的語句應(yīng)改為“TC::?TC”。
38.⑴應(yīng)改為"catch(char*s)‘'。
(2)應(yīng)改為"cateh(inti)”。
(3)應(yīng)改為"catch(…)”。
【解析】本題中第1個標(biāo)識前的異常拋出語句為“throw("error");",其
中的類型為字符串。所以對應(yīng)的異常捕捉語句catch中應(yīng)該符合這個類
型,而程序中給出的語句“catch(chars)”是字符型的,所以第1處的語
句修改為“catch(char*S)”。第2個標(biāo)識前的異常拋出語句為
“throw((int)0);”,其中的類型為int。對應(yīng)的異常捕捉語句catch中應(yīng)
該符合這個類型,所以補(bǔ)充catch子句中的類型,否則如果找不到匹配
的catch塊,系統(tǒng)就會調(diào)用一個系統(tǒng)函數(shù),使程序終止運(yùn)行。即第2處
的語句修改為“catch(inti)”。如果在catch子句中沒有指定異常信息的類
型,那么就用刪節(jié)號“…”表示它可以捕捉任何類型的異常信息,即修
改為“catch(…)”。
39.(1)應(yīng)改為“ein.getline(str,120,?);
W(2)應(yīng)改為"while(str[i])”。
,,
W(3)應(yīng)改為"iRstr[i]>=a&&str[i]<=2)o
\n【解析】本題中要求以輸入字符“?”為結(jié)束符,用于字符輸入的流成員
函數(shù)getline函數(shù)讀入一行字符,格式為“cin.getline(字符數(shù)組,字符個
數(shù),終止標(biāo)志字符字所以第1處改為“cin.getline(str,120,?);第
2處的“while(str)”語句應(yīng)該是判斷字符串str中的每一個字符是否為結(jié)
束符,若不是結(jié)束符,在循環(huán)中判斷每一個字符是否為小寫,若為小寫,
則轉(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)”。
40.(1)應(yīng)改為"assert(sizeof(sl)==4);
3(2)應(yīng)改為"255611區(qū)260的2)==10);”。
W(3)應(yīng)改為"assert(sizeof(s3)==l);”。
\n【解析】assert函數(shù)如果為假,則會產(chǎn)生一個中斷異常。所以要讓它正
常執(zhí)行輸出結(jié)果,那么assert函數(shù)只有為真,才不會產(chǎn)生中斷異常。
ccassert(sizeof(s1)==3);"語句中"sizeof(sl)==3”為假,這會使程序產(chǎn)生異
常,不能正常執(zhí)行。因為strl的值為abc,但是它還有一個尾符,它的
長度應(yīng)該是4,而不是3,所以在第1處修改為“assert(sizeof(sl)==4)
str2[10]說明,str2的空間為10,在第2處修改為"assert(sizeof(s2)==10)
charstr3=23;語句說明23是字符,所占存儲空間為1,所以修改為
"assert(sizeof(s3)==1);”。
41.(1)應(yīng)添加“public:"。
\n(2)“inti”應(yīng)改為“inti(10);
\n(3)“i++「應(yīng)改為“i--
\n【解析】本題主要考查的是成員的訪問屬性。成員的訪問屬性有公有、
保護(hù)和私有3種,而默認(rèn)的訪問屬性為私有,只有公有成員才能通過類
的對象被訪問。故應(yīng)在構(gòu)造函數(shù)前添加“public:",否則該類無法被實(shí)例
化。變量的初始化可以通過“=”號,也可以和初始化對象一樣添加構(gòu)造
參數(shù),題目已要求使用后者。本題要求輸出5個數(shù),while的循環(huán)變量i
每次減1,在i>5時循環(huán),故i初始化應(yīng)為10。若循環(huán)中i每次增1,則
循環(huán)永遠(yuǎn)不會退出。
42.(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ù),并且題目要求第一個
輸出結(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);
43.(1)“voidmain”。
(2)“intm=0144;
(3)“intn=OX25;”或“intn===0x25;
【解析】本題主要考查了主函數(shù)定義及幕同進(jìn)制之間的轉(zhuǎn)換,包括十
進(jìn)制到八進(jìn)制,十進(jìn)制到十六進(jìn)制。主函數(shù)定義的定義形式為
“main”,函數(shù)名之后必須是一對括號,因此第1處應(yīng)改為“voidmain”。
cout輸出默認(rèn)是以十進(jìn)制方式輸出的,根據(jù)題目要求輸出的結(jié)果可發(fā)
現(xiàn)變量的初值不正確,十進(jìn)制的100對應(yīng)八進(jìn)制的144,卡進(jìn)制的37
對應(yīng)十六進(jìn)制的25,因此2和3應(yīng)分別改成“intm=0144;”,
“intn=0x25;”或“intn=0x25;
44.(1)應(yīng)改為“ein.getline(str,120,?);
(2)應(yīng)改為"while(str[i])"°
,,
(3)應(yīng)改為“if(str[i]>=a&&str[i]<=2)0
【解析】本題中要求以輸入字符“?”為結(jié)束符,用于字符輸入的流成員
函數(shù)getline函數(shù)讀入一行字符,格式為"cin.
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 住宅購買貸款合同范本(2024年版)
- 二零二四年度煙草行業(yè)安裝工程分包合同
- 2025年度新型綠色建筑材料采購合同標(biāo)準(zhǔn)范本
- 2025年度大型戶外廣告布展工程合同范本
- 2025年度航拍項目管理與咨詢合同
- 2025年度股權(quán)并購項目審計報告合同
- 2025年度國有房產(chǎn)出售合同(含綠色交通)
- 2025年度健康醫(yī)療合同責(zé)任擔(dān)保書(醫(yī)療器械)
- 個人出售注塑機(jī)給工廠合同:2024年度樣本3篇
- 2025年度國際貿(mào)易貨物裝卸合同范本
- H3CNE認(rèn)證考試題庫官網(wǎng)2022版
- 感統(tǒng)訓(xùn)練培訓(xùn)手冊(適合3-13歲兒童)
- ??停?024年智能制造校園招聘白皮書
- 住院病人燙傷的應(yīng)急演練
- 新入職消防員考核試卷題庫(240道)
- 海員的營養(yǎng)-1315醫(yī)學(xué)營養(yǎng)霍建穎等講解
- 2023年廣東省招聘事業(yè)單位人員考試真題及答案
- 幼兒平衡車訓(xùn)練課程設(shè)計
- 創(chuàng)業(yè)計劃路演-美甲
- 梁山伯與祝英臺小提琴譜樂譜
- 我國全科醫(yī)生培訓(xùn)模式
評論
0/150
提交評論