版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2022年廣東省清遠(yuǎn)市全國計算機(jī)等級考試C++語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、1.選擇題(10題)1.下列引用的定義中,()是錯誤的。
A.inti;int&j=i;
B.inti;int&j;j=i;
C.floati;float&j=i;
D.chard;char&k=d;
2.下列各C++程序段中,不包含復(fù)合語句的選項為()。
A.{x=y+z;}
B.for(i=1;k<0;i++)if(i%3==1)cout<<i<<endl;
C.while(i<10){cout<<i<<endl;i++;}
D.if(i<10){i=i+1;}
3.在inta=3,int*p=&a;中,P的值是
A.變量a的地址值B.無意義C.變量P的地址值D.3
4.以下程序的輸出結(jié)果是()。#include<iostream.h>Voidmain(){inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<i;j++)s+=a[i][j];cout<<s<<end1;}
A.14B.19C.20D.21
5.下列語句段將輸出字符'*'的個數(shù)為inti=100;while(1){i--;if(i==0)break;cout,,'*';}
A.98個B.99個C.100個D.101個
6.在C++中,打開一個文件,就是將這個文件與一個()建立關(guān)聯(lián);關(guān)閉一個文件,就是取消這種關(guān)聯(lián)。
A.類B.流C.對象D.結(jié)構(gòu)
7.如果友元函數(shù)重載一個運算符時,其參數(shù)表中沒有任何參數(shù)則說明該運算符是
A.一元運算符B.二元運算符C.選項A)和選項B)都可能D.重載錯誤
8.()使一個函數(shù)可以定義成對許多不同數(shù)據(jù)類型完成同一個任務(wù)。
A.函數(shù)模板B.重載函數(shù)C.遞歸函數(shù)D.模板函數(shù)
9.若調(diào)用一個函數(shù),且此函數(shù)中沒有return語句,則正確的說法是該函數(shù)()。
A.沒有返回值B.返回若干個系統(tǒng)默認(rèn)值C.有返回值,但返回一個不確定的值D.返回一個用戶所希望的函數(shù)值
10.下列關(guān)于C++流的說明中,正確的是
A.與鍵盤、屏幕、打印機(jī)和通信端口的交互都可以通過流類來實現(xiàn)
B.從流中獲取數(shù)據(jù)的操作稱為插入操作,向流中添加數(shù)據(jù)的操作稱為提取操作
C.cin是一個預(yù)定義的輸入流類
D.輸出流有一個名為open的成員函數(shù),其作用是生成一個新的流對象
二、單選題(13題)11.靜態(tài)數(shù)據(jù)成員在()進(jìn)行初始化。
A.成員函數(shù)列表B.類體外C.構(gòu)造函數(shù)D.成員函數(shù)
12.有兩個關(guān)系R,S如下:由關(guān)系R通過運算得到關(guān)系S,則所使用的運算為_________。A.選擇B.投影C.插入D.連接
13.數(shù)據(jù)庫應(yīng)用系統(tǒng)中的核心問題是_________。
A.數(shù)據(jù)庫設(shè)計B.數(shù)據(jù)庫系統(tǒng)設(shè)計C.數(shù)據(jù)庫維護(hù)D.數(shù)據(jù)庫管理員培訓(xùn)
14.下面的程序中,錯誤的語句是()。①#inClude②voidmain③{④int*p=newint[1];⑤P=9;⑥cout<<.*P<<endl;⑦delete[]p;⑧}
A.④B.⑤C.⑥D(zhuǎn).⑦
15.在多繼承中,公有派生和私有派生對于基類成員在派生類中的可訪問性與單繼承的規(guī)則()。
A.完全相同B.完全不同C.部分相同,部分不同D.以—上都不對
16.語句ofstreamf(”SALARY.DAT”,ios::app|ios::binary);的功能是建立流對象f,試圖打開文件SALA-RY.DAT并與之連接,并且()。
A.若文件存在,將文件寫指針定位于文件尾;若文件不存在,建立一個新文件
B.若文件存在,將其置為空文件;若文件不存在,打開失敗
C.若文件存在,將文件寫指針定位于文件首;若文件不存在,建立一個新文件
D.若文件存在,打開失??;若文件不存在,建立一個新文件
17.在下列枚舉符號中,用來表示“相對于當(dāng)前位置”文件定位方式的是()。
A.ios_base::cur
B.ios_base::beg
C.ios_base::0ut
D.ios_base::end
18.this指針是C++語言實現(xiàn)()的一種機(jī)制。
A.抽象B.封裝C.繼承D.重載
19.一個教師可講授多門課程,一門課程可由多個教師講授。則實體教師和課程間的聯(lián)系是()。
A.1:1聯(lián)系B.1:m聯(lián)系C.m:1聯(lián)系D.m:n聯(lián)系
20.下列各組類型聲明符中,含義相同的一組是()。
A.unsignedlongint和long
B.signedshort和short
C.unsignedshort和short
D.shortint和int
21.有如下說明:inta[10]={1,2,3,4,5,6,7,8,9,10},*P=a;則數(shù)值為9的表達(dá)式是()。
A.*P+9B.木(P+8)C.*P+=9D.P+8
22.一個隊列的進(jìn)隊列順序是1,2,3,4,則出隊列順序為()。
A.4,3,2,1B.2,4,3,1C.1,2,3,4D.3,2,1,4
23.下面程序的運行結(jié)果為()。#include<iostream.h>voidmain{for(inta=0,x=0;!xa<=10;a++){a++:}cout<<a<<endl:}A.10B.1lC.12D.0
三、2.填空題(12題)24.若已定義,以下fun函數(shù)的功能是:在第一個循環(huán)中給前10個數(shù)組元素依次賦1、2、3、4、5、6、7、8、9、10;在第二個循環(huán)中使a數(shù)組前10個元素中的值對稱折疊,變成1、2、3、4、5、5、4、3、2、1。請?zhí)羁铡?/p>
fun(inta[])
{
inti;
for(i=1;i<=10;i++)【】=i;
for(i=0;i<5;i++)【】a[i];
}
25.在深度為7的滿二叉樹中,度為2的結(jié)點個數(shù)為______。
26.執(zhí)行"cout<<char('F'-2)<<end1;”語句后得到的輸出結(jié)果后【】。
27.己知類sample是一個抽象類,其成員函數(shù)display是無形參、無返回類型的純虛函數(shù),請完成其聲明:
classsample{
public:
sample(){};
______
};
28.以下程序的輸出結(jié)果是【】。
#include<iostream>
usingnamespacestd;
intmain()
{
ints,i;
for(s=0,i=1;i<3;i++)
s+=i;
cout<<s<<end1;
return0;
}
29.類是一個支持集成的抽象數(shù)據(jù)類型,而對象是類的【】。
30.下面程序的輸出結(jié)果是【】。
#include<iostream.h>
intadd(inta,intb);
voidmain()
{
externintx,y;
cout<<add(x,y)<<end1;
}
intx(20),y(5);
intadd(inta,intb)
{
ints=a+b;
returns;
}
31.流操作中若要按八進(jìn)制、十六進(jìn)制和十進(jìn)制格式顯示,則應(yīng)用【】、【】和【】來分別指定。
32.在最壞情況下,堆排序需要比較的次數(shù)為【】。
33.設(shè)一棵完全二叉樹共有839個結(jié)點,則在該二叉樹中有【】個葉子結(jié)點。
34.分析以下程序的執(zhí)行結(jié)果______。
#include<iostream.h>
classSample
{
intx,y;
public:
Sample(){x=y=0;}
Sample(inta,intb){x=a;y=b;)
~Sample()
{
if(x==y)
cout<<"x=y"<<end1;
else
cout<<"x!=y"<<end1;
}
voiddisp()
{
cout<<"x="<<x<<",y="<<y>>end1;
}
};
voidmain()
{
Samples1(2,3);
s1.disp();
}
35.寫出下列程序的運行結(jié)果。
#include<iostream.h>
classX{public:
virtualvoiddisp(){cout<<”X類的disp函數(shù)<<”end1;}
};
classY:publicX{
public:
voiddisp(){cout<<”Y類的disp函數(shù)<<”end1;}
};
voidmain(){
Xa,*p=&a;
Yb;
p->disp();
p=&b;
p->disp();
}
運行結(jié)果為:【】
【】
四、程序改錯題(10題)36.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行有問題,請改正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;
}
37.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯誤,請改正錯誤,使程序正常運行,并且要求最后一個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,但該程序運行有問題,請改正main函數(shù)中的錯誤,使該程序的輸出結(jié)果正確。程序輸出:88注意:錯誤的語句在/********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;}
39.使用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;
}
40.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯誤,請改正程序中的錯誤,使得程序輸出:
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;
}
41.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯,請改正其中的錯誤,使程序正常運行,并使程序輸出的結(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;
}
42.使用VC++6.0打開考生文件夾下的源程序文件
1.cpp,該程序運行時有錯誤,請改正程序中的錯誤。本程序要求實現(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;
}
43.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯誤,請改正錯誤,使程序正常運行,并且要求最后一個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;}
44.使用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;}
45.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯。請改正程序中的錯誤,使程序輸出的結(jié)果為1003732注意:錯誤的語句在//******error******的下面,修改該語句即可。試題程序:#include<iostream.h>//******error******voidmain{//******error******intm=0142://******error******intn=0X27:intq=32;cout<<m<<endl;cout<<n<<endl;cout<<q<<endl;return;}
五、綜合應(yīng)用題(2題)46.使用VC++6.0打開考生文件夾下的源程序文件3.cpp。請完成以下部分,實現(xiàn)在屏幕上輸出為C3C2這個程序需要修改的部分,請按照以下部分實現(xiàn)。(1)類C0不能被實例化,請定義一個純虛函數(shù)print,在注釋1后添加適當(dāng)?shù)恼Z句。(2)類C1私有虛繼承類C0,請在注釋2后添加適當(dāng)?shù)恼Z句。(3)類C2公有繼承于C0,請在注釋3后添加適當(dāng)?shù)恼Z句。(4)類c3公有繼承于C2與C1,請在注釋4后添加適當(dāng)?shù)恼Z句。注意:增加代碼或者修改代碼的位置已經(jīng)用符號表示出來。請不要修改其他的程序代碼。試題程序:#include(iostream.h)classCO{//********1********};//********2********classC1:{public:voidprint{cout<"”C1"<<endl;}};//********3********classC2:{public:voidprint{cout<<"C2"<<endl;}};//********4***x****classC3:{public:voidprint{cout<<"C3"<<endl;}};voidmain{C30bj3;C20bj2;obj3.print;obj2.print;return;}
47.請使用VC6或使用【答題】菜單打開考生文件夾proj3下的工程proj3,其中聲明的DataList類,是一個用于表示數(shù)據(jù)表的類。DataList的重載運算符函數(shù)0perator+,其功能是求當(dāng)前數(shù)據(jù)表與另一個相同長度的數(shù)據(jù)表之和;即它返回一個數(shù)據(jù)表,其每個元素等于相應(yīng)兩個數(shù)據(jù)表對應(yīng)元素之和。請編寫這個operator+函數(shù)。程序的正確輸出應(yīng)該是:兩個數(shù)據(jù)表:1,2,3,4,5,63,4,5,6,7,8兩個數(shù)據(jù)表之和:4,6,8,10,12,14要求:補充編制的內(nèi)容寫在“//********333********”與“//********666********”之間,不得修改程序的其他部分。注意:程序最后將結(jié)果輸出到文件。ut.dat中。輸出函數(shù)writeToFile已經(jīng)編譯為。bj文件,并且在本程序中調(diào)用。//DataList.h#inClude<iostream>usingnamespaCestd;ClaSSDataList{//數(shù)據(jù)表類intfen;double*d;publiC:DataList(intlen,doubledata[]=NULL);DataList(DataList&data);intlengthConst{retumlen;}doublegetElement(inti)Consttreturnd[i];}DataListoperator+(ConstDataList&list)Const;//兩個數(shù)據(jù)表求和voidshowConst;//顯示數(shù)據(jù)表};voidwriteToFile(Char$,ConstDataList&);//main.Cpp#inClude”DataList.h”DataList::DataList(intlen,doubledata[]):len(ien){d=newdouble[1en];for(inti=0;i<len;i++)d㈨i=(data==NULL?0.0:data[i]);}DataList::DataList(DataList&data):len(data.1en){d=newdouble[1en];for(inti=0;i<len;i++)d[i]=data.d[i];DataListDataList::0perator+(Con8tDataList&list,)Const{//兩個數(shù)據(jù)表求和double*dd=newdouble[1ist.1ensth];//********333********//********666********returnDataList(1ist.1ength,dd);}voidDataList::showConst{//顯示數(shù)據(jù)表fr(int。i=0;i<len-1;i++)eout<<d[i]<<”,”;Cout<<d[1en-1]<<endl;intmain{doublesl[]={1,2,3,4,5,6};doubles2[]={3,4,5,6,7,8};DataListlist1(6,sl),list2(6,s2);//定義兩個數(shù)據(jù)表對象eout<<”兩個數(shù)據(jù)表:”<<endl:listl.show:list2.show;eout<<endl<<”兩個數(shù)據(jù)表之和:”<<endl:(1istl+list2).show;writeToFile(””,listl+list2);return0:
六、3.綜合應(yīng)用題(2題)48.使用VC6打開考生文件夾下的工程test7_3,此工程包含一個源程序文件test7_3.cpp,其中含有一個類Circle的定義,但該類的定義并不完整。請按要求完成下列操作,將類Circle的定義補充完整。
(1)為類Circle增加一個構(gòu)造函數(shù),該函數(shù)有一個參數(shù),并在構(gòu)造時將該參數(shù)值賦給成員radius。將該函數(shù)實現(xiàn)為一個非內(nèi)聯(lián)函數(shù),并且使用參數(shù)列表的方式將類成員賦值。請在注釋“//**1**”之后添加適當(dāng)?shù)恼Z句。
(2)為類Circle增加一個成員函數(shù)print(),使得可以輸出有關(guān)圓的信息,比如下列程序
Circlec;
c.SetRadius(5);
c.Print();
將輸出:Thecirclehasradiusof5!
請在注釋“//**2**”之后添加適當(dāng)?shù)恼Z句。
(3)完成友元函數(shù)voidCompareR(Circle*cl,Circle*c2)的定義,在屏幕中輸出c1與c2比較radius大小結(jié)果,要求使用if-else結(jié)構(gòu)完成。請在注釋“//**3**”之后添加適當(dāng)?shù)恼Z句。
輸出結(jié)果如下;
Thecirclehasradusof5!
Thecirclehasradiusof10!
c1<c2
注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。
源程序文件test7_3.cpp清單如下:
#include<iostream.h>
classCircle{
public:
Circle():radius(5){}
//**1**
voidSetRadius(intr){radius=r;}
intGetRadius(){returnradius;}
//**2**
friendvoidCompareR(Circle*c1,Circle*C2);
private:
intradius;
};
voidCompareR(Circle*c1,Circle*C2)
{
//**3**
cout<<"c1>c2"<<endl;
else
if((c1->GetRadius())==(c2->GetRadius()))
cout<<"c1=c2"<<endl;
else
if((c1->GetRadius())<(c2->GetRadius()))
cout<<"c1<c2"<<endl;
}
voidmain()
{
Circlec1;
c1.SetRadius(5);
C1.Print();
Circlec2(10);
c2.Print();
CompareR(&c1,&c2);
}
49.使用VC6打開考生文件夾下的工程test11_3。此工程包含一個test11_3.cpp,其中定義了類CPosition,但該類的定義都并不完整。請按要求完成下列操作,將類CPosition的定義補充完整。
(1)在類定義外完成重載的兩個構(gòu)造函數(shù)CPosition()和CPosition(doubledx,doubledy),其中前者為不帶參數(shù)的構(gòu)造函數(shù),使CPosition對象的默認(rèn)值為x=0,y=0,后者為帶參數(shù)的構(gòu)造函數(shù),把數(shù)據(jù)成員x和y分別初始化為參數(shù)dx和dy的值。請在注釋“//**1**”之后添加適當(dāng)?shù)恼Z句。
(2)在類體中添加函數(shù)move(doubleax,doubleay)的定義,使得點的坐標(biāo)x和y分別移動ax和ay個單位,請在注釋“//**2**”之后添加適當(dāng)?shù)恼Z句。
(3)完成函數(shù)doubledistance(doublebx,doubleby)的定義,該函數(shù)返回*this和點(bx,by)的距離,請在注釋“//**3**”之后添加適當(dāng)?shù)恼Z句。
注意:除在指定的位置添加語句外,請不要改動程序中的其他語句。
源程序文件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.B
2.B
3.A解析:本題實際是考察指針的含義。指針代表的是變量或函數(shù)等在內(nèi)存的地址。
4.A
5.B解析:本題考核指針的使用。在程序段中,有語句:charstr[]='BCDE',*ptr=str:。由字符串賦值的規(guī)則可知:字符串?dāng)?shù)組str中的5個元素的值分別為:\'B\'、\'C\'、\'D\'、\'E\'和\'\\0\'。而指針ptr指向str[0]。最后程序要求輸出*(p+4),即數(shù)組元素str[4]的值,而str[4]中存放的是字符\'\\0\'。所以最后輸出的值為0。
6.B
7.D解析:C++中用友元函數(shù)重載運算符至少有一個參數(shù),重載一目運算符要有一個參數(shù),重載二目運算符要有兩個參數(shù)。
8.A解析:函數(shù)模板是一系列相關(guān)函數(shù)的模型或樣板,這些函數(shù)的源代碼形式相同,只是所針對的數(shù)據(jù)類型不同。因此,函數(shù)模板使一個函數(shù)可以定義成對許多不同數(shù)據(jù)類型完成同一個任務(wù)。
9.C
10.A解析:本題考查的是C++流的一些概念。從輸入流中提取數(shù)據(jù)賦給一個變量的操作稱為提取操作;而把表達(dá)式的值插入到輸出流中的操作稱為插入操作。故選項B的說法不正確。cin是一個預(yù)定義的輸入流對象而不是流類,故選項C不正確。只有文件流中有一個open成員函數(shù),用來打開一個文件,而輸入、輸出流中沒有open成員函數(shù),選項D的說法不正確。所以,只有選項A是正確的,應(yīng)該選擇A。
11.B靜態(tài)數(shù)據(jù)成員不能在參數(shù)初始化表對靜態(tài)數(shù)據(jù)成員初始化,只能在類體外進(jìn)行初始化。
12.B解析:專門的關(guān)系運算包括:選擇、投影和連接。1、選擇:從關(guān)系中找出滿足給定條件的元組的操作稱為選擇。選擇是從行的角度進(jìn)行的運算,即從水平方向抽取記錄。2、投影:從關(guān)系模式中指定若干個屬性組成新的關(guān)系。投影是從列的角度進(jìn)行的運算,相當(dāng)于對關(guān)系進(jìn)行垂直分解。3、連接:連接是關(guān)系的橫向結(jié)合。連接運算將兩個關(guān)系模式拼接成一個更寬的關(guān)系模式,生成的新關(guān)系中包含滿足連接條件的元組。連接過程是通過連接條件來控制的,連接條件中將出現(xiàn)兩個表中的公共屬性名,或者具有相同語義、可比的屬性。選擇和投影運算的操作對象只是一個表。相當(dāng)于對一個二維表進(jìn)行切割。連接運算需要兩個表操作為操作對象。由圖可知關(guān)系R通過運算得到關(guān)系S。關(guān)系S與關(guān)系R相比,記錄的條數(shù)沒有發(fā)生變化,屬性的個數(shù)發(fā)生了變化。因此所使用的運算應(yīng)該是投影。選項C插入運算會增加記錄的條數(shù)。所以選項B是正確的。
13.A數(shù)據(jù)庫應(yīng)用系統(tǒng)中的核心問題是數(shù)據(jù)庫的設(shè)計。故答案為A選項。
14.B本題考查的是指針的使用,P是指向int型的指針,若想給它指向的元素賦值,應(yīng)使用*符號,贏接賦值相當(dāng)于改變了原來P存儲的地址。
15.A
16.A本題考查的是文件流的操作,app表示以追加方式打開文件(即將指針移至文件尾),binao"表示以二進(jìn)制方式打開文件。
17.AA?!窘馕觥恐饕疾槲募鞯亩ㄎ粏栴}。冀中iosbase::beg表示相對于文件首,ios_base::cur表示相對于當(dāng)前位置(負(fù)數(shù)表示當(dāng)前位置之前),ios_base::end表示相對于文件尾,ios_base::out表示在文件流的建立中為文件的輸出而打開。
18.Bthis指針是c++語言實現(xiàn)封裝的一一種機(jī)制,它將對象和該對象調(diào)用的成員函數(shù)連接在一起.在外部看來,每-個對象都擁有自己的函數(shù)成員。
19.D多對多聯(lián)系:多對多的聯(lián)系表現(xiàn)為一個表中的多個記錄在相關(guān)表中同樣有多個記錄與其匹配。
一個教師可講授多門課程,一門課程可由多個教師講授,所以實體教師和課程間的聯(lián)系是多對多的聯(lián)系。
20.BB。【解析】本題考查的知識點是基本類型的派生類型的定義。派生類型聲明符是由基本類型關(guān)鍵字char、int、float、double前面加上類型修飾符組成的。類型修飾符包括short短類型,縮短字長;long長類型,加長字長;signed有符號類型,取值范圍包括正負(fù)值;unsigned無符號類型,取值范圍只包括正值。其中signed和unsigned只能同時出現(xiàn)一個,如果省略則默認(rèn)為signed。short和long也只能同時出現(xiàn)一個,如果修飾的類型是int.則可以省略int。unsignedlongint的省略形式為unsignedlong;選項B中,signedshortint的省略形式就是short,正確;unsignedshortint的省略形式是unsignedshort;shortint的省略形式是short。故本題選B。
21.B本題考查指向數(shù)組的指針,本題中指針變量P指向數(shù)組a,那么*P的值就是1,即表示數(shù)組的第一個元素,那么數(shù)值為9的表達(dá)式就是將指針向后移動8個地址,即P+8指向的是數(shù)組元素值為9,所以數(shù)值為9的表達(dá)式是*(P+8)。
22.C解析:隊列是指允許在一端進(jìn)行插入,而在另一端進(jìn)行刪除的線性表。因此隊列又稱為先進(jìn)先出的線性表。本題正確答案為選項C。
23.C在進(jìn)入最后一次循環(huán)時a=10,在循環(huán)體內(nèi)執(zhí)行“a++;”后a=11,執(zhí)行完該次循環(huán)體計算for循環(huán)的增量部分后a=12小于l0,循環(huán)結(jié)束。
24.a[i-1]a[9-i]
25.63
26.DD解析:char()在這里作為強制類型轉(zhuǎn)換函數(shù)使用,將F前相隔兩個的字符顯示出來,故應(yīng)為字符D。
27.virtualvioddisplay()=0;virtualvioddisplay()=0;解析:此題考查的是純虛函數(shù)。純虛函數(shù)定義格式是在虛函數(shù)的后面加上“=0”。與虛函數(shù)不同的是,純虛函數(shù)允許沒有函數(shù)體,故本題應(yīng)填入的內(nèi)容是virtualvioddisplay()=0;。
28.33解析:此程序中,for循環(huán)用來統(tǒng)計符合條件的數(shù)的總和,在循環(huán)執(zhí)行完后才輸出s的值。s、i的初始值分別為0和1。首先判斷條件“1<3”成立,執(zhí)行“s+=i;”和“i++”后,i和s的值分別變?yōu)?和1。第2次循環(huán)時,s、i的初始值為2和1,判斷條件“2<3”成立,進(jìn)入循環(huán)體,執(zhí)行“s+=i;”和“i++”后,i和s的值分別變?yōu)?和3。這是最后一次循環(huán)。
29.實例實例解析:將屬性、操作相似的對象歸為類,也就是說,類是具有共同屬性、共同方法的對象的集合。所以,類是對象的抽象,對象則是其對應(yīng)類的一個實例。
30.25
31.ocx、hex、decocx、hex、dec解析:流操作中ocx、hex、dec分別指定為按八進(jìn)制、十六進(jìn)制和十進(jìn)制格式顯示。
32.O(nlog2n)O(nlog2n)解析:在最壞情況下,堆排序需要比較的次數(shù)為O(nlog2n)。
33.420420解析:一般二又樹有一個性質(zhì):在任意一棵二叉樹中,度為。的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。
在根據(jù)完全二叉樹的定義,在一棵完全二叉樹中,最多有1個度為1的結(jié)點。
綜合以上兩點可以得到如下結(jié)論;
設(shè)一棵完全二叉樹具有n個結(jié)點。如果n為偶數(shù).則在該二叉樹中有n/2個葉子結(jié)點以及n/2-1個度為2的結(jié)點,還有1個是度為1的結(jié)點;如果n為奇數(shù),則在該二叉樹中有[n/2]+1個葉子結(jié)點以及[n/2]個度為2的結(jié)點,沒有度為1的結(jié)點。
在本題中,完全二叉樹共有839個結(jié)點,839是奇數(shù),因此,在該二叉樹中有420個葉子結(jié)點以及419個度為2的結(jié)點,沒有度為1的結(jié)點。
34.x=2y=3x!=y
35.X類的disp函數(shù)Y類的disp函數(shù)X類的disp函數(shù)\r\nY類的disp函數(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類的對象0bj1,根據(jù)TC類構(gòu)造函數(shù)的定義TC(inti),存在整型參數(shù),并且題目要求第一個輸出結(jié)果兩1,所以補全參數(shù)1,即第1處的“TCobjl(1);”。第2處處的“objl.number=10;”應(yīng)該是調(diào)用成員函數(shù)SetNumber賦值。在C++中成員函數(shù)的使用形式應(yīng)該是:對象名.成員函數(shù),所以修改為“obj1.SetNumber(10);”。類是對象的抽象,而對象是類的具體實例。第3處“TC.SetNumber(100);”語句中的TC為類,并不是對象,這里應(yīng)該使用定義的對象,即obj2,所以將語句修改為“obj2.SetNumber(100);”。
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)該符合這個類型,所以補充catch子句中的類型,否則如果找不到匹配的catch塊,系統(tǒng)就會調(diào)用一個系統(tǒng)函數(shù),使程序終止運行。即第2處的語句修改為“catch(inti)”。如果在catch子句中沒有指定異常信息的類型,那么就用刪節(jié)號“…”表示它可以捕捉任何類型的異常信息,即修改為“catch(…)”。
38.(1)“staticintn=O”應(yīng)改為“staticintn;”。(2)“intCO::n;”應(yīng)改為“intCO::n=0;”。(3)“cout<<c.n<<endl;”應(yīng)改為“cout<<c->n<<endl;”?!窘馕觥勘绢}要在屏幕上輸出兩個字符,首先要靜態(tài)變量初始化,第1處應(yīng)改為“staticintn;”,第2處要給n賦值,第3處輸出時引用c的對象,應(yīng)改為“cout<<c->n<<endl;”。
39.(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)”。
40.(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:”,否則該類無法被實例化。變量的初始化可以通過“=”號,也可以和初始化對象一樣添加構(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)不會退出。
41.(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)生中斷異常。“assert(sizeof(s1)==3);”語句中“sizeof(s1)==3”為假,這會使程序產(chǎn)生異常,不能正常執(zhí)行。因為str1的值為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);”。
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個標(biāo)識應(yīng)該用流成員函數(shù)put輸出字符,所以第3處的語句修改為“out1.put(s[i]);”。
43.(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
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 冠心病的預(yù)防保健知識課件
- (2026年)護(hù)理科研的原則和方法課件
- 騎車介紹教學(xué)課件
- 未來五年腌臘羊肉制品企業(yè)縣域市場拓展與下沉戰(zhàn)略分析研究報告
- 未來五年檢漏儀器企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級戰(zhàn)略分析研究報告
- 未來五年葦子企業(yè)ESG實踐與創(chuàng)新戰(zhàn)略分析研究報告
- 未來五年汽車安全檢驗服務(wù)企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級戰(zhàn)略分析研究報告
- 《小鬼當(dāng)家:家庭責(zé)任與財商啟蒙實踐課》-小學(xué)三年級綜合實踐活動教學(xué)設(shè)計
- 《質(zhì)量守恒定律》教學(xué)設(shè)計
- 探討未來:科技發(fā)展與人類生活的對話-外研版九年級英語下冊第六模塊一、二單元整合教學(xué)設(shè)計
- YST 581.1-2024《氟化鋁化學(xué)分析方法和物理性能測定方法 第1部分:濕存水含量和灼減量的測定 重量法》
- 電池測試崗位工作總結(jié)
- 呂國泰《電子技術(shù)》第7章觸發(fā)器和時序邏輯電路
- 路燈養(yǎng)護(hù)投標(biāo)方案
- (完整版)醫(yī)療器械網(wǎng)絡(luò)交易服務(wù)第三方平臺質(zhì)量管理文件
- 中國高血糖危象診斷與治療指南
- 人教版三年級語文下冊《選讀課文8 除三害》優(yōu)質(zhì)教學(xué)設(shè)計教案-9
- 人民醫(yī)院檢驗科程序文件
- 在BBO橋牌在線練習(xí)橋牌的步驟
- DB21T 3444-2021老玉分級規(guī)范
- MT/T 544-1996礦用液壓斜軸式軸向柱塞馬達(dá)試驗方法
評論
0/150
提交評論