




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2021年甘肅省嘉峪關(guān)市全國計(jì)算機(jī)等級(jí)考試C++語言程序設(shè)計(jì)預(yù)測試題(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________
一、1.選擇題(10題)1.在長度為n的有序線性表中進(jìn)行二分查找,需要的比較次數(shù)為()。A.log2nB.nlog2nC.n/2D.(n+1)/2
2.設(shè)intx[]={2,4,6,8},y,*p=&x[1];則執(zhí)行語句y=(*--p)++;后數(shù)組元素x[0]的值為______。
A.2B.3C.4D.5
3.下列運(yùn)算符中哪些是不能夠被重載的?
A..,.*,->*,::,?:
B.++,--,new,delete,==
C.sizeof,new,delete,++,--
D.sizeof,new,delete,+,-
4.下面關(guān)于構(gòu)造函數(shù)和析構(gòu)函數(shù)的描述中,錯(cuò)誤的是()
A.析構(gòu)函數(shù)可以聲明為虛函數(shù)
B.對(duì)虛析構(gòu)函數(shù)的調(diào)用可以采用動(dòng)態(tài)聯(lián)編
C.一個(gè)類的虛函數(shù)僅對(duì)派生類中重定義的函數(shù)起作用,對(duì)其他函數(shù)沒有影響
D.構(gòu)造函數(shù)可以聲明為虛函數(shù)
5.下列程序的輸出結(jié)果是()。#include<iostream>usingnamespacestd;classTestClass{staticinti;public:TestClass(){i++;}~TestClass(){i--;}staticintgetVal(){retumi;}};intTestClass∷i=0;voi
A.111B.121C.211D.221
6.以下程序的執(zhí)行結(jié)果是()。#nclude<iostream.h>template<classT>Tmax(Tx,Ty){retum(x>y?x:y);}voidmain(){cout<<max(2,5)<<","<<max(3.5,2.8)<<end1;}
A.5,5.0B.3.8C.5,3.5D.3.5,5
7.有如下函數(shù)模板聲明:template<typenameT>TMax(Ta,Tb){return(a>=b)?a:b;}下列對(duì)函數(shù)模板Max()的調(diào)用中錯(cuò)誤的是()。
A.Max(3.5,4.5)
B.Max(3.5,4)
C.Max<double>(3.5,4.5)
D.Max<double>(3.5,4)
8.下列運(yùn)算符中全都可以被友元函數(shù)重載的是
A.=,+,-,\B.[],+,(),newC.->,+,*,>>D.<<,>>,+,*
9.在表達(dá)式x+y*z中,+是作為成員函數(shù)重載的運(yùn)算符,*是作為非成員函數(shù)重載的運(yùn)算符。下列敘述中正確的是______。
A.operator+有兩個(gè)參數(shù),operator*有兩個(gè)參數(shù)
B.opezator+有兩個(gè)參數(shù),operator*有一個(gè)參數(shù)
C.operator+有一個(gè)參數(shù),operator*有兩個(gè)參數(shù)
D.operator+有一個(gè)參數(shù),operator*有一個(gè)參數(shù)
10.軟件設(shè)計(jì)中,有利于提高模塊獨(dú)立性的一個(gè)準(zhǔn)則是______。A.A.低內(nèi)聚低耦合B.低內(nèi)聚高耦合C.高內(nèi)聚低耦合D.高內(nèi)聚高耦合
二、單選題(13題)11.下列能對(duì)對(duì)象進(jìn)行初始化的是()。A.構(gòu)造函數(shù)B.析構(gòu)函數(shù)C.友元函數(shù)D.靜態(tài)成員函數(shù)
12.下列對(duì)字符數(shù)組進(jìn)行初始化中,()是正確的。A.chars1[]="abcd";
B.chars2[3]="xyz";
C.chars3[][]={"a","x","y");
D.chars4[2][3]={"xyz","rnnp"};
13.下列關(guān)于對(duì)象初始化的敘述中,正確的是A.定義對(duì)象的時(shí)候不能對(duì)對(duì)象進(jìn)行初始化
B.定義對(duì)象之后可以顯式地調(diào)用構(gòu)造函數(shù)進(jìn)行初始化
C.定義對(duì)象時(shí)將自動(dòng)調(diào)用構(gòu)造函數(shù)進(jìn)行初始化
D.在一個(gè)類中必須顯式地定義構(gòu)造函數(shù)實(shí)現(xiàn)初始化
14.設(shè)有數(shù)組定義:chararray[]:”China”;則數(shù)組array所占的空間為()。
A.4個(gè)字節(jié)B.5個(gè)字節(jié)C.6個(gè)字節(jié)D.7個(gè)字節(jié)
15.若執(zhí)行下面的程序時(shí),從鍵盤上輸入3和4,則輸出結(jié)果是main(){inta,b,s;cin>>a>>b;s=a;if(a<B)s=b:s=s*s;cout<<s<<end1;}
A.14B.16C.18D.20
16.假定MyClass為一個(gè)類,那么下列的函數(shù)說明中,()為該類的析構(gòu)函數(shù)。
A.void~MyClass();
B.~MyClass(intn);
C.MyClass();
D.~MyClass();
17.對(duì)于模板定義關(guān)鍵字class和typename說法不正確的是()。
A.程序中的class并不能都替換為typename
B.class和typename都可互相替換
C.程序中的typename都能替換為class
D.程序中的部分class可以替換為typename
18.下列敘述中錯(cuò)誤的是()。
A.在程序中凡是以“#”開始的語句行都是預(yù)處理命令行
B.預(yù)處理命令行的最后不能以分號(hào)表示結(jié)束
C.#defineMAX是合法的宏定義命令行
D.C程序中預(yù)處理命令行的處理是在程序執(zhí)行的過程中進(jìn)行的
19.性表的下列運(yùn)算中,不改變數(shù)據(jù)元素之間結(jié)構(gòu)關(guān)系的運(yùn)算是()。
A.插入B.排序C.刪除D.定位
20.在______情況下適宜采用inline定義內(nèi)聯(lián)函數(shù)。
A.函數(shù)體含有循環(huán)語句B.函數(shù)體含有遞歸語句C.函數(shù)代碼少、頻繁調(diào)用D.函數(shù)代碼多、不常調(diào)用
21.以三級(jí)模式為框架形成的三種數(shù)據(jù)庫中,真實(shí)存在于計(jì)算機(jī)外存的數(shù)據(jù)庫是()。
A.概念數(shù)據(jù)庫B.用戶數(shù)據(jù)庫C.物理數(shù)據(jù)庫D.邏輯數(shù)據(jù)庫
22.有下列程序:#include<stdi0.h>voidmain(){intx=8;for(;x>0;x--){if(x%3){printf("%d,",x--),continue;}printf(”%d,”,--x);}}程序的運(yùn)行結(jié)果是()。A.7,4,2B.8,7,5,2C.9,7,6,4D.8,5,4,2
23.若要把函數(shù)voidf()定義為aClass的友元函數(shù),則應(yīng)該在類aClass的定義中加入的語句是()。
A.voidf();
B.staticvoidf();
C.friendf();
D.friendvoidf();
三、2.填空題(12題)24.在結(jié)構(gòu)化分析使用的數(shù)據(jù)流圖(DFD)中,利用______對(duì)其中的圖形元素進(jìn)行確切解釋。
25.數(shù)據(jù)庫管理系統(tǒng)是位于【】之間的軟件系統(tǒng)。
26.函數(shù)模板既可以與______重載,也可以與______重載。
27.C++語言中關(guān)鍵字運(yùn)算符有new,delete和【】。
28.在有n個(gè)結(jié)點(diǎn)的二叉鏈表中,值為非空的鏈域的個(gè)數(shù)為【】。
29.一個(gè)類中有【】個(gè)構(gòu)造函數(shù)。
30.根據(jù)下列程序的執(zhí)行結(jié)果,可以斷定劃線部分的修飾符應(yīng)為______。執(zhí)行結(jié)果:
i9afootballiscreated.
afootballiscreated.
i=10
afootballisdestroyed.
afootballiscreated.
i=20
afootballisdestroyed.
afootballisdestroyed.
源程序:
#include<iostream.h>
classFootball
{
public:
Football(){cout<<"afootballiscreated."<<endl;}
~Football(){tout<<"afootballisdestroyed."<<endl;}
};
voidfunc(inti)
{
______Footballf1;
Footballf2;
cout<<"i="<<i<<endl;
}
voidmain()
{
func(10);
func(20);
}
31.以下程序的執(zhí)行結(jié)果是【】。
#include<iostream.h>
#include<iomanip.h>
voidpnnt(intn)
{
if(n!=0)
{
Print(n-1);
for(inti=1;i<=n;i++)
cout<<setw(3)<<i;
cout<<endl;
}
}
voidmain()
{
print(4);
}
32.表達(dá)式operator+(x,y)還可以表示為______。
33.將x+y*z中的“+”用成員函數(shù)重載,"*"用友元函數(shù)重載應(yīng)寫為_____。
34.數(shù)據(jù)庫管理系統(tǒng)常見的數(shù)據(jù)模型有層次模型、網(wǎng)狀模型和______3種。
35.在MyClass類的定義中,對(duì)賦值運(yùn)算符;進(jìn)行重載。請(qǐng)將橫線處缺失的部分補(bǔ)充完整。
______MyClass::operator=(constMyClass&rhs)
{
if(this==&rhs)return*this;
value=rhs.value;
return*this;
}
四、程序改錯(cuò)題(10題)36.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行有問題,請(qǐng)改正main函數(shù)中的錯(cuò)誤,使程序的輸出結(jié)果為:
number=1
number=10
number=100
注意:不要改動(dòng)main函數(shù),不能增加或刪除行。也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語句在//******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;
}
37.使用VC++6.0打開考生文件夾下的源程序文件
1.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正程序中的錯(cuò)誤。本程序要求實(shí)現(xiàn)的功能為從鍵盤輸入一個(gè)字符串,并將結(jié)果保存到文件1.txt中。
注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語句在
//******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;
}
38.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使程序正常運(yùn)行,并使程序輸出的結(jié)果為:
sizeof(S1)=5
sizeof(s2)=10
sizeof(s3)=1
注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語句在//******error******的下面。
(1)不能刪除assert()語句。
(2)只能修改后面的數(shù)字。
提示:assert函數(shù)如果為假,則會(huì)產(chǎn)生一個(gè)中斷異常。
試題程序:
#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;
}
39.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行有問題,請(qǐng)改正main函數(shù)中的錯(cuò)誤,使程序的輸出結(jié)果為:number=1number=10number=100注意:不要改動(dòng)main函數(shù),不能增加或刪除行。也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語句在//******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;}
40.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正程序中的錯(cuò)誤。本程序要求實(shí)現(xiàn)的功能為從鍵盤輸入一個(gè)字符串,并將結(jié)果保存到文件1.txt中。注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語句在//******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;}
41.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時(shí)有錯(cuò)。請(qǐng)改正程序中的錯(cuò)誤,使程序輸出的結(jié)果為1003732注意:錯(cuò)誤的語句在//******error******的下面,修改該語句即可。試題程序:#include<iostream.h>//******error******voidmain{//******error******intm=0142://******error******intn=0X27:intq=32;cout<<m<<endl;cout<<n<<endl;cout<<q<<endl;return;}
42.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正錯(cuò)誤,使程序正常運(yùn)行,并且要求最后一個(gè)catch必須拋出執(zhí)行的任何異常。程序異常,輸出信息為errorOERROR注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語句在//******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;}
43.使用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=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;}
44.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正程序中的錯(cuò)誤,使得程序輸出:
9,8,7,6,5
注意:錯(cuò)誤的語句在/********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;
}
45.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正錯(cuò)誤,使程序正常運(yùn)行,并且要求最后一個(gè)catch必須拋出執(zhí)行的任何異常。
程序異常,輸出信息為
error
O
ERROR
注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語句在//******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;
}
五、綜合應(yīng)用題(2題)46.使用VC++6.0打開考生文件夾下的源程序文件3.cpp。類People包括姓名和年齡兩個(gè)字段。函數(shù)fun獲得年齡比較大的人的姓名,然后輸出這個(gè)姓名到屏幕。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。(1)完成類的構(gòu)造函數(shù)功能,請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。(2)完成構(gòu)造函數(shù)對(duì)姓名的賦值,請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。(3)定義類的友元函數(shù)fun,請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。(4)補(bǔ)充函數(shù)fun的年齡比較功能,請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。注意:增加或者修改代碼的位置已經(jīng)用符號(hào)表示出來,請(qǐ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.請(qǐng)使用【答題】菜單命令或直接用VC6打開考生文件夾下的工程prog3,其中聲明了ValArray類,該類在內(nèi)部維護(hù)一個(gè)動(dòng)態(tài)分配的整型數(shù)組。ValArray類的復(fù)制構(gòu)造函數(shù)應(yīng)實(shí)現(xiàn)對(duì)象的深層復(fù)制。請(qǐng)編寫ValArray類的復(fù)制構(gòu)造函數(shù)。在main函數(shù)中給出了一組測試數(shù)據(jù),此種情況下程序的輸出應(yīng)該是:ValArrayvl={1,2,3,4,5}ValArrayv2={1,2,3,4,5}要求:補(bǔ)充編制的內(nèi)容寫在“//*********333*********”與“//*********666*********”之間,不得修改程序的其他部分。注意:程序最后將結(jié)果輸出到文件out.dat中。輸出函數(shù)writeToFile已經(jīng)編譯為boj文件,并且在本程序中調(diào)用。//ValArray.h#include<iostream>usingnamespacestd;classValArray{int*v:intsize;public:ValArray(constint*P,intn):size(n){v=newint[size];for(inti=0;i<size;i++)v[i]=P[i];
六、3.綜合應(yīng)用題(2題)48.使用VC6打開考生文件夾下的工程test36_3。此工程包含一個(gè)test36_3.cpp,其中定義了類CRectangle,但該類的定義并不完整。請(qǐng)按要求完成下列操作,將程序補(bǔ)充完整。
(1)定義類CRectangle的數(shù)據(jù)成員width和height,它們都是int型的數(shù)據(jù)。請(qǐng)?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z句。
(2)添加類CRectangle的友元函數(shù)duplicate()的聲明,其返回值類型和參數(shù)類型均為Crectangle的,請(qǐng)?jiān)谧⑨尅?/**2**”之后添加適當(dāng)?shù)恼Z句。
(3)完成類Crectangle的成員函數(shù)set_values的定義,把傳入的參數(shù)a和b分別賦值為數(shù)據(jù)成員width和height,請(qǐng)?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z句。
(4)完成派生類Crectangle的友元函數(shù)duplicate的定義,把函數(shù)中的臨時(shí)對(duì)象rectres的值返回主函數(shù),請(qǐng)?jiān)谧⑨尅?/**4**”之后添加適當(dāng)?shù)恼Z句。
注意:除在指定位置添加語句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。
源程序文件test36_3.cpp清單如下:
#include<iostream.h>
classCRectangle
{
//**1**
public:
voidset_values(int,int);
intarea(void){return(width*height);}
//**2**
};
voidCRectangle::set_values(inta,intb)
{
//**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;
}
49.使用VC6打開考生文件夾下的工程test11_3。此工程包含一個(gè)test11_3.cpp,其中定義了類CPosition,但該類的定義都并不完整。請(qǐng)按要求完成下列操作,將類CPosition的定義補(bǔ)充完整。
(1)在類定義外完成重載的兩個(gè)構(gòu)造函數(shù)CPosition()和CPosition(doubledx,doubledy),其中前者為不帶參數(shù)的構(gòu)造函數(shù),使CPosition對(duì)象的默認(rèn)值為x=0,y=0,后者為帶參數(shù)的構(gòu)造函數(shù),把數(shù)據(jù)成員x和y分別初始化為參數(shù)dx和dy的值。請(qǐng)?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z句。
(2)在類體中添加函數(shù)move(doubleax,doubleay)的定義,使得點(diǎn)的坐標(biāo)x和y分別移動(dòng)ax和ay個(gè)單位,請(qǐng)?jiān)谧⑨尅?/**2**”之后添加適當(dāng)?shù)恼Z句。
(3)完成函數(shù)doubledistance(doublebx,doubleby)的定義,該函數(shù)返回*this和點(diǎn)(bx,by)的距離,請(qǐng)?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z句。
注意:除在指定的位置添加語句外,請(qǐng)不要改動(dòng)程序中的其他語句。
源程序文件test11_3.cpp清單如下:
#include<iostream.h>
#include<math.h>
classCPosition
{
public:
CPosition();
CPosition(doubledx,doubledy);
doublegetx();
doublegety();
//**2**
doubledistance(doublebx,doubleby);
private:
doublex;
doubley;
};
//**1**
{
x=0;y=0;
}
CPosition::CPosition(doubledx,doubledy)
{
x=dx;y=dy;
}
doubleCPosition::getx()
{
returnx;
}
doubleCPosition::gety()
{
returny;
}
doubleCPosition::distance(doublebx,doubleby)
{
//**3**
}
voidmain()
{
doublea,b;
cout<<"Inputx,ypositionofapoint:";
cin>>a>>b;
CPositionpsA(a,b);
cout<<“Inputx,ypositionofanotherpoint:";
cin>>a>>b;
cout<<"Thedistanceis"<<psA.distance(a,b)<<endl;
}
參考答案
1.A解析:在長度為n的有序線性表中進(jìn)行二分查找,在最壞情況下,需要的比較次數(shù)為log2n。
2.B
3.A解析:C++語言中的不能重載的操作符是.,.*,->*,::和?:。
4.D析構(gòu)函數(shù)可以聲明為虛函數(shù),但是構(gòu)造函數(shù)不能聲明為虛函數(shù):類的虛函數(shù)僅對(duì)派生類中重定義的函數(shù)起作用,對(duì)其他函數(shù)沒有影響。
5.D解析:由主函數(shù)mian入手,首先定義TestClass對(duì)象ob1,調(diào)用構(gòu)造函數(shù)后,i等于1。在“intTestClass∷i=0”語句中,i首先被賦值為0,它是靜態(tài)函數(shù)可以被所有對(duì)象引用,并且靜態(tài)成員變量,當(dāng)它值被改變后,則在各對(duì)象中這個(gè)數(shù)據(jù)成員的值都同時(shí)改變。主函數(shù)中首先調(diào)用fun函數(shù),其中又定義了對(duì)象ob2,調(diào)用gtVal;i等于2,輸出。主函數(shù)“obj*ob3=newTestClass;cout<<o(jì)b3->getVal();”動(dòng)態(tài)分配,i等于2,輸出。“deleteob3;”析構(gòu)函數(shù)后,i等于1,
6.C
7.B解析:本題考核函數(shù)模板的使用。引用模板函數(shù)和引用一般的函數(shù)在語法形式上沒有任何區(qū)別。所有的類型替換都是編譯器在幕后悄悄進(jìn)行的。但是要注意的是說明一個(gè)函數(shù)模板后,當(dāng)編譯系統(tǒng)發(fā)現(xiàn)有一個(gè)對(duì)應(yīng)的函數(shù)調(diào)用時(shí),將根據(jù)實(shí)參中的類型來確認(rèn)是否匹配函數(shù)模板中對(duì)應(yīng)的形參。例如,本題中的B)選項(xiàng),編譯系統(tǒng)從第一個(gè)參數(shù)“3.5”獲得的信息是“T對(duì)應(yīng)于double”,而從第二個(gè)參數(shù)“4”處獲得的信息是“T對(duì)應(yīng)于int”,二者相互矛盾,在編譯時(shí)會(huì)產(chǎn)生錯(cuò)誤。對(duì)于D)選項(xiàng)中緊跟在函數(shù)名后的<double>就是模板實(shí)參表,通過它通知編譯系統(tǒng)在調(diào)用過程中,int型的參數(shù)“4”將被自動(dòng)換成double型。
8.D解析:運(yùn)算符重載為成員函數(shù)的形式為:函數(shù)類型operator運(yùn)算符(形參表){函數(shù)體;};運(yùn)算符重載為友元函數(shù)的形式為:friend函數(shù)類型operator運(yùn)算符(形參表){函數(shù)體;)。一般來講,單目運(yùn)算符最好重載為成員函數(shù),雙目運(yùn)算符最好重載為友元函數(shù)。=、[]、()、->以及所有的類型轉(zhuǎn)換運(yùn)算符只能作為成員函數(shù)重載。
9.C解析:operator+作為成員函數(shù)重載,本身便是一個(gè)參數(shù),所以只有一個(gè)參數(shù),而*是作為非成員函數(shù)重載,需要兩個(gè)參數(shù),此題選擇C。
10.C耦合是對(duì)一個(gè)軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程度的度量,耦合度越高,則模塊的獨(dú)立性越差。內(nèi)聚反映一個(gè)模塊內(nèi)各個(gè)元素彼此結(jié)合的緊密程度。高內(nèi)聚是指一個(gè)軟件模塊是由相關(guān)性很強(qiáng)的代碼組成,只負(fù)責(zé)一項(xiàng)任務(wù),也就是常說的單一責(zé)任原則。低耦合是指不同軟件模塊之間通過穩(wěn)定的接口交互,而不需要關(guān)心模塊內(nèi)部的實(shí)現(xiàn)。
11.A類的構(gòu)造函數(shù)的作用就是在類實(shí)例化對(duì)象時(shí),即對(duì)象還沒有生成時(shí)完成一些初始化的工作。此時(shí),析構(gòu)函數(shù)和靜態(tài)成員函數(shù)都還沒有建立,而友元函數(shù)是類外部的函數(shù),根本無法完成類的實(shí)例化工作。
12.A
13.C解析:構(gòu)造函數(shù)的作用是在對(duì)象被創(chuàng)建的時(shí)候?qū)?duì)象進(jìn)行初始化。構(gòu)造函數(shù)在對(duì)象被創(chuàng)建的時(shí)候由系統(tǒng)自動(dòng)調(diào)用。故C項(xiàng)正確。
14.C解析:本題考查在C++語言中,字符串的存放規(guī)則。即字符串存放在字符數(shù)組中,而且在字符的后面自動(dòng)插入標(biāo)識(shí)字符串結(jié)束的標(biāo)識(shí)符’\\0’,因此,共6個(gè)字符,每個(gè)字符占用一個(gè)字節(jié),故正確答案為C。
15.B解析:按照程序的執(zhí)行順序.考生可以很快得出正確答案為B。
16.D解析:本題考核類的析構(gòu)函數(shù)。在C++中,析構(gòu)函數(shù)名為符號(hào)“~”加類名,析構(gòu)函數(shù)沒有參數(shù)和返回值。根據(jù)以上知識(shí)可知,MyClass類的正確析構(gòu)函數(shù)的說明為~MyClass()。
17.BB?!窘馕觥吭贑++程序中的typename是都可以替換為class的,但class不能都替換為typename。
18.DD?!窘馕觥款A(yù)處理命令是以“#”開始的語句,每一條預(yù)處理命令必須單獨(dú)占用一行,由于不是C語言的語句,并且命令行的最后不能以分號(hào)表示結(jié)束,定義格式為“#de-fine標(biāo)識(shí)符字符串”,預(yù)處理命令行是系統(tǒng)對(duì)源程序進(jìn)行編譯之前進(jìn)行處理的,不是在程序執(zhí)行的過程中。
19.D解析:選項(xiàng)A插入和選項(xiàng)C刪除因?yàn)橛袛?shù)據(jù)變更,因此會(huì)改變數(shù)據(jù)元素之間的結(jié)構(gòu)關(guān)系,而排序則因?yàn)轫樞虻母淖儠?huì)改變數(shù)據(jù)元素之間的結(jié)構(gòu)關(guān)系。
20.A
21.CC。【解析】以概念模式為框深所組成的數(shù)據(jù)稱為概念數(shù)據(jù)庫;以外模式為框架所組成的數(shù)據(jù)庫稱為用戶數(shù)據(jù)庫;以內(nèi)模式為框架所組成的數(shù)據(jù)庫稱為物理數(shù)據(jù)庫。這三種數(shù)據(jù)庫只有物理數(shù)據(jù)庫是真實(shí)存在于計(jì)算機(jī)外存中。
22.DD。【解析】x--后綴表示先用x的值再令x減1,--x前綴表示先將x減1,再執(zhí)行程序,則輸出(X--)繼續(xù)下一次循環(huán),輸出“8,”,此時(shí)x自減值變?yōu)?,執(zhí)行x--,x=6,x%3=0,后面語句不執(zhí)行,執(zhí)行語句“printf("%d,",--x);”,輸出“5”,繼續(xù)for循環(huán)中的x--,得到x=5,輸出“5”;判斷x%3為真,輸出“4”,執(zhí)行兩次x--后,x=2,執(zhí)行“{printf("%d",x--);cotinue;}”后,輸出“2”;然后執(zhí)行兩次x--后,x=0,不符合“x>0”,循環(huán)結(jié)束。
23.D
24.數(shù)據(jù)字典數(shù)據(jù)字典解析:DFD圖是數(shù)據(jù)處理過程的工具,是需求理解的邏輯模型的圖形表示,它直接支持系統(tǒng)的功能建模。DFD圖從數(shù)據(jù)傳遞和加工的角度,來刻畫數(shù)據(jù)流從輸入到輸出變換過程。
數(shù)據(jù)詞典是結(jié)構(gòu)化分析方法的核心,數(shù)據(jù)詞典是對(duì)所有與系統(tǒng)相關(guān)的數(shù)據(jù)元素的一個(gè)組織的列表。概括來說,數(shù)據(jù)詞典的作用是對(duì)DFD中出現(xiàn)的被命名的圖形元素的確切解釋。
25.用戶與操作系統(tǒng)用戶與操作系統(tǒng)解析:本題考核數(shù)據(jù)庫管理系統(tǒng)的基本概念。數(shù)據(jù)庫管理系統(tǒng)是一個(gè)幫助用戶創(chuàng)建和管理數(shù)據(jù)庫的應(yīng)用程序的集合。因此,數(shù)據(jù)庫管理系統(tǒng)需要操作系統(tǒng)的支持,為用戶提供服務(wù)。
26.函數(shù)模板非函數(shù)模板函數(shù)模板非函數(shù)模板
27.sizeofsizeof解析:C++語言中關(guān)鍵字運(yùn)算符有3個(gè)分別new,delete和sizeof。new是申請(qǐng)內(nèi)存,delete是釋放內(nèi)存,sizeof是求字節(jié)數(shù)。
28.n-1
29.多多解析:一個(gè)類中可以有多個(gè)構(gòu)造函數(shù),但只能由一個(gè)析構(gòu)函數(shù)。如果沒有特殊定義構(gòu)造函數(shù)或者析構(gòu)函數(shù),系統(tǒng)都會(huì)自動(dòng)建立一個(gè)默認(rèn)的構(gòu)造函數(shù)或者析構(gòu)函數(shù)。
30.staticstatic解析:觀察一下輸出中對(duì)象的構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行次數(shù)可以看出,再次進(jìn)入時(shí)某對(duì)象沒有被構(gòu)造,亦即該對(duì)象在func執(zhí)行后沒有被銷毀,再次進(jìn)入時(shí)則不需要重構(gòu),可以體現(xiàn)這種功能的標(biāo)識(shí)符只有static。
31.1121231234
32.x+yx+y解析:本題考查的是運(yùn)算符函數(shù)的調(diào)用,可以像一般函數(shù)那樣用函數(shù)名進(jìn)行調(diào)用,也可通過運(yùn)算符構(gòu)成表達(dá)式的形式進(jìn)行調(diào)用。
33.x..operator+(operator*(yz))x..operator+(operator*(y,z))解析:C++中用成員函數(shù)重載x*y為:x.operator*(y);用友元函數(shù)重載x*y為:operator*(x,y);用成員函數(shù)重載x+y為:x.operator+(y);用友元函數(shù)重載x+y為:operator+(x,y)。
34.關(guān)系模型關(guān)系模型
35.MyClass&MyClass&解析:此題考查“=”運(yùn)算符的重載。運(yùn)算符“=”的重載需要注意:返回值應(yīng)聲明為引用,函數(shù)體中總是用語句return*this;返回;如果參數(shù)被聲明為指向同類對(duì)象的引用或指針,應(yīng)判別所指向的對(duì)象是否與被賦值對(duì)象為同一對(duì)象,如果是則不做任何處理;如果被賦值對(duì)象占用了動(dòng)態(tài)空間,應(yīng)先釋放這些資源,以便接收新的資源;如果參數(shù)被聲明為指針或引用,通常應(yīng)加上const修飾;一個(gè)類如果需要重載運(yùn)算符=,通常也就需要定義自身特有的復(fù)制構(gòu)造函數(shù),反之亦然。
36.(1)應(yīng)改為“TCobjl(1);”。
\n(2)應(yīng)改為“0bj1.SetNumber(10);”。
\n(3)應(yīng)改為“0bj2.SelNumber(100);”。
\n【解析】本題第1處的“TCobjl;”語句是聲明TC類的對(duì)象0bj1,根據(jù)TC類構(gòu)造函數(shù)的定義TC(inti),存在整型參數(shù),并且題目要求第一個(gè)輸出結(jié)果兩1,所以補(bǔ)全參數(shù)1,即第1處的“TCobjl(1);”。第2處處的“objl.number=10;”應(yīng)該是調(diào)用成員函數(shù)SetNumber賦值。在C++中成員函數(shù)的使用形式應(yīng)該是:對(duì)象名.成員函數(shù),所以修改為“obj1.SetNumber(10);”。類是對(duì)象的抽象,而對(duì)象是類的具體實(shí)例。第3處“TC.SetNumber(100);”語句中的TC為類,并不是對(duì)象,這里應(yīng)該使用定義的對(duì)象,即obj2,所以將語句修改為“obj2.SetNumber(100);”。
37.(1)應(yīng)改為“usingnamespacestd;”。
\n(2)應(yīng)改為“outl.open('1.txt',ios::binary|ios::app);”。
\n(3)應(yīng)改為“out1.put(s[i]);”。
\n【解析】本題第1處的“usingstd;”是在程序中引入標(biāo)準(zhǔn)命名空間std,對(duì)于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個(gè)標(biāo)識(shí)應(yīng)該用流成員函數(shù)put輸出字符,所以第3處的語句修改為“out1.put(s[i]);”。
38.(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ù)如果為假,則會(huì)產(chǎn)生一個(gè)中斷異常。所以要讓它正常執(zhí)行輸出結(jié)果,那么assert函數(shù)只有為真,才不會(huì)產(chǎn)生中斷異常。“assert(sizeof(s1)==3);”語句中“sizeof(s1)==3”為假,這會(huì)使程序產(chǎn)生異常,不能正常執(zhí)行。因?yàn)閟tr1的值為abc,但是它還有一個(gè)尾符,它的長度應(yīng)該是4,而不是3,所以在第1處修改為“assert(sizeof(s1)==4);”。str2[10]說明,str2的空間為10,在第2處修改為“assert(sizeof(s2)==10);”。charstr3=23;語句說明23是字符,所占存儲(chǔ)空間為1,所以修改為“assert(sizeof(s3)==1);”。
39.(1)應(yīng)改為“TCobjl(1);”。(2)應(yīng)改為“0bj1.SetNumber(10);”。(3)應(yīng)改為“0bj2.SelNumber(100);”?!窘馕觥勘绢}第1處的“TCobjl;”語句是聲明TC類的對(duì)象0bj1,根據(jù)TC類構(gòu)造函數(shù)的定義TC(inti),存在整型參數(shù),并且題目要求第一個(gè)輸出結(jié)果兩1,所以補(bǔ)全參數(shù)1,即第1處的“TCobjl(1);”。第2處處的“objl.number=10;”應(yīng)該是調(diào)用成員函數(shù)SetNumber賦值。在C++中成員函數(shù)的使用形式應(yīng)該是:對(duì)象名.成員函數(shù),所以修改為“obj1.SetNumber(10);”。類是對(duì)象的抽象,而對(duì)象是類的具體實(shí)例。第3處“TC.SetNumber(100);”語句中的TC為類,并不是對(duì)象,這里應(yīng)該使用定義的對(duì)象,即obj2,所以將語句修改為“obj2.SetNumber(100);”。
40.(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,對(duì)于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個(gè)標(biāo)識(shí)應(yīng)該用流成員函數(shù)put輸出字符,所以第3處的語句修改為“out1.put(s[i]);”。
41.(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ù)名之后必須是一對(duì)括號(hào),因此第1處應(yīng)改為“voidmain”。cout輸出默認(rèn)是以十進(jìn)制方式輸出的,根據(jù)題目要求輸出的結(jié)果可發(fā)現(xiàn)變量的初值不正確,十進(jìn)制的100對(duì)應(yīng)八進(jìn)制的144,卡進(jìn)制的37對(duì)應(yīng)十六進(jìn)制的25,因此2和3應(yīng)分別改成“intm=0144;”,“intn=0×25;”或“intn=0×25;”。
42.(1)應(yīng)改為“catch(char*s)”。(2)應(yīng)改為“cateh(inti)”。(3)應(yīng)改為“catch(…)”。【解析】本題中第1個(gè)標(biāo)識(shí)前的異常拋出語句為“throw("error");”,其中的類型為字符串。所以對(duì)應(yīng)的異常捕捉語句catch中應(yīng)該符合這個(gè)類型,而程序中給出的語句“catch(chars)”是字符型的,所以第1處的語句修改為“catch(char*S)”。第2個(gè)標(biāo)識(shí)前的異常拋出語句為“throw((int)0);”,其中的類型為int。對(duì)應(yīng)的異常捕捉語句catch中應(yīng)該符合這個(gè)類型,所以補(bǔ)充catch子句中的類型,否則如果找不到匹配的catch塊,系統(tǒng)就會(huì)調(diào)用一個(gè)系統(tǒng)函數(shù),使程序終止運(yùn)行。即第2處的語句修改為“catch(inti)”。如果在catch子句中沒有指定異常信息的類型,那么就用刪節(jié)號(hào)“…”表示它可以捕捉任何類型的異常信息,即修改為“catch(…)”。
43.(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ù)組,字符個(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)”。
44.(1)應(yīng)添加“public:”。
\n(2)“inti”應(yīng)改為“inti(10);”。
\n(3)“i++;”應(yīng)改為“i--;”。
\n【解析】本題主要考查的是成員的訪問屬性。成員的訪問屬性有公有、保護(hù)和私有3種,而默認(rèn)的訪問屬性為私有,只有公
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學(xué)年一年級(jí)下學(xué)期數(shù)學(xué)6.1人民幣的認(rèn)識(shí)(教案)
- 六年級(jí)上冊(cè)數(shù)學(xué)教案 第一單元 分?jǐn)?shù)乘法第4課時(shí) 練習(xí)課 西師大版
- 學(xué)習(xí)2025年雷鋒精神六十二周年主題活動(dòng)實(shí)施方案 (4份)-94
- 《南鄉(xiāng)子 登京口北固亭有懷》歷年中考古詩欣賞試題匯編(截至2022年)
- 2024年鼠抗腫瘤相關(guān)抗原單克隆抗體項(xiàng)目資金籌措計(jì)劃書代可行性研究報(bào)告
- 2024年注射劑類藥品項(xiàng)目資金籌措計(jì)劃書代可行性研究報(bào)告
- 2025年河北省秦皇島市單招職業(yè)傾向性測試題庫新版
- 2025陜西省建筑安全員C證考試題庫
- 2025年嘉興南洋職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫完整
- 2025年黑龍江旅游職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫完整版
- 5草船借箭 課件
- 鋅離子電池原理和應(yīng)用教學(xué)教案
- 2023廣東省深圳市各區(qū)中考數(shù)學(xué)模擬題-壓軸題
- JBT 1472-2023 泵用機(jī)械密封 (正式版)
- 價(jià)格法價(jià)格違法行為和明碼標(biāo)價(jià)法律法規(guī)價(jià)格欺詐知識(shí)
- 2016-2023年山東力明科技職業(yè)學(xué)院高職單招(英語/數(shù)學(xué)/語文)筆試歷年參考題庫含答案解析
- 2022版《義務(wù)教育教學(xué)新課程標(biāo)準(zhǔn)》解讀課件
- 江蘇省2023年普通高校專轉(zhuǎn)本選拔考試計(jì)算機(jī)專業(yè)大類專業(yè)技能試卷及答案解析
- 卡博特藍(lán)星化工(江西)有限公司年產(chǎn)8000噸氣相二氧化硅項(xiàng)目環(huán)境影響報(bào)告
- 2024年度(完整版)《各種各樣的天氣》課件
- 企業(yè)安全培訓(xùn)課件-網(wǎng)絡(luò)與信息安全
評(píng)論
0/150
提交評(píng)論