版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2022年吉林省四平市全國計算機等級考試C++語言程序設(shè)計測試卷(含答案)學(xué)校:________班級:________姓名:________考號:________
一、1.選擇題(10題)1.若有以下變量和函數(shù)說明:#include<iostream.h>charCh='*';voidsub(intx,inty,charch,double*Z){switch(ch){case'+':*Z=x+y;break;case'-':*Z=x-y;break:case'*':*Z=x*y;break;case'/':*z=x/y;break:}}以下合法的函數(shù)調(diào)用語句是()。
A.sub(10,20,Ch,y);
B.sub(1.2+3,2*2,'+',&Z);
C.sub(sub(1,2,'+',&y),sub(3,4'+',&x),'-',&y);
D.sub(a,b,&x,ch);
2.運算符重載是對已有的運算符賦予多重含義,因此()。
A.可以對基本類型(如int類型)的數(shù)據(jù),重新定義“+”運算符的含義
B.可以改變一個已有運算符的優(yōu)先級和操作數(shù)個數(shù)
C.只能重載c++中已經(jīng)有的運算符,不能定義新運算符
D.C++中已經(jīng)有的所有運算符都可以重載
3.有3個結(jié)點的二叉樹有()。
A.2種形態(tài)B.4種形態(tài)C.7種形態(tài)D.5種形態(tài)
4.下面程序的功能是把316表示為兩個加數(shù)的和,使兩個加數(shù)分別能被13和11整除,在劃線處應(yīng)填入的選項是#include<iostream.h>voidmain(){inti=0,j,k;do{i++;k=316-13*i;}while(______);j=k/11;cout<<"316=13*"<<i<<"+11*"<<j;}
A.k/11B.k%11C.k/11==0D.k%11==0
5.在深度為4的滿二叉樹中,葉子節(jié)點的個數(shù)為()。
A.16B.8C.7D.15
6.()是析構(gòu)函數(shù)的特征。
A.一個類中只能定義一個析構(gòu)函數(shù)
B.析構(gòu)函數(shù)名與類名不同
C.析構(gòu)函數(shù)的定義只能在類體內(nèi)
D.析構(gòu)函數(shù)可以有一個或多個參數(shù)
7.下列數(shù)據(jù)結(jié)構(gòu)中,能用二分法進行查找的是()。
A.順序存儲的有序線性表B.線性鏈表C.二叉鏈表D.有序線性表
8.若某二叉樹的前序遍歷訪問順序是abdgcefh,中序遍歷訪問順序是dgbaechf,則其后序遍歷的結(jié)點訪問順序是()。
A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca
9.支持子程序調(diào)用的數(shù)據(jù)結(jié)構(gòu)是_________。
A.棧B.樹C.隊列D.二叉樹
10.允許用戶為類定義一種模式,使得類中的某些數(shù)據(jù)成員及成員函數(shù)的返回值能去任意類型,它屬于一個()。
A.函數(shù)模板B.模板函數(shù)C.類模板D.模板類
二、單選題(13題)11.下列()是C++語言的有效標識符。
A.NolB.N0.1C.12345D.int
12.下列字符串中。不可以用做c++標識符的是()。
A.y_2006B._EST_HC.ReturnD.switch
13.下列程序的運行結(jié)果為()。#include<iostream.h>inti=0;classA{public:A{i++;}};voidmain{Aa,b[3],*C;C=b;cout<<i<<endl:}A.2B.3C.4D.5
14.下列是if語句的基本形式:if(表達式)語句其中“表達式”()。
A.必須是邏輯表達式B.必須是關(guān)系表達式C.必須是邏輯表達式或關(guān)系表達式D.可以是任意合法的表達式
15.有如下函數(shù)模板定義:templateT2plus(T1t1,T3t3){returnt1+t3;}則以下調(diào)用正確的是()。
A.plus(3,5L);
B.plus(3,5L);
C.plus(3,5L);
D.plus(3,5L);
16.數(shù)據(jù)庫設(shè)計中,用E—R圖來描述信息結(jié)構(gòu)但不涉及信息在計算機中的表示,它屬于數(shù)據(jù)庫設(shè)計的()。
A.需求分析階段B.邏輯設(shè)計階段C.概念設(shè)計階段D.物理設(shè)計階段
17.數(shù)據(jù)結(jié)構(gòu)作為計算機的一門學(xué)科,主要研究數(shù)據(jù)的邏輯結(jié)構(gòu)、對各種數(shù)據(jù)結(jié)構(gòu)進行的運算,以及()。A.A.數(shù)據(jù)的存儲結(jié)構(gòu)B.計算方法C.數(shù)據(jù)映象D.邏輯存儲18.C++中的模板包括()。A.對象模板和函數(shù)模板B.對象模板和類模板C.函數(shù)模板和類模板D.變量模板和對象模板
19.由于常對象不能被更新,因此()。
A.通過常對象只能調(diào)用它的常成員函數(shù)
B.通過常對象只能調(diào)用靜態(tài)成員函數(shù)
C.常對象的成員都是常成員
D.通過常對象可以調(diào)用任何不改變對象值的成員函數(shù)
20.下列程序的運行結(jié)果是
main()
{inta=2,c=5;
cout<<"a="<<a<<"b="<<c<<endl;
}
A.a=%b=%5B.a=2b=5C.a=db=dD.a=%db=%d
21.有如下定義:inta[5]={1,3,5,7,9},*P=a;下列表達式中不能得到數(shù)值5的是()。
A.a[2]B.a[3]C.*(P+2)D.+P+4
22.下面對靜態(tài)數(shù)據(jù)成員的描述中,正確的是()。
A.靜態(tài)數(shù)據(jù)成員可以在類體內(nèi)進行初始化
B.靜態(tài)數(shù)據(jù)成員不可以被類的對象調(diào)用
C.靜態(tài)數(shù)據(jù)成員不能受private控制符的作用
D.靜態(tài)數(shù)據(jù)成員可以直接用類名調(diào)用
23.下列程序是用來判斷數(shù)組中特定元素的位置所在,則輸出結(jié)果為#include<conio.h>#include<iostream.h>intfun(int*s,intt,int*k){inti;*k=0;for(i=0;i
A.7,431B.6C.980D.6,980
三、2.填空題(12題)24.數(shù)據(jù)管理技術(shù)發(fā)展過程經(jīng)過了人工管理、文件系統(tǒng)和數(shù)據(jù)庫系統(tǒng)3個階段,其中數(shù)據(jù)獨立性最高的階段是______。
25.數(shù)據(jù)模型分為格式化模型與非格式化模型,層次模型與網(wǎng)狀模型屬于【】。
26.下列程序的執(zhí)行結(jié)果為______。
#include<iostream.h>
intf(inti){return++i;}
intg(int&i){return++i;}
voidmain()
{inta,b;
a=b=0;
a+=f(g(a));
b+=f(f(b));
cout<<"a="<<a<<",b="<<b<<endl;
}
27.非成員函數(shù)應(yīng)該聲明為類______函數(shù)才能訪問該類的私有成員。
28.若有函數(shù)fun(x,y),并且已經(jīng)使函數(shù)指針變量p指向函數(shù)fun,則使用p調(diào)用函數(shù)fun的方法是______。
29.閱讀下列程序,并寫程序運行結(jié)果【】。
#include<iomanip.h>
voidmain(){
for(inti=0;i<4;i++)
cout<<end1<<setfill('')<<setw(4-i)<<'0'
<<setfill('*')<<setw(i+i)<<(i>0?'O':'');
}
30.下列軟件系統(tǒng)結(jié)構(gòu)圖的寬度為【】。
31.對于派生類的構(gòu)造函數(shù),在定義對象時構(gòu)造函數(shù)的執(zhí)行順序為:先執(zhí)行【】。再執(zhí)行成員對象的構(gòu)造函數(shù),后執(zhí)行派生類本身的構(gòu)造函數(shù)。
32.一個項目具有一個項目主管,一個項目主管可管理多個項目。則實體集“項目主管”與實體集“項目”的聯(lián)系屬于【】的聯(lián)系。
33.【】技術(shù)是將數(shù)據(jù)和行為看成是一個統(tǒng)一的整體,使一個軟件成分,即所謂的對象。
34.在關(guān)系數(shù)據(jù)庫中,用來表示實體之間聯(lián)系的是______
35.有如下的程序:
#include<iostream>
#include<fstream>
usingnamespacestd;
intmain(){
chars[25]="Programminglanguage";
ofstreamf1(DATA.TXT");
f1<<"C++Programming";
f1.close();
ifstreamf2("DATA.TXT");
if(f2.good())f2>>s;
f2.close();
cout<<s;
return0;
}
執(zhí)行上面的程序交輸出【】。
四、程序改錯題(10題)36.使用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;}37.使用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;}
38.使用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;
}
39.使用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;
}
40.使用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;}41.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯,請改正其中的錯誤,使程序正常運行,輸出的結(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;}42.使用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;
}
43.使用VC++6.0打開考生文件夾下的源程序文件1.cpp。本程序要求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可能輸入多行,當(dāng)輸入字符“?”時,默認字符輸入結(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;
}
44.使用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;
}
45.使用VC++6.0打開考生文件夾下的源程序文件1.cpp。本程序要求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可能輸入多行,當(dāng)輸入字符“?”時,默認字符輸入結(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;}五、綜合應(yīng)用題(2題)46.使用VC++6.0打開考生文件夾下的源程序文件3.cpp,其中定義了類BA、PA1和PA2,其中PA1類由BA類公有派生,PA2類由PA1類公有派生。上述3個類的定義并不完整,請按要求完成下列操作,將程序補充完整。程序輸出結(jié)果如下:1O51057(1)定義類BA的構(gòu)造函數(shù),該構(gòu)造函數(shù)有一個整型的參數(shù)m,在構(gòu)造函數(shù)中將m賦值給數(shù)據(jù)成員a。請在注釋1之后添加適當(dāng)?shù)恼Z句。(2)定義類PA1的構(gòu)造函數(shù),該構(gòu)造函數(shù)有兩個整型的參數(shù)m和n,在構(gòu)造函數(shù)中將m賦值給數(shù)據(jù)成員b,將n作為基類BA構(gòu)造函數(shù)的參數(shù)值傳人。請在注釋2之后添加適當(dāng)?shù)恼Z句。(3)定義類PA2的構(gòu)造函數(shù),該構(gòu)造函數(shù)有3個整型的參數(shù)m、n和k,在構(gòu)造函數(shù)中請將m賦值給數(shù)據(jù)成員c,將n和k分別賦值給基類PA1構(gòu)造函數(shù)的參數(shù)m和n。請在注釋3之后添加適當(dāng)?shù)恼Z句。(4)完成類PA2的成員函數(shù)show的定義,該函數(shù)調(diào)用基類成員函數(shù),輸出基類私有成員a、b及類PA2自身的數(shù)據(jù)成員C的值,上述3個值在輸出時用空格隔開。請在注釋4之后添加適當(dāng)?shù)恼Z句。注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。試題程序:#include(iostream.h>classBA{inta;public://********1********intgeta{returna;}};classPAl:publicBA{intb;public://********2********intgetb{returnb;}};classPA2:publicPAl{intC;public://********3********voidshow{//********4********}};voidmain{PA2a(7,5,10);cout<<a.geta<<endl;cout<<a.getb<<endl;a.show;}
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實現(xiàn)獲得名字的緩存,但只獲得讀允許操作這個緩存”。只能引用數(shù)據(jù)成員,而不能修改,所以使用常成員函數(shù),其一般形式為“const函數(shù)類型函數(shù)名”,即“constchar*GetName2”。第3處要求“實現(xiàn)TC2的構(gòu)造函數(shù)”。TC2的構(gòu)造函數(shù)與類TC2的名稱應(yīng)該相同,而且第3處的大括弧中是對字符數(shù)組str的操作,所以類TC2的構(gòu)造函數(shù)中的參數(shù)為str,即這里補全為“TC2(char*str)”。第4處要求“完成TC2的構(gòu)造函數(shù),實現(xiàn)對名字的處理”,補全類TC2的構(gòu)造函數(shù),構(gòu)造函數(shù)中的名字變量str對應(yīng)于類TC中的成員變量m_str,所以這里補全變量賦值操作“m_str[i]=0;”。
六、3.綜合應(yīng)用題(2題)48.使用VC6打開考生文件夾下的工程test22_3,此工程包含一個源程序文件test22_3.cpp,其中定義了用于表示考生的類CStudent和它的派生類CGraduateStudent,但它們的定義并不完整。請按要求完成下列操作,將程序補充完整。
(1)定義CStudent的構(gòu)造函數(shù),函數(shù)含參數(shù)nm,它是char型的指針數(shù)據(jù),請使用字符串函數(shù)將類數(shù)據(jù)成員name初始化。請在注釋“//**1**”之后添加適當(dāng)?shù)恼Z句。
(2)完成類CStudent的成員函數(shù)voidaddscore(doublesc)的定義,將類數(shù)據(jù)成員score加上參數(shù)sc,請在注釋“//**2**”之后添加適當(dāng)?shù)恼Z句。
(3)添加類CGraduateStudent的成員函數(shù)voidaddpaper(intd)的定義,將int型的參數(shù)d的值加到類的數(shù)據(jù)成員paper上,請在注釋“//**3**”之后添加適當(dāng)?shù)恼Z句。
(4)調(diào)用對象sdt的成員函數(shù)addpaper使得該考生的論文數(shù)量變?yōu)?0,將請在注釋“//**4**”之后添加適當(dāng)?shù)恼Z句。
輸出結(jié)果如下:
StudentHanson
(Advisor:MichaelPhong)
Totalpaperis10
注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。
源程序文件test22_3.cpp清單如下:
#include<iostream.h>
#include<string.h>
classCStudent
{
private:
charname[30];
intcode;
doublescore;
public:
CStudent(char*nm)
{
//**1**
}
CStudent(){}
voidputname(char*nm){strcpy(name,nm);}
voidputcode(intd){code=d;}
voidputscore(doublesc){score=sc;}
voidgetname(char*nm){strcpy(nm,name);}
doublegetcode(){returncode;)
doublegetscore(){returnscore;}
voidaddscore(doublesc)
{
//**2**
}
};
classCGraduateStudent:publicCStudent
{
private:
charadvisor[30];
intpaper;
public:
voidputadvisor(char*nm){strcpy(advisor,nm);}
voidgetadvisor(char*nm){strcpy(nm,advisor);}
voidputpaper(intd){paper=d;}
//**3**
intgetpaper(){returnpaper;}
};
voidmain()
{
CGraduateStudentsdt;
sdt.putname("Hanson");
sdt.putadvisor("MichaelPhong");
sdt.putpaper(8);
//**4**
charcsname[30];
sdt.getname(csname);
charcaname[30];
sdt.getadvisor(caname);
cout<<"Student"<<csname<<endl;
cout<<"(Advisor:"<<caname<<")"<<endl;
cout<<"Totalpaperis"<<sdt.getpaper()<<endl;
}
49.使用VC6打開考生文件夾下的工程test30_3。此工程包含一個test30_3.cpp,其中定義了類A、A1和A2,其中A1類由A類公有派生,A2類由A1類公有派生。上述三個類的定義并不完整,請按要求完成下列操作,將程序補充完整。
(1)定義類A的構(gòu)造函數(shù),該構(gòu)造函數(shù)有一個整型的參數(shù)x,在構(gòu)造函數(shù)中請將x賦值給數(shù)據(jù)成員a。請在注釋“//**1**”之后添加適當(dāng)?shù)恼Z句。
(2)定義類A1的構(gòu)造函數(shù),該構(gòu)造函數(shù)有兩個整型的參數(shù)x和y,在構(gòu)造函數(shù)中請將x賦值給數(shù)據(jù)成員b,將y作為基類A構(gòu)造函數(shù)的參數(shù)值傳入。請在注釋“//**2**”之后添加適當(dāng)?shù)恼Z句。
(3)定義類A2的構(gòu)造函數(shù),該構(gòu)造函數(shù)有三個整型的參數(shù)x,y和2,在構(gòu)造函數(shù)中請將x賦值給數(shù)據(jù)成員c,將y和z分別賦值給基類A1構(gòu)造函數(shù)的參數(shù)x和y。請在注釋“//**3**”之后添加適當(dāng)?shù)恼Z句。
(4)完成類A2的成員函數(shù)show的定義,該函數(shù)調(diào)用基類成員函數(shù),輸出基類數(shù)據(jù)成員a和b及類A2自身的數(shù)據(jù)成員c的值,上述三個值在輸出時以空格隔開。請在注釋“//**4**”之后添加適當(dāng)?shù)恼Z句。
注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。
程序輸出結(jié)果如下:
9
6
962
源程序文件test30_3.cpp清單如下:
#include<iostream.h>
classA
{
inta;
public:
//**1**
intgeta(){returna;}
};
classA1:publicA
{
intb;
public:
//**2**
intgetb(){returnb;}
};
classA2:publicA1
{
intc;
public:
//**3**
voidshow()
{
//**4**
}
};
voidmain()
{
A2a(2,6,9);
cout<<a.geta()<<end1;
cout<<a,getb()<<end1;
a.show();
}
參考答案
1.B
2.C重載運算符的規(guī)則如下:①c++不允許用戶自己定義新的運算符,只能對已有的c++運算符進行重載;②c++不能重載的運算符只有5個;③重載不能改變運算符運算對象的個數(shù);④重載不能改變運算符的優(yōu)先級和結(jié)合性;⑤重載運算符的函數(shù)不能有默認的參數(shù);⑥重載的運算符必須和用戶定義的自定義類型的對象一起使用,至少應(yīng)有一個是類對象,即不允許參數(shù)全部是c++的標準類型。故本題答案為c。
3.DD.【解析】由3個結(jié)點組成的二叉樹可以有5種形杰,如下圖所示。
4.B解析:do-while語句的一般形式是
do
{
語句
}while(表達式);
特點是:“直到型”循環(huán)結(jié)構(gòu)。先執(zhí)行一次“語句”,判“表達式”,當(dāng)“表達式”為非0,再執(zhí)行“語句”,直到“表達式”的值為0時停止執(zhí)行語句。在一般情況下,用while和do-while語句解決同一問題時,若二者的循環(huán)體部分是一樣的,它們的結(jié)果也一樣。但當(dāng)while后面的“表達式”一開始就為“假”時,兩種循環(huán)的結(jié)果不同。這是因為此時while循環(huán)的循環(huán)不被執(zhí)行,而do-while循環(huán)的循環(huán)體被執(zhí)行一次。本題的關(guān)鍵是兩個加數(shù)分別能被13和11整除,在i=0時,直接將316賦值給k,當(dāng)k%11的值為0時,則不必執(zhí)行循環(huán),將執(zhí)行j=k/11語句,輸出結(jié)果,所以該表達式合理的條件是k%11。
5.B解析:滿二叉樹的第k層上有2k-1個結(jié)點,且深度為m的滿二叉樹有2m-1個結(jié)點。
6.A
7.A解析:要對線性表進行二分法查找,對線性表有兩個要求:第一,要求線性表是按順序方式存儲的;第二,要求線性表中的元素是按照從小到大的順序排好序。
8.D解析:中序遍歷的遞歸算法定義:①遍歷左子樹;②訪問根結(jié)點;③遍歷右子樹。前序遍歷的遞歸算法定義:①訪問根結(jié)點;②遍歷左子樹;③遍歷右子樹。后序遍歷的遞歸算法定義:①遍歷左子樹;②遍歷右子樹;③訪問根結(jié)點。根據(jù)前序遍歷的結(jié)果可知,a是根結(jié)點。由中序遍歷的結(jié)果dgbaechf可知,d、g、b是左子樹的結(jié)點,e、c、h、f是右子樹的結(jié)點。再由前序遍歷的結(jié)果bdg可知,b是a左邊子樹的根,由cefh可知,c是a右邊子樹的根。再由中序遍歷的結(jié)果dgb可知,d、g是b左邊子樹的結(jié)點,b右邊子樹無結(jié)點。再由前序遍歷結(jié)果dg可知,d為b左子樹的根,g是以d為根的子樹的右結(jié)點。至此,a的左子樹已完全弄清楚了。同樣的道理,可以弄清楚以c為根的子樹的結(jié)點位置。所以可知后序遍歷的結(jié)果是D。
9.A棧支持子程序調(diào)用。棧是-種只能在-端進行插入或刪除的線性表,在主程序調(diào)用子函數(shù)時要首先保存主程序當(dāng)前的狀態(tài),然后轉(zhuǎn)去執(zhí)行子程序,最終把子程序的執(zhí)行結(jié)果返回到主程序中調(diào)用子程序的位置,繼續(xù)向下執(zhí)行,這種調(diào)用符合棧的特點,因此本題的答案為A。
10.C解析:類模板的定義。注意類模板和模板類的區(qū)別:類模板不是一個具體的類,使用時必須首先實例化為具體的模板類,然后通過模板類定義對象。
11.A標識符是一個以字母或下畫線開始的,由字母、下畫線和數(shù)字組成的字符串,標識符不能與任意關(guān)鍵字同名。
12.D本題考查C++標識符的命名規(guī)則,其規(guī)則有如下幾點:①所有標識符必須由字母、數(shù)字或下畫線組成,且必須由字母或下畫線開頭;②所有標識符不能使用C++已有的關(guān)鍵字;③大、小寫字母表示不同意義,即代表不同的標識符。選項C中雖然retum是關(guān)鍵字,但因首字母大、小寫不同,也可用于標識符,但不建議使用。故答案為D。
13.C外部變量i實際上記錄的是調(diào)用構(gòu)造函數(shù)的次數(shù)。
14.DD?!窘馕觥吭贑語言中if關(guān)鍵字后的一對圓括號中的表達式可以是c語言中任意合法的表達式。
15.DD?!窘馕觥緾++中對函數(shù)模板的調(diào)用有時候只使用了函數(shù)實參,而沒有使用模板實參,模板實參都被省略了,但模板實參的省略并不是必然的,而是有條件的:從模板函數(shù)實參表獲得的信息有矛盾;需要蕕得特定類型的返回值,而不管參數(shù)的類型如何;虛擬類型參數(shù)不出現(xiàn)在模板函數(shù)的形參中;函數(shù)模板含有常規(guī)形參。題中定義的函數(shù)模板中虛擬類型參數(shù)T2沒有出現(xiàn)在模板數(shù)的形參列表中,所以在調(diào)用時不能省略,D選項的調(diào)用省略了T3,這是允許的。
16.CC?!窘馕觥縀—R(Entity—Relationship)圖為實體一聯(lián)系圖,提供了表示實體型、屬性和聯(lián)系的方法,用來描述現(xiàn)實世界的概念模型。
17.A解析:數(shù)據(jù)結(jié)構(gòu)作為計算機的一門學(xué)科,主要研究和討論以下三個方面的問題:①數(shù)據(jù)集合中各數(shù)據(jù)元素之間所固有的邏輯關(guān)系,即數(shù)據(jù)的邏輯結(jié)構(gòu);②在對數(shù)據(jù)進行處理時,各數(shù)據(jù)元素在計算機中的存儲關(guān)系,即數(shù)據(jù)的存儲結(jié)構(gòu);③對各種數(shù)據(jù)結(jié)構(gòu)進行的運算。
18.C本題考查的知識點是:模板。在C++語言中,模板只有兩類:函數(shù)模板和類模板。故本題應(yīng)該選擇C。
19.A解析:本題考查了常對象與常成員函數(shù)的概念。使用const關(guān)鍵字修飾的對象稱為常對象,它的特點是不能被更新;使用const關(guān)鍵字聲明的成員函數(shù)稱為常成員函數(shù),它的特點也是不能更新對象的數(shù)據(jù)成員。因為其他成員函數(shù)沒有這個限制,即可以更新對象的數(shù)據(jù)成員,所以通過常對象只能調(diào)用常成員函數(shù)而不能調(diào)用其他成員函數(shù),而且常成員函數(shù)也只能調(diào)用常成員函數(shù)而不能調(diào)用其他成員函數(shù),否則它們的特性就會被打破。故應(yīng)該選擇A。
20.B解析:本題非常簡單,考查C++中基本的輸出語句,注意不要與C語言的輸出控制字符混淆。
21.B本題考查指向數(shù)組的指針,本題中指針變量P指向數(shù)組a,直接使用數(shù)組下標即可取值,數(shù)組F標是從0開始標號的,所以a[2]能取到5,而a[3]取不到5,(:選項中使用指針后移方法能夠取到5,D選項中*P為1,所以*P+4為5。
22.D解析:靜態(tài)數(shù)據(jù)成員必須在類體外初始化,它是類的所有對象的共有成員,需要使用類名調(diào)用,靜態(tài)數(shù)據(jù)成員的初始化與權(quán)限控制無關(guān)。
23.D解析:本題中直接使用指針變量k,但在使用時要注意對k的指針運算,此外,一開始應(yīng)認為*k的值為數(shù)組中的某一下標值,即*k=0。
24.數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫系統(tǒng)解析:數(shù)據(jù)庫系統(tǒng)通過三層模式、兩級映射保證了數(shù)據(jù)庫的數(shù)據(jù)獨立性,而其他人工管理和文件系統(tǒng)均無法保證數(shù)據(jù)的獨立性。
25.格式化模型格式化模型解析:層次模型與網(wǎng)狀模型屬于格式化模型。
26.a=3b=2a=3,b=2解析:本題考查函數(shù)間引用傳遞的知識點。g(a)執(zhí)行之后,返回值為1,a也變?yōu)?,這就是引用傳遞的特點。然后執(zhí)行f(1),返回值為2,此時a=2+1,故a此時為3。由于f(b)不具有引用傳遞的特征,因此,執(zhí)行后b=0+2,結(jié)果為2。
27.友元友元解析:友元函數(shù)是對應(yīng)于當(dāng)前類的外部函數(shù),但它可以訪問該類的所有成員。友元函數(shù)不是當(dāng)前類的成員函數(shù),可以是另外一個類的成員函數(shù)。在類中聲明友元函數(shù)時,需要在函數(shù)名前加關(guān)鍵字friend。
28.(*p)(xy)(*p)(x,y)解析:一個函數(shù)總是占用一段連續(xù)的內(nèi)存區(qū),而函數(shù)名就是該函數(shù)所占內(nèi)存區(qū)的首地址。我們可以把函數(shù)的這個首地址(或稱入口地址)賦予一個指針變量,使該指針變量指向該函數(shù)。然后通過指針變量就可以找到并調(diào)用這個函數(shù)。我們把這種指向函數(shù)的指針變量稱為“函數(shù)指針變量”。函數(shù)指針變量定義的一般形式為:類型說明符(*指針變量名)();其中“類型說明符”表示被指函數(shù)的返回值的類型?!?*指針變量名)”表示“*”后面的變量是定義的指針變量。最后的空括號表示指針變量所指的是一個函數(shù)。
29.00*0O***00*****0
30.3
31.基類的構(gòu)造函數(shù)基類的構(gòu)造函數(shù)
32.一對多一對多解析:實體集“項目主管”與實體集“項目”的聯(lián)系屬于一對多的聯(lián)系。
33.面向?qū)ο竺嫦驅(qū)ο?/p>
34.關(guān)系關(guān)系
35.C++36.(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;”。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;”是在程序中引入標準命名空間std,對于C++中引入標準命名空間的格式,缺少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個標識應(yīng)該用流成員函數(shù)put輸出字符,所以第3處的語句修改為“out1.put(s[i]);”。
38.(1)應(yīng)添加“public:”。
\n(2)“inti”應(yīng)改為“inti(10);”。
\n(3)“i++;”應(yīng)改為“i--;”。
\n【解析】本題主要考查的是成員的訪問屬性。成員的訪問屬性有公有、保護和私有3種,而默認的訪問屬性為私有,只有公有成員才能通過類的對象被訪問。故應(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)永遠不會退出。
39.(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);”。
40.(1)“voidmain”。(2)“intm=0144;”。(3)“intn=OX25;”或“intn===0x25;”?!窘馕觥勘绢}主要考查了主函數(shù)定義及冪同進制之間的轉(zhuǎn)換,包括十進制到八進制,十進制到十六進制。主函數(shù)定義的定義形式為“main”,函數(shù)名之后必須是一對括號,因此第1處應(yīng)改為“voidmain”。cout輸出默認是以十進制方式輸出的,根據(jù)題目要求輸出的結(jié)果可發(fā)現(xiàn)變量的初值不正確,十進制的100對應(yīng)八進制的144,卡進制的37對應(yīng)十六進制的25,因此2和3應(yīng)分別改成“intm=0144;”,“intn=0×25;”或“intn=0×25;”。41.(1)應(yīng)改為“TC::TC”。(2)應(yīng)改為“voidTC::display”。(3)應(yīng)改為“TC::~TC”?!窘馕觥吭陬惖耐獠慷x成員函數(shù)時,必須在成員函數(shù)前面加上類名和作用域運算符“::”,作用域運算符用采表示某個成員屬于哪個類,使用格式為“(類名)::<成員函數(shù)>((參數(shù)函數(shù))),因此第1處應(yīng)改為“TC::TC”,默認構(gòu)造函數(shù)沒有參數(shù)。由第2處“TC::display”后的語句看,這是在類外實現(xiàn)TC函數(shù),因此也有作用域運算符使用錯誤問題,display函數(shù)返回值為void,因此第2處的語句應(yīng)改為“voidTC::display”。由第3處的語句“TC::TC”可知,顯然這里是在類外實現(xiàn)析構(gòu)函數(shù),析構(gòu)函數(shù)是一個特殊的函數(shù),它的名稱和類名相同,并在前面加“~”字符,用采與構(gòu)造函數(shù)加以區(qū)別,因此第3處的語句應(yīng)改為“TC::~TC”。42.(1)應(yīng)改為“catch(char*s)”。(2)應(yīng)改為“cateh(inti)”。
(3)應(yīng)改為“catch(…)”。
【解析】本題中第1個標識前的異常拋出語句為“throw("error");”,其中的類型為字符串。所以對應(yīng)的異常捕捉語句catch中應(yīng)該符合這個類型,而程序中給出的語句“catch(chars)”是字符型的,所以第1處的語句修改為“catch(char*S)”。第2個標識前的異常拋出語句為“throw((int)0);”,其中的類型為int。對應(yīng)的異常捕捉語句catch中應(yīng)該符合這個類型,所以補充catch子句中的類型,否則如果找不到匹配的catch塊,系統(tǒng)就會調(diào)用一個系統(tǒng)函數(shù),使程序終止運行。即第2處的語句修改為“catch(inti)”。如果在catch子句中沒有指定異常信息的類型,那么就用刪節(jié)號“…”表示它可以捕捉任何類型的異常信息,即修改為“catch(…)”。
43.(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ù),終止標志字符)”,所以第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)”。
44.(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;”是在程序中引入標準命名空間std,對于C++中引入標準命名空間的格式,缺少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個標識應(yīng)該用流成員函數(shù)put輸出字符,所以第3處的語句修改為“out1.put(s[i]);”。
45.(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ù),終止標志字符)”,所以第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)”。
46.(1)應(yīng)添加“BA(intm){a=m;}”。
(2)應(yīng)添加“PAl(intm,intn):BA(n){
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 編譯原理課程設(shè)計
- 2025年度智能辦公大樓綠色物業(yè)全面承包服務(wù)合同3篇
- 2024年長期借款合同印花稅申報期限及延期申報規(guī)定3篇
- 物流快遞的課程設(shè)計
- 2025版企業(yè)員工工作環(huán)境改善與安全防護協(xié)議3篇
- 2025版智能設(shè)備研發(fā)生產(chǎn)合伙協(xié)議書3篇
- 2024消防工程驗收涉及的爭議調(diào)解與法律適用合同
- 第7課 戰(zhàn)國時期的社會變化
- 2025版集裝箱式臨時展覽中心租賃合同范本3篇
- 2024深圳汽車租賃合同書范本(含車輛租賃爭議解決)3篇
- 2023秋期國開電大本科《法律文書》在線形考(第一至五次考核形考任務(wù))試題及答案
- 2023-2024學(xué)年廣西貴港市六年級數(shù)學(xué)第一學(xué)期期末學(xué)業(yè)質(zhì)量監(jiān)測模擬試題含答案
- 上海某C住宅項目成本解析
- 北方民族大學(xué)床上用品投標文件
- 安全生產(chǎn)費用歸集清單(安措費清單)
- 左傳簡介完整
- 榕江縣銻礦 礦業(yè)權(quán)出讓收益計算書
- 顱腦外科手術(shù)環(huán)境及手術(shù)配合
- 長期異地安置、居住就醫(yī)備案承諾書【模板】
- GB/T 2652-2022金屬材料焊縫破壞性試驗熔化焊接頭焊縫金屬縱向拉伸試驗
- GB/T 1243-1997短節(jié)距傳動用精密滾子鏈和鏈輪
評論
0/150
提交評論