版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2023年山東省臨沂市全國計(jì)算機(jī)等級考試C++語言程序設(shè)計(jì)測試卷(含答案)學(xué)校:________班級:________姓名:________考號:________
一、1.選擇題(10題)1.關(guān)于continue語句敘述不正確的是()。
A.continue語句用于循環(huán)體中,結(jié)束循環(huán)
B.continue語句用于循環(huán)體中,它使執(zhí)行流跳出循環(huán)體中尚未執(zhí)行的語句,并進(jìn)行下一循環(huán)判斷
C.continue可以用于if語句中
D.continue語句不能代替break語句
2.數(shù)據(jù)處理的最小單位是()。
A.數(shù)據(jù)B.數(shù)據(jù)元素C.數(shù)據(jù)項(xiàng)D.數(shù)據(jù)結(jié)構(gòu)
3.在長度為n的有序線性表中進(jìn)行二分查找,需要的比較次數(shù)為()。A.log2nB.nlog2nC.n/2D.(n+1)/2
4.面向?qū)ο蟪绦蛟O(shè)計(jì)將數(shù)據(jù)和()放在一起,作為一個相互依存、不可分割的整體來處理。
A.對數(shù)據(jù)的操作B.信息C.數(shù)據(jù)隱藏D.數(shù)據(jù)抽象
5.設(shè)有n元關(guān)系R及m元關(guān)系S,它們分別有p、q個元組,則關(guān)系R與S經(jīng)笛卡爾積記為R×S,該關(guān)系是一個n+m元關(guān)系,那么其元組個數(shù)是()。
A.n*mB.n+mC.p+qD.p*q
6.在C++語言中,main函數(shù)默認(rèn)返回一個()類型的值。
A.intB.floatC.charD.void
7.下選項(xiàng)中不屬于c++的類型的是______。
A.signedShortint
B.unsignedlongint
C.unsignedint
D.longshort
8.類的析構(gòu)函數(shù)是在什么時候調(diào)用的?
A.類創(chuàng)建時B.創(chuàng)建對象時C.刪除對象時D.不自動調(diào)用
9.設(shè)x為int的變量,不能正確表達(dá)數(shù)學(xué)關(guān)系10<x<15的表達(dá)式是______。
A.10<x<15
B.x==1||x==12||x==13||x==14
C.x>10&&x<15
D.!(x<=10)&&!(x>=15)
10.在派生類中,重載一個虛函數(shù)時,要求函數(shù)名、參數(shù)的個數(shù)、參數(shù)的類型、參數(shù)的順序和函數(shù)的返回值()。
A.完全相同B.完全不同C.部分相同D.以上都不對
二、單選題(13題)11.類MyClass的定義如下:
classMvClass
{
public:
MyClass(){value=0;}
SetVariable(inti){value=i;}
private:
intvalue;
};
則對下列語句序列正確的描述是()。
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.在深度為5的滿二叉樹中,葉子節(jié)點(diǎn)的個數(shù)為A.A.32B.31C.16D.15
13.
14.若有定義語句“inti=2,j=3;”,則表達(dá)式i/j的結(jié)果是()。
A.0B.0.7C.0.66667D.0.66666667
15.第21題
以下有關(guān)類與結(jié)構(gòu)體關(guān)系的敘述不正確的是()。A.結(jié)構(gòu)體中只包含數(shù)據(jù);類中封裝了數(shù)據(jù)和操作
B.結(jié)構(gòu)體的成員對外界通常是開放的;類的成員可以被隱蔽
C.用struct不能聲明一個類型名;而class可以聲明一個類名
D.結(jié)構(gòu)體成員默認(rèn)為public;類成員默認(rèn)為private
16.軟件詳細(xì)設(shè)計(jì)產(chǎn)生的如下圖所示。該圖是()。
A.N—S圖B.PAD圖C.程序流程圖D.E—R圖
17.繼承機(jī)制的作用是()。
A.信息隱藏B.數(shù)據(jù)封裝C.定義新類D.數(shù)據(jù)抽象
18.對于長度為n的線性表,在最壞情況下,下列各種排序法所對應(yīng)的比較次數(shù)中正確韻是()。
A.冒泡排序?yàn)閚/2B.冒泡排序?yàn)閚C.快速排序?yàn)閚D.快速排序?yàn)閚(n-1)/2
19.有如下類定義:
classXX{
intXX;
public:
xx():xx(0){tout<<A;}
XX(intn):xx(n){cout<<B;}
};
classY:Y:publicXX{
intYY;
public:
YY():YV(O){cout<<YY;)
YY(intn):xx(n+1),YY(n){cout<<YY;}
YY(intm,intn):XX(m),YY(n){cout<<yy;)
};
下列選項(xiàng)中,輸出結(jié)果為A0的語句是A.YYyl(0,0);B.YY72(1);C.YYy3(0);D.YYy4;
20.若有定義語句“intm[]={5,4,3,2,1),i=4;”則下列對m數(shù)組元素的引用中錯誤的是()。
A.m[--i]B.m[2*2]C.m[m[o]]D.m[m[i]]
21.
22.有定義語句“chars[10];”,若要從終端給S輸入5個字符,錯誤的輸入語句是()。
A.A.gets(&s0);
B.B.scanf("%s",s+1);
C.C.gets(s);
D.D.scanf("%s",s[1]);
23.設(shè)有兩個串p和q,求q在p中首次出現(xiàn)位置的運(yùn)算稱為()。
A.連接B.模式匹配C.求子串D.求串長
三、2.填空題(12題)24.在計(jì)算機(jī)軟件系統(tǒng)的體系結(jié)構(gòu)中,數(shù)據(jù)庫管理系統(tǒng)位于用戶和【】之間。
25.寫出下列程序的運(yùn)行結(jié)果【】。
#include<iostream.h>
voidfunc(doublex,int&part1,double&part2){
part1=int(x)+500:
part2=(x+500-part1)*100;
}
voidmain(){
intn;
doublex,f;
x=1001.0103;
func(x,n,f):
cout<<"Part1="<<n<<",part2="<<f<<end1
}
26.下列程序的輸出結(jié)果為:
Objectid=0
Objectid=1
請將程序補(bǔ)充完整。
#include<iostream>
usingnamespacestd;
classPoint
{
public:
Point(intxx=0,intyy=0){X=xx;Y=yy;countP++;}
~Point(){countP--;}
intGetX(){returnX;}
intGetY(){returnY;}
staticvoidGetC(){cout<<"0bjectid="<<countP<<end1;}
private:
intX,Y;
staticintcountP;
};
______//靜態(tài)數(shù)據(jù)成員的初始化
intmain()
{
Point::GetC();
PointA(4,5);
A.GetC();
return0;
}
27.多態(tài)性分為兩類:編譯時的多態(tài)性和【】。
28.求1~100的和,可寫成for(s=0,i=1;【】;i++)s+=i;的形式。
29.有如下程序:
#include<iostream>
usingnamespacestd;
classCA{
public:
CA(){cout+'A';}
};
classCB:privateCA{
public:
CB(){cout<<'B';}
};
intmain(){
CAa;
CBb;
return0;
}
這個程序的輸出結(jié)果是______。
30.程序文件的編譯錯誤分為語法錯誤和【】兩類。
31.在類的對象被創(chuàng)建時,______函數(shù)會被自動調(diào)用。
32.為解決在多重繼承環(huán)境中因公共基類帶來的______問題,C++語言提供了虛基類機(jī)制。
33.如果使用數(shù)組名稱為函數(shù)參數(shù),形實(shí)結(jié)合時,傳遞的是______。
34.在C++語言的面向?qū)ο蟪绦蛟O(shè)計(jì)框架中,【】是程序的基本組成單元。
35.下列程序?qū)、y和z按從小到大的順序排列,請將下面的函數(shù)模板補(bǔ)充完整。
template<classT>
voidorder()
{
Tal
if(x>y)
{
a=x;x=y(tǒng);y=a;
}
if(y>z)
{
a=y(tǒng);y=Z;z=a;
}
if(x>y)
{
a=X;X=y;y=a;
}
}
四、程序改錯題(10題)36.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時有錯誤,請改正錯誤,使程序正常運(yùn)行,并且要求最后一個catch必須拋出執(zhí)行的任何異常。程序異常,輸出信息為errorOERROR注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//******error******的下面。試題程序:#include<iostream.h)intmain{try{throw("error");}//********error********catch(chars){cout<<s<<endl;}try{throw((int)0);}//********error********catch{cout<<i<<endl;}try{throw(O);throw("error");}//********error********catch{cout<<"ERROR"<<endl;}return0;}37.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時有錯誤,請改正錯誤,使程序正常運(yùn)行,并且要求最后一個catch必須拋出執(zhí)行的任何異常。
程序異常,輸出信息為
error
O
ERROR
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//******error******的下面。
試題程序:
#include<iostream.h)
intmain
{
try
{
throw("error");
}
//********error********
catch(chars)
{
cout<<s<<endl;
}
try
{
throw((int)0);
}
//********error********
catch
{
cout<<i<<endl;
}
try
{
throw(O);
throw("error");
}
//********error********
catch
{
cout<<"ERROR"<<endl;
}
return0;
}
38.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行有問題,請改正main函數(shù)中的錯誤,使程序的輸出結(jié)果為:
number=1
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
{
//********error********
TCobjl;
objl.Print;
TCobj2(3);
//********error********
objl.number=10;
//********error*‰******
TC.SetNumber(100);
objl.Print;
obj2.Print;
}
39.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時有錯誤,請改正程序中的錯誤,使得程序輸出:
9,8,7,6,5
注意:錯誤的語句在/********error********/的下面,修改該語句即可。其他的語句不能修改。
試題程序:
#include(iostream.h>
classTC
{
/********error********/
TC(inti)
{
m_i=i;
}
voidprint
{
cout<<--m_i<<,;
}
public:
intm_i;
};
intmain
{
/********error********/
inti;
TC04(10);
while(i>5)
{
/********errOr********/
i++:
04.print;
}
cout<<endl;
return0;
}
40.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時有錯,請改正其中的錯誤,使程序正常運(yùn)行,輸出的結(jié)果為Constructor,i=0,Destructor注意:錯誤的語句在//******error******的下面,修改該語句即可。試題程序:#include(iostream.h)classTC{inti;public:TC;voiddisplay;~TC;};//******error******TC:TC{cout<<"Constructor"<<",";i=0;)//******error******TC:display{tout<<"i="<<i<<","<<endl;}//******error******TC:TC{COUI<<"Destructor"<<endl:}voidmain{TCa;a.display;}
41.使用VC++6.0打開考生文件夾下的源程序文件1.cpp。本程序要求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可能輸入多行,當(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);
//********error********
while(str)
{
//********error********
if(str[i])=a)
str[i]=str[i]-a+A;
i++;
}
cout<<str<<endl;
return;
}
42.使用VC++6.0打開考生文件夾下的源程序文件1.cpp。本程序要求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可能輸入多行,當(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);//********error********while(str){//********error********if(str[i])=a)str[i]=str[i]-a+A;i++;}cout<<str<<endl;return;}
43.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時有錯,請改正其中的錯誤,使程序正常運(yùn)行,并使程序輸出的結(jié)果為:
sizeof(S1)=5
sizeof(s2)=10
sizeof(s3)=1
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//******error******的下面。
(1)不能刪除assert()語句。
(2)只能修改后面的數(shù)字。
提示:assert函數(shù)如果為假,則會產(chǎn)生一個中斷異常。
試題程序:
#include<iostream.h>
#include<assert.h>
voidmain()
{
char*s1="abc":
//********error********
assert(sizeof(s1)==3):
cout<<"sizeof(s1)=5"<<endl;
chars2[10]="ab":
//********error********
assert(sizeof(s2)==2);
cout<<"sizeof(s2)=10"<<endl;
chars3=23:
//********error********
assert(sizeof(s3)==4);
cout<<"sizeof(s3)=1"<<endl;
return;
}
44.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時有錯誤,請改正程序中的錯誤。本程序要求實(shí)現(xiàn)的功能為從鍵盤輸入一個字符串,并將結(jié)果保存到文件1.txt中。注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//******error******的下面。試題程序:#include<iostream>#include<fstream>//********error********usingstd;voidWriteFile(char*s){ofstreamout1;//********error********out1.open("1.txt",binary|app);for(inti=0;s[i]!=0;i++){//********error********out1.puts(s[i]);}out1.close;}voidClearFile{ofstreamout1;out1.open("1.txt");out1.close;}intmain{chars[1024];ClearFile;cout<<"pleaseinputastrin9:"<<endl;cin.getline(s,1024);WriteFile(s);return0;}
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;
};
//******error******
TC:TC
{
cout<<"Constructor"<<",";
i=0;
)
//******error******
TC:display
{
tout<<"i="<<i<<","<<endl;
}
//******error******
TC:TC
{
COUI<<"Destructor"<<endl:
}
voidmain
{
TCa;
a.display;
}
五、綜合應(yīng)用題(2題)46.使用VC++6.0打開考生文件夾下的源程序文件3.cpp。類People包括姓名和年齡兩個字段。函數(shù)fun獲得年齡比較大的人的姓名,然后輸出這個姓名到屏幕。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。(1)完成類的構(gòu)造函數(shù)功能,請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。(2)完成構(gòu)造函數(shù)對姓名的賦值,請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。(3)定義類的友元函數(shù)fun,請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。(4)補(bǔ)充函數(shù)fun的年齡比較功能,請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。注意:增加或者修改代碼的位置已經(jīng)用符號表示出來,請不要修改其他的程序代碼。試題程序:#include<iostream.h>classPeople{public://********1********{inti;for(i=0;sUserName[i]!=0;i++){m_UserName[i]=sUserName[i];}//********2********m_Old=nOld;}private:charm_UserName[32];intm_Old;//********3********};voidfun(char*s,People&personl,People&person2{//********4********if{for(inti=0;personl.m_UserName[i]!=0;i++){s[i]=personl.m_UserName[i];s[i+1]=0;}}else{for(inti=0;person2.m_UserName[i]!=0;i++){s[i]=person2.m_UserName[i];s[i+1]=0;}}}voidmain{chars[32];Peoplepl("abc",20);Peoplep2("def",30):fun(S,p1,p2);cout<<s<<endl:return;}
47.(1)應(yīng)添加“virtualvoidGetNamt!=0;”。
(2)應(yīng)添加“constchar*GetName2”。
(3)應(yīng)添加“TC2(char*str)”。
(4)應(yīng)添加“m_str[i]=0;”。
【解析】本題第1處要求“在類TC1中定義接口函數(shù)GetName,為純虛函數(shù)”。在C++中,在基類中用virtual聲明成員函數(shù)為虛函數(shù)。純虛函數(shù)是在聲明虛函數(shù)時被“初始化”為0的函數(shù),即“virtualvoidGetName=0;”。第2處要求“函數(shù)GetName2實(shí)現(xiàn)獲得名字的緩存,但只獲得讀允許操作這個緩存”。只能引用數(shù)據(jù)成員,而不能修改,所以使用常成員函數(shù),其一般形式為“const函數(shù)類型函數(shù)名”,即“constchar*GetName2”。第3處要求“實(shí)現(xiàn)TC2的構(gòu)造函數(shù)”。TC2的構(gòu)造函數(shù)與類TC2的名稱應(yīng)該相同,而且第3處的大括弧中是對字符數(shù)組str的操作,所以類TC2的構(gòu)造函數(shù)中的參數(shù)為str,即這里補(bǔ)全為“TC2(char*str)”。第4處要求“完成TC2的構(gòu)造函數(shù),實(shí)現(xiàn)對名字的處理”,補(bǔ)全類TC2的構(gòu)造函數(shù),構(gòu)造函數(shù)中的名字變量str對應(yīng)于類TC中的成員變量m_str,所以這里補(bǔ)全變量賦值操作“m_str[i]=0;”。
六、3.綜合應(yīng)用題(2題)48.使用VC6打開考生文件夾下的工程tsst6_3,此工程包含一個源程序文件test6_3.cpp,其中定義了用于表示考生的類Student,請按要求完成下列操作,將程序補(bǔ)充完整。
(1)定義私有數(shù)據(jù)成員code、english分別用于表示考生的編號、英語成績、它們都是int型的數(shù)據(jù)。請?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z句。
(2)完成成員函數(shù)voidStudent::inputinformation()的定義,該函數(shù)用于用戶輸入一個考生對象的信息,輸入格式如下:
輸入編號:
英語成績;
計(jì)算機(jī)成績:
請?jiān)谧⑨尅?/**2**”之后添加適當(dāng)?shù)恼Z句。
(3)利用己實(shí)現(xiàn)的類Student的成員函數(shù),完成函數(shù)voidfirstname(Student*A[],intnum)的定義,該函數(shù)根據(jù)考生信息A[],輸出num個考生中總分最高者的編號及其相應(yīng)的總分,在此不考慮總分相同的情況。請?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z句。
注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。
源程序文件test6_3.cpp清單如下:
#include<iostream.h>
classStudent
{
//**1**
intcomputer;
inttotal;
public:
voidgetinformation();
voidcomputesum();
intgetcode();
intgettotalscore();
~Student();
};
voidStudent::getinformation()
{
//**2**
cout<<"英語成績:";
cin>>english;
cout<<"計(jì)算機(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=1;i<num;i++)
{
if(((*A[i]).gettotalscore())>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);
}
49.使用VC6打開考生文件夾下的工程MyProj12。此工程包含一個源程序文件MyMain12.cpp。程序中定義了兩個類Base和Derived,但類的定義并不完整。
請按要求完成下列操作,將類的定義補(bǔ)充完成:
①類Derived是基類Base公有派生來的。請?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z句。
②完成構(gòu)造函數(shù)Derived(intx)定義,采用初始化列表的方式使基類Base私有成員a初始化為x,類Derived的私有成員b初始化為x+1。請?jiān)谧⑨尅?/**2**”之后添加適當(dāng)?shù)恼Z句。
③完成類Derived的成員函數(shù)show()的類體外的定義。函數(shù)show()中要輸出基類數(shù)據(jù)成員a的值,然后要輸出私有成員b的值。請?jiān)谧⑨尅?/**3**之后添加適當(dāng)?shù)恼Z句。
注意;除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。
源程序文件MyMain12.cpp清單如下:
//MyMain12.cpp
#include<iostream>
usingnamespacestd;
classBase
{
public:
inta;
Base(inti)
{
a=i;
}
};
//***1***
{
private:
intb;
public:
//***2***
voidshow();
};
voidDerived::show()
{
//***3***
}
intmain()
{
Derivedd(1);
d.show();
return0;
}
參考答案
1.A解析:continue是跳出了本次循環(huán)中尚未執(zhí)行的語句,重新執(zhí)行循環(huán),但沒有終止循環(huán)。注意:注意break,continue和goto語句的用法和區(qū)別。
2.C解析:數(shù)據(jù)處理的最小單位是數(shù)據(jù)項(xiàng);由若干數(shù)據(jù)項(xiàng)組成數(shù)據(jù)元素;而數(shù)據(jù)是指能夠被計(jì)算機(jī)識別、存儲和加工處理的信息載體;數(shù)據(jù)結(jié)構(gòu)是指數(shù)據(jù)之間的相互關(guān)系和數(shù)據(jù)運(yùn)算。故正確答案為選項(xiàng)C)。
3.A解析:在長度為n的有序線性表中進(jìn)行二分查找,在最壞情況下,需要的比較次數(shù)為log2n。
4.A解析:面向?qū)ο笳Z言包含3個要素,即對象、類和繼承。這3個要素反映了面向?qū)ο蟮膫鹘y(tǒng)觀念。面向?qū)ο蟪绦蛟O(shè)計(jì)的本質(zhì)是把數(shù)據(jù)和對數(shù)據(jù)的操作當(dāng)成一個整體即對象。
5.D解析:本題考核對笛卡兒積運(yùn)算的掌握。笛卡兒積是兩個關(guān)系的合并操作,p元組關(guān)系R與q元組關(guān)系S經(jīng)笛卡兒積后所得新關(guān)系的元組個數(shù)為p*q。
6.A
7.D
8.C解析:析構(gòu)函數(shù)可以被函數(shù)調(diào)用,也可以系統(tǒng)調(diào)用:函數(shù)體內(nèi)的對象在函數(shù)結(jié)束時調(diào)用析構(gòu)函數(shù)和使用delete釋放對象所占有用的資源。
9.A
10.A解析:在派生類中,重載一個虛函數(shù)時,要求函數(shù)名、參數(shù)的個數(shù)、參數(shù)的類型、參數(shù)的順序和函數(shù)的返回值相同。
11.D\nD?!窘馕觥窟x項(xiàng)A,語句P=&rny;是把對象my的地址值賦值給指針變量P;選項(xiàng)B,語句MyClass*P,my;中由于P只是一個指向?qū)ο蟮闹羔槪虼硕x指針P不調(diào)用構(gòu)造函數(shù),所以此語句只調(diào)用一次構(gòu)造函數(shù):對成員函數(shù)的引用可以通過兩種形式:指針一>成員函數(shù)(形參表),或者對象名.成語函數(shù)名(形參表),故選項(xiàng)C錯誤,選項(xiàng)D正確。
\n
12.C解析:滿二叉樹是指除最后一層外,每一層上的所有節(jié)點(diǎn)都有兩個葉子節(jié)點(diǎn)。在滿二叉樹中,層上的節(jié)點(diǎn)數(shù)都達(dá)到最大值,即在滿二叉樹的第A層上有2k-1個節(jié)點(diǎn),且深度為m的滿二叉樹有2m-1個節(jié)點(diǎn)。
13.C
14.AA?!窘馕觥空麛?shù)相除為整數(shù),所以結(jié)果為0。
15.C類和結(jié)構(gòu)體有著密切的血緣關(guān)系。類可以看做是將動作和數(shù)據(jù)都封裝的結(jié)構(gòu)體,當(dāng)然結(jié)構(gòu)體本身是沒有動作的。另外,結(jié)構(gòu)體中的成員對外界訪問是沒有限制的,而類的成員卻是有不同的訪問級別限制。
16.CC?!窘馕觥縉—S圖是由若干基本框圖構(gòu)成的流程圖,其特點(diǎn)是沒有流程線;PAD圖即問題分析圖(ProblemAnalysisDiagram),它是一種由左往右展開的二維樹型結(jié)構(gòu);程序流程圖用于描述問題解決的過程和步驟,其中方框表示處理步驟、菱形框表示邏輯判斷、箭頭表示控制流向;E—R圖即實(shí)體一聯(lián)系圖(EntityRelationshipDiagram),用來描述現(xiàn)實(shí)世界的概念模型,構(gòu)成元素有實(shí)體、屬性和聯(lián)系,分別用矩形、橢圓形和菱形表示。本題答案為C。
17.C
18.D
19.D解析:建立派生類對象時,構(gòu)值函數(shù)的執(zhí)行順序?yàn)椋簣?zhí)行基類的構(gòu)造函數(shù)一執(zhí)行成員對象的構(gòu)造函數(shù)一執(zhí)行派生類的構(gòu)造函數(shù)。D)選項(xiàng)定義對象y4時沒有傳人任何值,則先調(diào)用基類的構(gòu)造函數(shù).XX(),輸出‘A。,然后調(diào)用派生類的構(gòu)造函數(shù)YY(),輸出yy=0,最終輸出為A0。故本題答案為D)。
20.CC?!窘馕觥繑?shù)組的下標(biāo)是從零開始的。一維數(shù)組的一般定義方式為數(shù)型說明符數(shù)組名[常置表達(dá)式],其中“[]”中的內(nèi)容可以是整型數(shù)量,也可以是整型表達(dá)式。選項(xiàng)C中,m[0]=5,m[m[o]]=m[5],數(shù)組下標(biāo)越界。
21.D
22.DD?!窘馕觥窟x項(xiàng)A調(diào)用函數(shù)gets使得s數(shù)組從s[0]開始得到輸入的字符;選項(xiàng)B使得數(shù)組從元素s[1]開始得到輸入的5個字符;選項(xiàng)C使得數(shù)組從s[0]開始得到輸入的字符;而選項(xiàng)D的scan[(”%S”,S[1])調(diào)用錯誤,應(yīng)為scanf(”%s”,&s[1])輸入項(xiàng)部分應(yīng)該是一個地址值。
23.B解析:字串的定位操作通常稱為串的模式匹配,是各種串處理系統(tǒng)中最重要的操作之一。
24.操作系統(tǒng)或OS操作系統(tǒng)或OS
25.part1=1501part2=1.03
26.intPoint::countP=0;
27.運(yùn)行時的多態(tài)性運(yùn)行時的多態(tài)性
28.i<=100i<=100解析:本題循環(huán)執(zhí)行100次,每次循環(huán)執(zhí)行s=s+i,因?yàn)槭乔?~100的和,所以需要循環(huán)變量滿足的條件是i<=100。
29.AABAAB解析:此題考查的是派生類的構(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,輸出'A';然后定義CB類的對象b,因?yàn)镃B類派生自CA類,所以會先執(zhí)行CA類的構(gòu)造函數(shù),再執(zhí)行CB類的構(gòu)造函數(shù),即輸出'A'和'B'。
30.連接錯誤連接錯誤
31.構(gòu)造構(gòu)造解析:此題考查的是構(gòu)造函數(shù)的應(yīng)用。構(gòu)造函數(shù)的作用是在對象被創(chuàng)建時利用特定的值構(gòu)造對象,構(gòu)造函數(shù)在對象被創(chuàng)建時由系統(tǒng)自動調(diào)用。
32.二義性二義性
33.地址地址解析:此題考查的是函數(shù)參數(shù)的傳遞方式。函數(shù)參數(shù)的傳遞方式分為傳值和傳地址兩種。使用數(shù)組名作為函數(shù)參數(shù),因?yàn)閿?shù)組名代表的是數(shù)組的首地址,所以傳遞的是地址。
34.類類解析:C++語言面向?qū)ο蟪绦蛟O(shè)計(jì)的基本組成單元是class,面向過程的程序設(shè)計(jì)的基本組成單元是函數(shù)。
35.T&xT&yT&z。T&x,T&y,T&z。解析:本題要填入的是函數(shù)的形參表,此函數(shù)的功能是:x、y和z按從小到大的順序排列,那么就涉及到改變傳入的實(shí)參值的情況,因此要采用引用傳遞的方式。所以本惠空白處應(yīng)填入,T&x,T&y,T&z。36.(1)應(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(…)”。37.(1)應(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(…)”。
38.(1)應(yīng)改為“TCobjl(1);”。
\n(2)應(yīng)改為“0bj1.SetNumber(10);”。
\n(3)應(yīng)改為“0bj2.SelNumber(100);”。
\n【解析】本題第1處的“TCobjl;”語句是聲明TC類的對象0bj1,根據(jù)TC類構(gòu)造函數(shù)的定義TC(inti),存在整型參數(shù),并且題目要求第一個輸出結(jié)果兩1,所以補(bǔ)全參數(shù)1,即第1處的“TCobjl(1);”。第2處處的“objl.number=10;”應(yīng)該是調(diào)用成員函數(shù)SetNumber賦值。在C++中成員函數(shù)的使用形式應(yīng)該是:對象名.成員函數(shù),所以修改為“obj1.SetNumber(10);”。類是對象的抽象,而對象是類的具體實(shí)例。第3處“TC.SetNumber(100);”語句中的TC為類,并不是對象,這里應(yīng)該使用定義的對象,即obj2,所以將語句修改為“obj2.SetNumber(100);”。
39.(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)不會退出。40.(1)應(yīng)改為“TC::TC”。(2)應(yīng)改為“voidTC::display”。(3)應(yīng)改為“TC::~TC”?!窘馕觥吭陬惖耐獠慷x成員函數(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”。
41.(1)應(yīng)改為“ein.getline(str,120,?);”。
\n(2)應(yīng)改為“while(str[i])”。
\n(3)應(yīng)改為“if(str[i]>=a&&str[i]<=2)”。
\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)”。
42.(1)應(yīng)改為“ein.getline(str,120,?);”。
(2)應(yīng)改為“while(str[i])”。
(3)應(yīng)改為“if(str[i]>=a&&str[i]<=2)”。
【解析】本題中要求以輸入字符“?”為結(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)”。
43.(1)應(yīng)改為“assert(sizeof(s1)==4);”。
\n(2)應(yīng)改為“assert(sizeof(s2)==1O);”。
\n(3)應(yīng)改為“assert(sizeof(s3)==1);”。
\n【解析】assert函數(shù)如果為假,則會產(chǎn)生一個中斷異常。所以要讓它正常執(zhí)行輸出結(jié)果,那么assert函數(shù)只有為真,才不會產(chǎn)生中斷異常?!癮ssert(sizeof(s1)==3);”語句中“sizeof(s1)==3”為假,這會使程序產(chǎn)生異常,不能正常執(zhí)行。因?yàn)閟tr1的值為abc,但是它還有一個尾符,它的長度應(yīng)該是4,而不是3,所以在第1處修改為“assert(sizeof(s1)==4);”。str2[10]說明,str2的空間為10,在第2處修改為“assert(sizeof(s2)==10);”。charstr3=23;語句說明23是字符,所占存儲空間為1,所以修改為“assert(sizeof(s3)==1);”。
44.(1)應(yīng)改為“usingnamespacestd;”。(2)應(yīng)改為“outl.open("1.txt",ios::binary|ios::app);”。(3)應(yīng)改為“out1.put(s[i]);”?!窘馕觥勘绢}第1處的“usingstd;”是在程序中引入標(biāo)準(zhǔn)命名空間std,對于C++中引入標(biāo)準(zhǔn)命名空間的格式,缺少namespace,所以第1處的語句修改為“usingnamespacestd;”。第2處,調(diào)用成員函數(shù)open中,輸入、輸出方式是在ios類中定義的,所以“out1.open("1.txt",binary|app);”語句缺少類ios,即第2處的語句修改為“out1.open("1.txt",ios::binary|ios::app);”。第3個標(biāo)識應(yīng)該用流成員函數(shù)put輸出字符,所以第3處的語句修改為“out1.put(s[i]);”。
45.(1)應(yīng)改為“TC::TC”。
\n(2)應(yīng)改為“voidTC::display”。
\n(3)應(yīng)改為“TC::~TC”。
\n【解析】在類的外部定義成員函數(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”。
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《數(shù)列基礎(chǔ)概念》課件
- 脂質(zhì)代謝紊亂的臨床護(hù)理
- 家族性良性天皰瘡的臨床護(hù)理
- IgA天皰瘡的臨床護(hù)理
- 鼻腔及鼻竇骨瘤的健康宣教
- 化學(xué)電源 課件zhp
- 孕婦小腿浮腫的健康宣教
- 稻農(nóng)皮炎的臨床護(hù)理
- 心源性休克的護(hù)理
- 《機(jī)械制造基礎(chǔ)》課件-05篇 第四單元 電火花加工
- 2022年政府采購評審專家考試題庫
- 國開電大人體解剖生理學(xué)(本)形考任務(wù)1-4參考答案
- 珍愛生命健康成長熱愛生命健康主題班會PPT課件講義
- DB11-T 825-2021綠色建筑評價標(biāo)準(zhǔn)
- 2022年冷水機(jī)組設(shè)備采購招標(biāo)文件
- 重慶特鋼市場調(diào)研
- 銀行服務(wù)禮儀標(biāo)準(zhǔn)(PPT94頁)課件
- 云校招企業(yè)平臺管理員賬號授權(quán)函
- 高壓電工作業(yè)培訓(xùn)通用PPT課件
- 五年級數(shù)學(xué)上冊期末試卷(北師大版)(共7 份)
- 高電壓技術(shù)ppt
評論
0/150
提交評論