版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2021年廣東省廣州市全國計(jì)算機(jī)等級考試C++語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、1.選擇題(10題)1.有以下語句,則對a數(shù)組元素的引用不正確的是(0≤i≤9)()。
inta[10]={0,1,2,3,4,5,6,7,8,9},*P=a;
A.a[P-a]B.*(&a[i])C.P[i]D.*(*(a+i))
2.以下程序的輸出結(jié)果是()。#include<iostream>#include<stdlib>usingnamespacestd;voidfunc(char**m){++m;cout<<*m<<endl;}main(){staticchar*a[]={"MORNING","AFTERNOON","EVENING");char**n;n=a;func(n);system("PAUSE");return0;}
A.為空B.MORNINGC.AFTERNOOND.EVENING
3.C++語言中類定義中默認(rèn)的訪問權(quán)限是
A.publicB.protectedC.pfivateD.default
4.有以下程序#include<iostream>inti=0;voidfun(){{staticinti=1;std::cout<<i++<<',';}std::cout<<i<<',';}intmain(){fun();fun();return0;}程序執(zhí)行后的輸出結(jié)果是
A.1,2,1,2,B.1,2,2,3,C.2,0,3,0,D.1,0,2,0,
5.算法是一種()。
A.加工方法B.解題方案的準(zhǔn)確而完整的描述C.排序方法D.查詢方法
6.數(shù)據(jù)庫系統(tǒng)的核心是()。
A.數(shù)據(jù)模型B.數(shù)據(jù)庫管理系統(tǒng)C.數(shù)據(jù)庫D.數(shù)據(jù)庫管理員
7.下列不是循環(huán)語句的是
A.while語句B.do..while語句C.for語句D.if..else語句
8.有如下程序:#include<iostream>#include<iomanip>usingnamespacestd;intmain(){intS[]={123,234};cout<<right<<setfill('*')<<setw(6);for(inti=0;i<2;i++){COUt<<s[i]<<endl;}return0;}程序的輸出結(jié)果是
A.123234B.***123234C.***123***234D.***123234***
9.設(shè)有下列定義語句:inta[3][2]={10,20,30,40,50,60};intb[3][2]={10,20,30,40,50,60};則a[1][1]*b[2][1]的結(jié)果為()。
A.2000B.1200C.2400D.3000
10.以下不正確的定義浯句是
A.doublex[5]={2.0,4.0,6.0,8.0,10.0};
B.inty[5]={0,1,3,5,7,9};
C.charc1[]={‘1’,’2’,’3’,’4’,’5’};
D.charc2[]={‘\x10’,’\xa’,’\x8’};
二、單選題(13題)11.有如下程序:
#include<iostream>
#include<cstring>
usingnamespacestd;
classXCF{
inta;
public:
XCF(intaa=O):a(aA){cout<<”1”;}
XCF(XCF&X){a=x.a;cout<<”2”;}
~XCF(){cout<<at}
intGeta(){returnat}
};
intmain(){
XCFdl(5),d2(d1);
XCF半pd=newXCF(8);
cout<<pd->Geta();
deletepd;
return0;
}
運(yùn)行時(shí)的輸出結(jié)果是A.1215588B.1218855C.12185D.128512
12.對于模板定義關(guān)鍵字class和typename說法不正確的是()。
A.程序中的class并不能都替換為typename
B.class和typename都可互相替換
C.程序中的typename都能替換為class
D.程序中的部分class可以替換為typename
13.若磁盤上已存在某個(gè)文本文件,其全路徑文件名為d:\shiti\tes.txt,下列語句中不能打開該文件的是()。
A.ifstreamfile("d:\shiti\test.txt");
B.ifstreamfile("d:\\shiti\\test.txt");
C.ifstreamfile;file.open("d:\\shiti\\test.txt");
D.ifstream*pFile=newifstream("d:\\shiti\\test.txt");
14.關(guān)于友元,下列說法錯(cuò)誤的是A.如果類A是類B的友元,那么類B也是類A的友元
B.如果函數(shù)fun()被說明為類A的友元,那么在fun()中可以訪問類A的私有成員
C.友元關(guān)系不能被繼承
D.如果類A是類B的友元,那么類A的所有成員函數(shù)都是類B的友元函數(shù)
15.數(shù)據(jù)處理的最小單位是()。
A.數(shù)據(jù)B.數(shù)據(jù)元素C.數(shù)據(jù)項(xiàng)D.數(shù)據(jù)結(jié)構(gòu)
16.有以下結(jié)構(gòu)體說明和變量的定義,且指針p指向變量a,指針q指向變量b。則不能把結(jié)點(diǎn)b連接到結(jié)點(diǎn)a之后的語句是()。structnode{chardata;structnodeifnext;}a,b,*p:&a,*q=&b;A.a.next=q;B.p.next=&b;C.p->next=&b;D.(*p).next=q;
17.源程序的文檔化不包括()。
A.符號名的命名要有實(shí)際意義B.正確的文檔形式C.良好的視覺組織D.正確的程序注釋
18.在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是()。
A.可行性分析報(bào)告B.軟件需求規(guī)格說明書C.概要沒計(jì)說明書D.集成測試計(jì)劃
19.如果表達(dá)式--X+y中,--是作為成員函數(shù)重載的,+是作為成員函數(shù)重載的,則該表達(dá)式還可為
A.y.operator+(x.operator--(0))
B.y,operator+(x.operator--())
C.y.operator+(operator--t(x,0))
D.operator+(x.operator--t())
20.假定其中的x的單位是角度且不考慮π的值的精度,則與數(shù)學(xué)公式等的C++語言表達(dá)式是()。
A.sqrt(cos(x))
B.sqrt(abs(cos(x*3.14/180)))
C.sqrt(abs(cos(x*(/180)))
D.sqrt(fabs(cos(x*3.14/180)))
21.已知有定義:
constintD=5;
inti=1;
doublef=0.32;
charc=15;
則下列選項(xiàng)錯(cuò)誤的是
A.++i;B.D--;C.c++;D.--f;
22.判斷char型變量c是否為小寫字母的正確表達(dá)式是()。
A.a<=c<=zB.(c>=A)&&(c<=z)C.(a>=c)‖(z<=c)D.(c>=a)&&(c<=z)
23.有如下程序:#include<iostream>usingnamespacestd;classXA{inta;public:staticintb;XA(intaa):a(aa){b++;}~XA(){}intget(){returna;}};intXA::b=0intmain(){XAd1(1),d2(3);cout<<d1.get()+d2.get()+XA::b<<endl;return0;}運(yùn)行時(shí)的輸出結(jié)果是()。A.5B.6C.7D.8
三、2.填空題(12題)24.用數(shù)組A[1…n]順序存儲完全二叉樹的各結(jié)點(diǎn),則當(dāng)i>0,且i<=______時(shí),結(jié)點(diǎn)A[i]的右子女是結(jié)點(diǎn)A[2i+1],否則結(jié)點(diǎn)A[i]沒有右子女。
25.數(shù)據(jù)流圖的類型有【】和事務(wù)型。
26.采用順序查找方法查找長度為n的線性表,平均查找長度為【】。
27.設(shè)p是指向一個(gè)類動(dòng)態(tài)對象的指針變量,則執(zhí)行"deletep;"語句時(shí),將自動(dòng)調(diào)用該類中的______函數(shù)。
28.邏輯表達(dá)式x>3&&x<10的相反表達(dá)式為【】。
29.帶參數(shù)的流操縱算子【】與成員函數(shù)unsetf執(zhí)行同樣的功能。
30.表達(dá)式x.operator+(y.operator++(0))還可以寫成______。
31.下列程序的輸出結(jié)果為2,請將程序補(bǔ)充完整。
#inelude<iostream.h>
usingnamespacestd;
classBase
{
public:
______voidfun(){cout<<1;}
};
classDerived:publicBase
{
pbulic:
voidfubn(){cout<<2;}
};
intmain()
{Base*P=newDerived;
P→fun();
deleteP;
return0;
}
32.設(shè)有定義語句:inta=12;,則表達(dá)式a*=2+3的運(yùn)算結(jié)果是【】。
33.關(guān)系操作的特點(diǎn)是【】操作。
34.若要把voidffun()定義為類A的友元函數(shù),則應(yīng)在類A的定義中加入語句______。
35.在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,類描述的是具有相似性質(zhì)的一組【】。
四、程序改錯(cuò)題(10題)36.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時(shí)有錯(cuò),請改正其中的錯(cuò)誤,使程序正常運(yùn)行,輸出的結(jié)果為Constructor,i=0,Destructor注意:錯(cuò)誤的語句在//******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;}
37.使用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ò)誤的語句在//******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ò)。請改正程序中的錯(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;}
39.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,但該程序運(yùn)行有問題,請改正main函數(shù)中的錯(cuò)誤,使該程序的輸出結(jié)果正確。程序輸出:88注意:錯(cuò)誤的語句在/********error********/的下面。修改該語句即可,其他的語句不能修改。試題程序:#include(iostream.h>classCO{public:/********error********/staticintn=0:CO{n++:}~CO{n--:}}:/********error********/intCO::n;voidmain{COobj;COobj2[7];CO*C=NULL:c=&obj:/********error********/eout<<C.n<<endl;cout<<C0::n<<endl;}
40.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行有問題,請改正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;}
41.使用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;}
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ò)誤的語句在
//******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;
}
43.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時(shí)有錯(cuò),請改正其中的錯(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ù)如果為假,則會產(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;
}
44.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行有問題,請改正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;
}
45.使用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;
}
五、綜合應(yīng)用題(2題)46.使用VC++6.0打開考生文件夾下的源程序文件3.cpp。其中定義的類不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。(1)定義類的公有數(shù)據(jù)成員函數(shù)N0、Name[32],其中N0是int型的數(shù)據(jù),Name[32]為字符型。請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。(2)完成函數(shù)Set的定義,分別設(shè)置N0和Name的值,請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。(3)完成函數(shù)print,請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句,輸出結(jié)果如下:N0=12345Name=HelloWorld!(4)添加默認(rèn)構(gòu)造函數(shù),設(shè)置N0為0,Name為空,請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。注意:增加或者修改代碼的位置已經(jīng)用符號表示出來,請不要修改其他的程序代碼。試題程序:#include<iostream.h>classTC{public://********1********//********2********{No=no;for(inti=0;strName[i]!=0;i++){Name[i]=strName[i];Name[i+1]=0;}}voidprint(){//********3********}TC(){//********4********)};intmain(){TCstu:stu.Set(12345,"HelloWorld!");stu.print();return0;}
47.使用VC++6.0打開考生文件夾下的源程序文件3.cpp。其中定義的類不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。每賣出一個(gè)水果,則計(jì)算水果的重量,還要計(jì)算所有賣出水果的總重量以及總個(gè)數(shù),同時(shí)允許退貨,請按照以下的操作,把類補(bǔ)充完整。(1)定義類TCFruit的私有靜態(tài)數(shù)據(jù)成員float型變量AllWeight和int型變量AllN0,請?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自減,請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。(4)完成靜態(tài)成員變量的初始化為0,請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。注意:增加或者修改代碼的位置已經(jīng)用符號表示出來,請不要修改其他的程序代碼。試題程序:#include(iostream.h>classTCFruit{private:floatWeight;//********1********staticintAllNo;public:TCFruit(floatw){//********2********AllWeight+=w:AllNo++:}~TCFruit{//********3********AllWeight-=Weight:}voiddisplay{cout<<"SellaFruitwith"<<Weight<<"k9"<<endl;cout<<”Allsellnumber:"<<AllNo<<endl;cout<<"Allsellweight:"<<AllWeight<<"k9"<<endl<<endl;}};//********4********floatTCFruit::AllWeight=0.0;intmain{TCFruitFruitl(1.2);Fruitl.display;TCFruitFruit2(2.3);Fruit2.display;return0;}
六、3.綜合應(yīng)用題(2題)48.使用VC6打開考生文件夾下的工程test21_3,此工程包含一個(gè)源程序文件test21_3.cpp,其中定義了用于表示長方形的類CRectangle,但類CRectangle的定義并不完整。請按要求完成下列操作,將類CRectangle的定義補(bǔ)充完整。
(1)定義CRectangle的構(gòu)造函數(shù),函數(shù)含參數(shù)dx,dy,da和db,它們都是double型的數(shù)據(jù),請將類數(shù)據(jù)成員x,y,a和b初始化,并輸出“CRectangleConstructed.”(另起一行輸出該文字)。請?jiān)谧⑨尅?/**1**之后添加適當(dāng)?shù)恼Z句。
(2)完成類CRectangle的成員函數(shù)getperimeter()的定義,將以a和b為邊的矩形周長的值返回,請?jiān)谧⑨尅?/**2**”之后添加適當(dāng)?shù)恼Z句。
(3)完成類CRectangle的成員函數(shù)getarea()的定義,將以a和b為邊的矩形面積的值返回,請?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z句。
(4)完成類CRectangle的友元函數(shù)frienddoubledist(CRectangle&rt)的定義,先定義兩個(gè)double型的臨時(shí)變量tx和ty,然后將參數(shù)對象rt的數(shù)據(jù)成員x與a的一半相加,y與b的一半相加,分別賦值給tx和ty,最后求出tx與ty的平方和的值之后將它的平方根返回,將請?jiān)谧⑨尅?/**4**”之后添加適當(dāng)?shù)恼Z句。
輸出結(jié)果如下:
CRectangleConstructed.
Down_Leftcornerpointis:(100,50)
a=1200,b=700
Perimeterofthisrectangleis:3800
Areaofthisrectangleis:840000
TheDistanceis:806.226
CRectangleConstructed.
Down_Leftcornerpointis:(200,150)
a=2000,b=800
Perimeterofthisrectangleis:5600
Areaofthisrectangleis:1.6e+006
TheDistanceis:1320.04
CRectangleDestructed.
CRectangleDestructed.
注意:除在指定位置添加語句之外,請不要改動(dòng)程序中的其他內(nèi)容。
源程序文件test21_3.cpp清單如下:
#include<iostream.h>
#include<math.h>
classCRectangle
{
private:
doublex;
doubley;
doublea;
doubleb;
public:
CRectangle()
{
cout<<"\nCRectangleConstructed."<<endl;
}
CRectangle(doubledx,doubledy,doubleda,doubledb)
{
//**1**
a=da;
b=db;
cout<<"\nCRectangleConstructed."<<endl;
}
~CRectangle()
{
cout<<"CRectangleDestructed."<<endl;
}
voidputxy(doubledx,doubledy){x=dx;y=dy;}
voidputab(doubleda,doubledb)(a=da;b=db;}
doublegetx(){returnx;}
doublegety(){returny;}
doublegeta(){returna;}
doublegetb(){returnb;}
doublegetperimeter()
{
//**2**
}
doublegetarea()
{
//**3**
}
frienddoubledist(CRectangle&rt);
};
doubledist(CRectangle&rt)
{
//**4**
ty=rt.y+rt.b/2.0;
returnsqrt(tx*tx+ty*ty);
}
voidmain()
{
CRectanglerect;
rect.putxy(100.0,50.0);
rect.putab(1200.0,700.0);
cout<<"Down_Leftcornerpointis:("<<rect.getx()<<","<<rect.gety()<<")"<<endl;
cout<<"a="<<rect.geta()<<",b="<<rect.getb()<<endl;
cout<<"Perimeterofthisrectangleis:"<<rect.getperimeter()<<endl;
cout<<"Areaofthisrectangleis:"<<rect.getarea()<<endl;
cout<<"
49.使用VC6打開考生文件夾下的工程test23_3,此工程包含一個(gè)源程序文件test23_3.cpp,其中定義了類X和它的友元類Y,但它們的定義并不完整。請按要求完成下列操作,將程序補(bǔ)充完整。
(1)將類X的靜態(tài)數(shù)據(jù)成員y初始化為1。請?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z句。
(2)完成類Y的構(gòu)造函數(shù)Y(inti,intj)的定義,將參數(shù)i賦值給類Y的數(shù)據(jù)成員,X的對象a中的數(shù)據(jù)成員x,并且把參數(shù)j賦值給類X的數(shù)據(jù)成員y,請?jiān)谧⑨尅?/**2**”之后添加適當(dāng)?shù)恼Z句。
(3)完成類Y的成員函數(shù)voidDisplay()的定義,將Y的數(shù)據(jù)成員,X的對象a中的數(shù)據(jù)成員x和類X的數(shù)據(jù)成員y按照“x=_,y=_”的形式顯示出來(“_”代表一個(gè)數(shù)字),請?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z句。
輸出結(jié)果如下:
x=5,y=l
x=6,y=9
x=5,y=9
注意:除在指定位置添加語句之外,請不要改動(dòng)程序中的其他內(nèi)容。
源程序文件test23_3.cpp清單如下:
include<iostream.h>
classX
{
friendclassY;
public:
voidSet(inti){x=i;}
voidDisplay()
{
cout<<"x="<<x<<",";
cout<<"y="<<y<<endl;
}
private:
intx;
staticinty;
};
classY
{
public:
Y(inti,intj)
voidDisplay();
private:
Xa;
};
//**1**
Y::Y(inti,intj)
{
//**2**
}
voidY::Display()
{
//**3**
}
voidmain()
{
Xb;
b.Set(5);
b.Display();
Yc(6,9);
c.Display();
b.Display();
}
參考答案
1.D解析:本題考查數(shù)組指針的應(yīng)用。選項(xiàng)D)第一層括號中為數(shù)組a中第i項(xiàng)元素的值,外面再加指針運(yùn)算符沒有意義。
2.C
3.C解析:lC++語言中類定義中默認(rèn)的類的訪問權(quán)限是private。注意:C++語言中沒有default權(quán)限。注意:結(jié)構(gòu)體默認(rèn)的訪問權(quán)限是public,注意它們之間的區(qū)別。
4.D解析:本題考核變量的作用域、生存周期和存儲類別(自動(dòng)、靜態(tài)、存儲器、外部)。題中即定義全局變量i,又在函數(shù)fun內(nèi)部定義了局部靜態(tài)變量i,當(dāng)進(jìn)入函數(shù)fun里面的大括號時(shí),局部靜態(tài)變量i有效,所以輸出1,然后局部靜態(tài)變量i加1,出了里面的大括號后,全局變量i有效,所以輸出0。同理,第二次調(diào)用fun后,輸出2和0。
5.B
6.B解析:數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫系統(tǒng)的核心,是負(fù)責(zé)數(shù)據(jù)庫的建立、使用和維護(hù)的軟件。數(shù)據(jù)庫管理系統(tǒng)建立在操作系統(tǒng)之上,實(shí)施對數(shù)據(jù)庫的統(tǒng)一管理和控制。用戶使用的各種數(shù)據(jù)庫命令以及應(yīng)用程序的執(zhí)行,最終都必須通過數(shù)據(jù)庫管理系統(tǒng)。另外,數(shù)據(jù)庫管理系統(tǒng)還承擔(dān)著數(shù)據(jù)庫的安全保護(hù)工作,按照數(shù)據(jù)庫管理員所規(guī)定的要求,保證數(shù)據(jù)庫的完整性和安全性。
7.D解析:本題很簡單,選項(xiàng)D是條件語句,不是循環(huán)語句。
8.B解析:setfill('*')填充設(shè)置僅影響緊跟其后的輸出操作,第二次循環(huán)時(shí)失效
9.C解析:只為a中由第0個(gè)位置開始,所以a[1][1]*b[2][1]為二維數(shù)組中,第二行二列乘以b中第三行二列,即40*60。
10.B解析:在一維數(shù)組中要注意的是作為下標(biāo)表達(dá)式的常量表達(dá)式的值必須是大于等于0,并且小于自身,本題中選項(xiàng)B)的下標(biāo)表達(dá)式的值超過了自身。
11.B解析:在主函數(shù)中XCFd1(5),d2(d1);,d1調(diào)用了第一個(gè)構(gòu)造函數(shù),輸出1;d2調(diào)用了拷貝構(gòu)造函數(shù),輸出2;xcF*pd=IleWXCF’(8);調(diào)用了構(gòu)造函數(shù),輸出l;cout<<pd->Geta();調(diào)用了成員函數(shù)Geta(),輸出8;deletepd;調(diào)用了析構(gòu)函數(shù),輸出8;return0;,在返回O之前程序會自動(dòng)調(diào)用d1和d2的析構(gòu)函數(shù),輸出55。因此總的輸出應(yīng)該是1218855。
12.BB?!窘馕觥吭贑++程序中的typename是都可以替換為class的,但class不能都替換為typename。
13.A
14.A本題考核友元類和友元函數(shù)。友元關(guān)系是單向的,并且只在兩個(gè)類之間有效。即使類X是類Y的友元,類Y是否是類X的友元也要看類X中是否有相應(yīng)的聲明。即友元關(guān)系不具有交換性,所以A選項(xiàng)的說法是錯(cuò)誤的。類的友元函數(shù)可以直接訪問該類的所有成員;類A是類B的友元類,那么類A的所有成員函數(shù)都是類B的友元函數(shù)。
15.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)。
16.B解析:要把結(jié)點(diǎn)b連接到結(jié)點(diǎn)a之后,必須把b的地址給a的next指針,選項(xiàng)A中,指針變量q保存的就是變量b的地址,選項(xiàng)B中的p是指針變量,應(yīng)該是p->next=&b;在選項(xiàng)D中,用*運(yùn)算符取出結(jié)構(gòu)體變量,并且保存的就是b的地址,所以正確。
17.B解析:源程序的文檔化主要包括3點(diǎn):(1)符號名應(yīng)具有一定實(shí)際的含義,便于理解程序功能:(2)正確的程序注釋;(3)良好的視覺組織。利用空格、空行、縮進(jìn)等技巧使程序?qū)哟吻逦?/p>
18.BA錯(cuò)誤,可行性分析階段產(chǎn)生可行性分析報(bào)告。C錯(cuò)誤,概要設(shè)計(jì)說明書是總體設(shè)計(jì)階段產(chǎn)生的文檔。D錯(cuò)誤,集成測試計(jì)劃是在概要設(shè)計(jì)階段編寫的文檔。B正確,軟件需求規(guī)格說明書是后續(xù)工作如設(shè)計(jì)、編碼等需要的重要參考文檔。
19.B解析:C++語言中用成員函數(shù)重載--x為:x.operator--(),用成員函數(shù)重載x+y為:x.operator+(y)。
20.D解析:本題考查數(shù)學(xué)表達(dá)式的掌握,首先應(yīng)轉(zhuǎn)換為弧度,然后作為COS函數(shù)的參數(shù),求絕對值,最后是開方函數(shù)。考生需要掌握的是常用的數(shù)學(xué)函數(shù)。
21.B解析:“++”,“--”運(yùn)算符不能用于常量。
22.DD?!窘馕觥孔址蛿?shù)據(jù)在計(jì)算機(jī)內(nèi)部是以AsCIl碼存儲的,英文大寫字母和小寫字母在ASCIl碼表中都是連續(xù)的。大寫字母A~z是從65~90,小寫字母a~z是從97~122。所以只要變量C大干等于a并且等于小于2,就能保證其為小寫字母。
23.CC。【解析】每調(diào)用一次get函數(shù)時(shí),對新的類A對象進(jìn)行一次實(shí)例化,調(diào)用一次構(gòu)造函數(shù),類A的靜態(tài)成員變量b便加1。
24.(n-1)/2(n-1)/2解析:完全二叉樹中除最下面一層外,各層都被結(jié)點(diǎn)充滿了,每一層結(jié)點(diǎn)個(gè)數(shù)恰是上一層結(jié)點(diǎn)個(gè)數(shù)的2倍。因此,從一個(gè)結(jié)點(diǎn)的編號就可以推知它的雙親及左、右子女結(jié)點(diǎn)的編號。當(dāng)i<=n/2時(shí),結(jié)點(diǎn)i的左子女是結(jié)點(diǎn)2i,否則結(jié)點(diǎn)i沒有左子女;
當(dāng)i<=(n-1)/2時(shí),結(jié)點(diǎn)i的右子女是結(jié)點(diǎn)2i+1,否則結(jié)點(diǎn)i沒有右子女:
當(dāng)i≠1時(shí),結(jié)點(diǎn)i的雙親是結(jié)點(diǎn)[i/2]。
25.變換型變換型解析:典型的數(shù)據(jù)流類型有兩種:變換型和事務(wù)型,,變換型是指信息沿輸入通路進(jìn)入系統(tǒng),同時(shí)由外部形式變換成內(nèi)部形式,進(jìn)入系統(tǒng)的信息通過變換中心,經(jīng)加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng);在很多軟件應(yīng)用中,存在某種作業(yè)數(shù)據(jù)流。它可以引發(fā)一個(gè)或多個(gè)處理,這此處理能夠完成液作業(yè)要求的功能,這種數(shù)據(jù)流就叫做事務(wù)。
26.(n+)/2
27.析構(gòu)析構(gòu)
28.x<=3||x>=10x<=3||x>=10解析:根據(jù)邏輯表達(dá)式的定義得到。
29.resetioflags
30.x+y++或x+(y++)x+y++或x+(y++)
31.virtualvirtual解析:本題考查虛函數(shù)的概念。在C++中,一個(gè)基類的指針可以用于指向它的派生類對象。而且通過這樣的指針調(diào)用虛函數(shù)時(shí),被調(diào)用的是該指針實(shí)際指向的對象類的那個(gè)重定義版本。在本題中,通過對象指針P調(diào)用的是派生類中重定的。fun函數(shù),那么基類中的fun只有是虛函數(shù)才能滿足要求。
32.60
33.集合集合解析:在關(guān)系操作中,所有操作對象與操作結(jié)果都是關(guān)系。而關(guān)系定義為元數(shù)相同的元組的集合。因此,關(guān)系操作的特點(diǎn)是集合操作。
34.friendvoidffun()
35.對象對象解析:將屬性、操作相似的對象歸為類,也就是說,類是具有共同屬性、共同方法的對象的集合。
36.(1)應(yīng)改為“TC::TC”。(2)應(yīng)改為“voidTC::display”。(3)應(yīng)改為“TC::~TC”?!窘馕觥吭陬惖耐獠慷x成員函數(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.(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個(gè)標(biāo)識應(yīng)該用流成員函數(shù)put輸出字符,所以第3處的語句修改為“out1.put(s[i]);”。
38.(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=0×25;”或“intn=0×25;”。
39.(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;”。
40.(1)應(yīng)改為“TCobjl(1);”。(2)應(yīng)改為“0bj1.SetNumber(10);”。(3)應(yīng)改為“0bj2.SelNumber(100);”?!窘馕觥勘绢}第1處的“TCobjl;”語句是聲明TC類的對象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)該是:對象名.成員函數(shù),所以修改為“obj1.SetNumber(10);”。類是對象的抽象,而對象是類的具體實(shí)例。第3處“TC.SetNumber(100);”語句中的TC為類,并不是對象,這里應(yīng)該使用定義的對象,即obj2,所以將語句修改為“obj2.SetNumber(100);”。
41.(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)”。
42.(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,對于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)識應(yīng)該用流成員函數(shù)put輸出字符,所以第3處的語句修改為“out1.put(s[i]);”。
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)生一個(gè)中斷異常。所以要讓它正常執(zhí)行輸出結(jié)果,那么assert函數(shù)只有為真,才不會產(chǎn)生中斷異常?!癮ssert(sizeof(s1)==3);”語句中“sizeof(s1)==3”為假,這會使程序產(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是字符,所占存儲空間為1,所以修改為“assert(sizeof(s3)==1);”。
44.(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ù),并且題目要求第一個(gè)輸出結(jié)果兩1,所以補(bǔ)全參數(shù)1,即第1處的“TCobjl(1);”。第2處處的“objl.numb
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025合法的合法借款合同
- 2025機(jī)械產(chǎn)品加工合同
- 小學(xué)數(shù)學(xué)教育與領(lǐng)導(dǎo)力思維的培育
- 科技創(chuàng)新助力現(xiàn)代農(nóng)場的成功轉(zhuǎn)型
- 2024年汽車香片項(xiàng)目投資申請報(bào)告
- 2024年甲肝滅活疫苗項(xiàng)目投資申請報(bào)告
- 2025年機(jī)械設(shè)備租賃合同在哪里簽訂
- 林場林地租賃合同范本
- 2024年華師大新版九年級歷史下冊階段測試試卷
- 2025年上教版九年級生物下冊階段測試試卷
- 第1課 隋朝統(tǒng)一與滅亡 課件(26張)2024-2025學(xué)年部編版七年級歷史下冊
- 2025-2030年中國糖醇市場運(yùn)行狀況及投資前景趨勢分析報(bào)告
- 冬日暖陽健康守護(hù)
- 水處理藥劑采購項(xiàng)目技術(shù)方案(技術(shù)方案)
- 2024級高一上期期中測試數(shù)學(xué)試題含答案
- 盾構(gòu)標(biāo)準(zhǔn)化施工手冊
- 天然氣脫硫完整版本
- 山東省2024-2025學(xué)年高三上學(xué)期新高考聯(lián)合質(zhì)量測評10月聯(lián)考英語試題
- 不間斷電源UPS知識培訓(xùn)
- 三年級除法豎式300道題及答案
- 人教版八級物理下冊知識點(diǎn)結(jié)
評論
0/150
提交評論