2021年內(nèi)蒙古自治區(qū)烏蘭察布市全國計算機等級考試C++語言程序設(shè)計預測試題(含答案)_第1頁
2021年內(nèi)蒙古自治區(qū)烏蘭察布市全國計算機等級考試C++語言程序設(shè)計預測試題(含答案)_第2頁
2021年內(nèi)蒙古自治區(qū)烏蘭察布市全國計算機等級考試C++語言程序設(shè)計預測試題(含答案)_第3頁
2021年內(nèi)蒙古自治區(qū)烏蘭察布市全國計算機等級考試C++語言程序設(shè)計預測試題(含答案)_第4頁
2021年內(nèi)蒙古自治區(qū)烏蘭察布市全國計算機等級考試C++語言程序設(shè)計預測試題(含答案)_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

2021年內(nèi)蒙古自治區(qū)烏蘭察布市全國計算機等級考試C++語言程序設(shè)計預測試題(含答案)學校:________班級:________姓名:________考號:________

一、1.選擇題(10題)1.設(shè)有以下程序段:inta[5]={0},*p,*q;p=a;q=a;則下列選項中,合法的運算是()。

A.p+qB.p-qC.p*qD.p%q

2.關(guān)于面向?qū)ο蟮某绦蛟O(shè)計方法,下列說法正確的是A.“封裝性”指的是將不同類型的相關(guān)數(shù)據(jù)組合在一起,作為一個整體進行處理

B.“多態(tài)性”指的是對象的狀態(tài)會根據(jù)運行時要求自動變化

C.基類的私有成員在派生類的對象中不可訪問,也不占內(nèi)存空間

D.在面向?qū)ο蟮某绦蛟O(shè)計中,結(jié)構(gòu)化程序設(shè)計方法仍有著重要作用

3.面向?qū)ο蟪绦蛟O(shè)計思想的主要特征中不包括

A.繼承性B.功能分解,逐步求精C.封裝性和信息隱藏D.多態(tài)性

4.下面關(guān)于數(shù)組的描述錯誤的是()。

A.在C++語言中數(shù)組的名字就是指向該數(shù)組第一個元素的指針

B.長度為n的數(shù)組,下標的范圍是0~n-1

C.數(shù)組的大小必須在編譯時確定

D.數(shù)組只能通過值參數(shù)和引用參數(shù)兩種方式傳遞給函數(shù)

5.若以下定義:structlink{intdata;structlink*next;}a,b,C,*p,*q;且變量a和b之間已有下圖所示的鏈表結(jié)構(gòu)。

指針p指向變量a,q指向變量c,則能夠把c插入到a和b之間并形成新的鏈表的語句組是()。

A.a.next=c;c.next=b;

B.p.next=q;q.next=p.next;

C.q->next=p->next;p->next=&c;

D.(*p).next=c;(*q).next=b;

6.流程控制語句的基本控制結(jié)構(gòu)有三種,不屬于這一種結(jié)構(gòu)的是()。

A.順序結(jié)構(gòu)B.選擇結(jié)構(gòu)C.循環(huán)結(jié)構(gòu)D.計算結(jié)構(gòu)

7.設(shè)棧S的初始狀態(tài)為空。元素a,b,c,d,e,f依次通過棧S,若出棧的順序為b,d,c,f,e,a,則棧S的容量至少應該為

A.3B.4C.5D.6

8.下列敘述中,正確的是

A.用E-R圖能夠表示實體集間一對一的聯(lián)系、一對多的聯(lián)系和多對多的聯(lián)系

B.用E-R圖只能表示實體集之間一對一的聯(lián)系

C.用E—R圖只能表示實體集之間一對多的聯(lián)系

D.用E—R圖表示的概念數(shù)據(jù)模型只能轉(zhuǎn)換為關(guān)系數(shù)據(jù)模型

9.有如下程序:#include<iostream>usingnamespaeestd;classA{public:A(inti):rl(i){}voidprint(){cout<<'E'<<rl<<'-';}voidprint()const}cout<<'C'<<rl*rl<<'-';}private:intrl;};intmain(){Aal(2);eonstAa2(4);a1.print();a2.print();return0;}程序的輸出結(jié)果是

A.運行時出錯B.E2-C16-C.C4-C16-D.E2-E4-

10.關(guān)系數(shù)據(jù)庫管理系統(tǒng)能實現(xiàn)的專門關(guān)系運算包括()。

A.排序、索引、統(tǒng)計B.選擇、投影、連接C.關(guān)聯(lián)、更新、排序D.顯示、打印、制表

二、單選題(13題)11.

12.下列有關(guān)類繼承的敘述中,錯誤的是()。

A.繼承可以實現(xiàn)軟件復用

B.虛基類可以解決由多繼承產(chǎn)生的二義性問題

C.派生類構(gòu)造函數(shù)要負責調(diào)用基類的構(gòu)造函數(shù)

D.派生類沒有繼承基類的私有成員

13.以下程序的正確運行結(jié)果是()。#include<iostream.h>intfun(int);voidmain(){inta=2,i;for(i=0;i<3;i++)cout<<fun(a)<<end1;cout<<end1;}intfun(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);}

A.4,5,6B.6,7,9C.7,8,9D.7,7,7

14.下列字符數(shù)組的初始化,正確的是()。A.charch[5]={"a","b","c","d","e"};

B.charch[]={"a","b"};

C.charch[15]={"welcometochina"};

D.charch[14]={"Iamastudent"};

15.運算符重載是對已有的運算符賦予多重的含義,所以()。

A.能夠?qū)绢愋蛿?shù)據(jù)(如double),重新定義"+"運算符的含義

B.只能重載C++中己經(jīng)有的運算符,不能重新定義新運算符

C.能夠改變一個已有運算符的優(yōu)先級和操作數(shù)個數(shù)

D.C++中現(xiàn)有的所有運算符都可以重載

16.下列關(guān)于模板的描述中,錯誤的是()。

A.類模板的成員函數(shù)都是模板函數(shù)

B.函數(shù)模板是一種參數(shù)化類型的函數(shù)

C.滿足一定條件時可以省略模板實參

D.模板形參只能由關(guān)鍵字typename聲明

17.負責數(shù)據(jù)庫中查詢操作的數(shù)據(jù)庫語言是()。

A.數(shù)據(jù)定義語言B.數(shù)據(jù)管理語言C.數(shù)據(jù)操縱語言D.數(shù)據(jù)控制語言

18.有如下程序:#included<iostream>usingnamespacestd;classTestClass{inta;pubIic:TestClass(intx){a=x;}voidshow(){cout<<a;)};classTestClassl:publicTestClass{intb;public:TestClassl(inti):TestClass(i+1),b(i){}voidshow(){cout<<b;)};intmain(){TestClassb(5),*P;TestClassld(1):p=&d;p->show();return0;}該程序運行后的打印結(jié)果是()。A.5B.1C.0D.2

19.在進行了任何C++流的操作后,都可以用C++流的有關(guān)成員函數(shù)檢測流的狀態(tài),其中只能用于檢測剛進行的操作是否失敗函數(shù)名是()。

A.failB.eofC.badD.good

20.下列關(guān)于對象初始化的敘述中,正確的是A.定義對象的時候不能對對象進行初始化

B.定義對象之后可以顯式地調(diào)用構(gòu)造函數(shù)進行初始化

C.定義對象時將自動調(diào)用構(gòu)造函數(shù)進行初始化

D.在一個類中必須顯式地定義構(gòu)造函數(shù)實現(xiàn)初始化

21.在公有派生情況下,有關(guān)派生類對象和基類對象的關(guān)系,下列敘述不正確的是()

A.派生類的對象可以賦給基類的對象

B.派生類的對象可以初始化基類的引用

C.派生類的對象可以直接訪問基類中的成員

D.派生類的對象的地址可以賦給指向基類的指針

22.在C++語言中,打開一個文件就是將這個文件與一個()建立關(guān)聯(lián)。

A.流B.類C.結(jié)構(gòu)D.對象

23.有如下程序:#include<iostream>usingnamespacestd;classBase{public:voidfunl{cout<<”Base\n”;}virtualvoidfun2{eout<<”Base\n”;}};classDerived:publicBase{public:voidfunl{eout<<”Derived、n”;}voidfura{eout<.<”Derived\n”;}};voidf(Base&B.}b.funl;b.ftm2;}intmain{Derivedobj;f(obj);return0;}執(zhí)行這個程序的輸出結(jié)果是()。A.BaseBaseB.BaseDerivedC.DerivedBaseD.DerivedDerived

三、2.填空題(12題)24.下面程序的功能是將字符數(shù)組a中下標值為偶數(shù)的元素從小到大排列,其他元素不變,請?zhí)羁铡?/p>

#include<iostream.h>

#include<string.h>

voidmain()

{chara[]="clanguage",t;

inti,j,k;

k=strlen(a);

for(i=0;i<=k-2;i+=2)

for(j=i+2;j<=k;【】=

if(【】)

{t=a[i];a[i]=a[j];a[j]=t;}

cout<<a;

cout<<end1;=

25.設(shè)棧S和隊列Q的初始狀態(tài)為空,元素e1、e2、e3、e4、e5和e6依次通過棧S,一個元素出棧后即進入隊列Q,若6個元素出隊的順序是e2、e4、e3、e6、e5、e1,則棧S的容量至少應是【】。

26.表達式x=operator-(y,z)可以表示為【】。

27.C++語言的參數(shù)傳遞機制包括傳值和傳地址兩種,如果調(diào)用函數(shù)時,需要改變實參或者返回多個值,應該采取【】方式。

28.指針數(shù)組是由______構(gòu)成的數(shù)組。

29.數(shù)據(jù)流圖中父圖和子圖的平衡是指【】。

30.在結(jié)構(gòu)化分析中,用于描述加工邏輯的主要工具有三種,即:結(jié)構(gòu)化語言、判定表、【】。

31.【】是C++語言程序的入口。

32.診斷和改正程序中錯誤的工作通常稱為______。

33.在編譯時才確定的函數(shù)調(diào)用稱為【】,它是通過使用【】來實現(xiàn)的。

34.帶有【】的類稱為抽象類,它只能作為【】來使用。

35.虛函數(shù)必須是類的【】。

四、程序改錯題(10題)36.使用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;}

37.使用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;}

38.使用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;

}

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é)果為Constructor,i=0,Destructor注意:錯誤的語句在//******error******的下面,修改該語句即可。試題程序:#include(iostream.h)classTC{inti;public:TC;voiddisplay;~TC;};//******error******TC:TC{cout<<"Constructor"<<",";i=0;)//******error******TC:display{tout<<"i="<<i<<","<<endl;}//******error******TC:TC{COUI<<"Destructor"<<endl:}voidmain{TCa;a.display;}

41.使用VC++6.0打開考生文件夾下的源程序文件1.cpp。本程序要求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可能輸入多行,當輸入字符“?”時,默認字符輸入結(jié)束,最后把結(jié)果輸出到屏幕中。

注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//******error******的下面。

試題程序:

#include<iostream.h>

voidmain

{

inti=0;

charstr[120];

cout<<"Enterastringendwith?."<<endl;

//********error********

cin.getline(str,120);

//********error********

while(str)

{

//********error********

if(str[i])=a)

str[i]=str[i]-a+A;

i++;

}

cout<<str<<endl;

return;

}

42.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行有問題,請改正main函數(shù)中的錯誤,使程序的輸出結(jié)果為:number=1number=10number=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;}

43.使用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;

}

44.使用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;

}

45.使用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;}

五、綜合應用題(2題)46.使用VC++6.0打開考生文件夾下的源程序文件3.cpp。其中定義的類不完整,按要求完成下列操作,將類的定義補充完整。(1)定義類的公有數(shù)據(jù)成員函數(shù)N0、Name[32],其中N0是int型的數(shù)據(jù),Name[32]為字符型。請在注釋1后添加適當?shù)恼Z句。(2)完成函數(shù)Set的定義,分別設(shè)置N0和Name的值,請在注釋2后添加適當?shù)恼Z句。(3)完成函數(shù)print,請在注釋3后添加適當?shù)恼Z句,輸出結(jié)果如下:N0=12345Name=HelloWorld!(4)添加默認構(gòu)造函數(shù),設(shè)置N0為0,Name為空,請在注釋4后添加適當?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。其中類TC用于把文件輸出到屏幕,然后進行文件的分割。分割的方法如下:第一個文件的大小是文件的前一半,另外一個文件的大小是剩余部分。此程序?qū)n.txt文件中的內(nèi)容輸出到屏幕,并且將文件按照以上方式分割,存于文件out1.txt和out2.txt中。其中定義的類并不完整,按要求完成下列操作,將類的定義補充完整。(1)從輸入文件中獲得一個字符,并判斷是否到文件結(jié)尾,如果到文件結(jié)尾,則退出循環(huán)。請在注釋1后添加適當?shù)恼Z句。(2)把獲得的輸入文件的內(nèi)容存儲到bur中,并且用len記錄下文件的長度。請在注釋2后添加適當?shù)恼Z句。(3)將輸入文件的后一半內(nèi)容存儲在第二個文件中,請在注釋3后添加適當?shù)恼Z句。(4)使用文件流對象打開輸入文件in.txt,請在注釋4后添加適當?shù)恼Z句。注意:增加代碼或者修改代碼的位置已經(jīng)用符號表示出來。請不要修改其他的程序代碼。試題程序:#include<iostream.h>#include<fstream.h>#include<stdlib.h)classTC{public:TC(char*fileName){len=0;fstreaminfile;infile.open(fileName,ios::in);charch;//********1********while{cout<<ch;//********2********}infile.close;}voidsplit{fstreamoutfilel;fstreamoutfile2;outfile1.open("out1.txt",ios::out);outfile2.open("out2.txt",ios::out);inti=0:for(i=0;i<len/2;i++){outfilel<<buf[i];}do{//********3********}while(i!=len);outfilel.close;outfile2.close;}prwate:intlen;charbuf[1024];};voidmain{//********4********TCobj;obj.split;return;}

六、3.綜合應用題(2題)48.使用VC6打開考生文件夾下的工程test38_3。此工程包含一個test38_3.cpp,其中定義了類complex,但類的定義并不完整。請按要求完成下列操作,將程序補充完整。

(1)添加類complex的無參數(shù)的構(gòu)造函數(shù)的定義,將私有成員real和imag都初始化為0。請在注釋“//**1**”之后添加適當?shù)恼Z句。

(2)添加類complex的帶兩個參數(shù)的重載構(gòu)造函數(shù),兩個參數(shù)r和i都是double類型,要求將r賦值給私有成員real,i賦值給私有成員imag,同時允許調(diào)用時參數(shù)i可是省略,請在注釋“//**2**”之后添加適當?shù)恼Z句。

(3)完成類complex重載加法函數(shù)的定義,該函數(shù)直接返回一個類complex的對象,同時把參數(shù)對象c的實部real和虛部imag分別與當前對象對應部分分別相加,請在注釋“//**3**”之后添加適當?shù)恼Z句。

(4)完成類complex的友元函數(shù)print的定義,使其以格式“real+imagi”輸出,請在注釋“//**4**”之后添加適當?shù)恼Z句。

源程序文件test38_3.cpp清單如下;

#include<iostream.h>

classcomplex

{

public:

//**1**

//**2**

{

real=r;imag=i;

}

complexoperator+(complex&c);

friendvoidprint(complex&c);

private:

doublereal,imag;

};

complexcomplex::operator+(complex&c)

{

//**3**

}

//**4**

cout<<c.real<<"+"<<c.imag<<"i"<<endl;

}

voidmain()

{

complexc1(2.0,3.0),c2(4.0,-2.0),c3;

c3=c1+c2;

print(c3);

c3=c3+complex(3.5);

print(c3);

}

49.使用VC6打開考生文件夾下的工程test18_3,此工程包含一個源程序文件test18_3.cpp,其中定義了用于表示雇員的類Employee,但類Employee的定義并不完整。請按要求完成下列操作,將類Employee的定義補充完整。

(1)補充類Employee的構(gòu)造函數(shù),請使用字符串函數(shù)將數(shù)據(jù)成員name,address,city,province和zipcode分別初始化為參數(shù)*nm,*addr,*city,*prov和*zip的值。請在注釋“//**1**”之后添加適當?shù)恼Z句;

(2)完成類Employee的成員函數(shù)ChangeName(char*newName)的定義,將newName指向的內(nèi)容賦值給數(shù)據(jù)成員name,請在注釋“//**2**”之后添加適當?shù)恼Z句;

(3)完成類Employee的成員函數(shù)Display()的定義,先使用指針buffer動態(tài)申請一個char型的200單位大小的空間,然后使用字符串函數(shù)將數(shù)據(jù)成員name和address依次復制其中,最后返回該指針buffer,將請在注釋“//**3**”之后添加適當?shù)恼Z句。輸出結(jié)果如下:

王東建國路大街105號

注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。

源程序文件test18_3.cpp清單如下:

#include<iostream.h>

#include<string.h>

classEmployee{

protected:

charname[20];

charaddress[100];

charcity[20];

charprovince[20];

charzipcode[10];

public:

Employee(char*nm,char*addr,char*city,char*prov,char*zip);

voidChangeName(char*newName);

char*Display();

};

Employee::Employee(char*nm,char*adr,char*cit,char*prov,char*zip)

{

//**1**

strcpy(city,cit);

strcpy(province,prov);

strcpy(zipcode,zip);

}

voidEmployee::ChangeName(char*newName)

{

//**2**

}

char*Employee::Display()

{

//**3**

strcat(buffer,address);

returnbuffer;

}

voidmain()

{

Employeeemp("李華","建國路大街105號","石家莊","河北","103400");

emp.ChangeName("王東");

cout<<emp.Display()<<end1;

}

參考答案

1.B解析:本題考核指針的運算。C++語言中,指向同一字符串的指針之間可以,也只能進行減運算,減運算后返回的是一整型數(shù),表示指針之間的地址偏移量。

2.D解析:本題考核C++程序的基本框架?!胺庋b性”指將數(shù)據(jù)和算法捆綁成一個整體,而不是將不同類型的相關(guān)數(shù)據(jù)組合在一起。C++中的多態(tài)性是指一個面向?qū)ο蟮南到y(tǒng)常常要求一組具有相同基本語義的方法能在同一接口下為不同的對象服務(wù)?;惖乃接谐蓡T在派生類的對象中不可訪問,但是也占據(jù)內(nèi)存空間。C++同時支持結(jié)構(gòu)化和面向?qū)ο髢煞N程序設(shè)計的基本框架,所以在面向?qū)ο蟮某绦蛟O(shè)計中,結(jié)構(gòu)化程序設(shè)計方法仍有著重要作用。

3.B解析:C++是一種面向?qū)ο蟮某绦蛟O(shè)計語言.,它充分支持面向?qū)ο笏枷胫械?個主要特征:封裝性、繼承性、多態(tài)性。B選項所描述是結(jié)構(gòu)化程序設(shè)計的思想。

4.D解析:本題考查的是數(shù)組的基本使用,數(shù)組還可以通過對應的指針調(diào)用傳遞參數(shù),其余選項的說法都是正確的。

5.C解析:本題考核結(jié)構(gòu)型指針的應用。當指針所指向的變量的類型為結(jié)構(gòu)類型時,這個指針就是結(jié)構(gòu)指針。題中定義了p和q為結(jié)構(gòu)指針。當訪問由指針所指向的結(jié)構(gòu)的元素時,用箭頭“->”運算符實現(xiàn)這個操作。分析各選項:

選項A中,語句“a.next=c;c.next=b;”的賦值有問題,因為結(jié)構(gòu)成員next為結(jié)構(gòu)型指針,而變量c和b只是結(jié)構(gòu)變量,不是地址值,所以達不到題目要求。

選項B中,執(zhí)行語句“p.next=q;q.next=p.next;”后,只是把a點和c點雙向連接起來了,并不能把c插入到a和b之間,形成新的鏈表。

選項C中,先讓c的后趨節(jié)點指向a的后趨節(jié)點b,再使a的后趨節(jié)點指向c。

這樣就完成了把c插入到a和b并形成新的鏈表的功能。所以選項C中的語句可完成題目所屬功能。

選項D中,(*p).next與(*q).next都是指針型變量,而賦值語句的右值c和b只是結(jié)構(gòu)型變量,所以此語句不能達到題目要求的目的。

6.D

7.A解析:根據(jù)題中給定的條件,可以作如下的模擬操作:①元素a,b進棧,棧中有2個元素,分別為a,b;②元素b出棧后,元素c,d進棧,棧中有3個元素,分別為a,c,d;③元素d,c出棧后,元素e,f進棧,棧中有3個元素,分別為a,e,f;④最后,元素f,e,a出棧,棧為空。可以看出,進棧的順序為a,b,c,d,e,f,出棧的順序為b,d,c,f,e,a,滿足題目要求。每次進棧操作后,棧中最多有3個元素,所以,為了順利完成這些操作,棧的容量應至少為3。本題的正確答案為A。

8.A解析:兩個實體之間的聯(lián)系實際上是實體集間的函數(shù)關(guān)系,這種函數(shù)關(guān)系可以有下面幾種,即一對一的聯(lián)系、一對多(或多對一)的聯(lián)系和多對多的聯(lián)系;概念模型便于向各種模型轉(zhuǎn)換。由于概念模型不依賴于具體的數(shù)據(jù)庫管理系統(tǒng),因此,容易向關(guān)系模型、網(wǎng)狀模型和層次模型等各種模型轉(zhuǎn)換。

9.B解析:在類中重載函數(shù)的情況下,常對象調(diào)用類的常成員函數(shù),非常對象調(diào)用類的非常成員函數(shù),故答案為B。

10.B解析:此題為數(shù)據(jù)庫的基本概念,可以對照辦工軟件的電子表格進行如下理解:選擇:我們根據(jù)某條件選擇出一行或多行元組(一個元組即為二維表中的一行)。投影:按字段(也稱屬性,比如學生關(guān)系(學號,姓名,出生年月,性別),學號、姓名…都是屬性)選取一列或多列(一個二維表中所有元組在某一列或幾列上截取出來)。連接:2個或2個以上的表連接組成一張新的表,通常有條件連接。比如學生關(guān)系(學號,姓名,系號),又有一張系表(系號,系名,主任),2張表可以合并為一張這樣的表(學號,姓名,系號,系名,主任)。

11.B

12.D解析:派生方式分為兩種:private派生或public派生,分別被稱為私有派生和公有派生,使用\u3000public派生,基類的所有成員在派生類中的訪問權(quán)限不變。

13.C

14.B解析:選項A中一個數(shù)組元素存放一個字符,不能存放字符串;當把字符串整體賦給字符串時,字符數(shù)組的長度要比字符串長度大1,用來存放終結(jié)符,所以選項C和選項D都不正確。

15.B解析:C++在重載運算符時,必須符合以下的條件:

①不可以重載內(nèi)置的C++數(shù)據(jù)類型(如int,double等類型)運算符的含義;

②不可以定義C++中沒有的運算符;

⑨不可以改變重載運算符的優(yōu)先級與操作數(shù)的個數(shù);

④有些運算符不能被重載,例如域運算符(::),條件運算符(?:)等,具體哪些運算符不能被重載與編譯器有關(guān)。

16.DD?!窘馕觥縯emplate<typename(或class)數(shù)據(jù)類型參數(shù)標識符>。

17.C數(shù)據(jù)定義語言:負責數(shù)據(jù)的模式定義與數(shù)據(jù)的物理存取構(gòu)建;數(shù)據(jù)操縱語言:負責數(shù)據(jù)的操縱,包括查詢及增加、刪除、修改等操作;數(shù)據(jù)控制語言:負責數(shù)據(jù)完整性、安全性的定義與檢查以及并發(fā)控制、故障恢復等功能。因此本題答案為C)。

18.DD?!窘馕觥縏estClass為TestClass1的基類,在主函數(shù)main中定義TestClass對象b,*P。TestClass1對象d,P指向d,調(diào)用其show函數(shù)?!癟estClass(inti):TestClass(i+1),b(i){}”語句中的TestClass基類參數(shù)為2,所以show輸出2。

19.A解析:C++中可以用文件流對象的下列成員函數(shù)來判別文件流的當前狀態(tài)。

①函數(shù)isopen():判定流對象是否與一個打開的文件相聯(lián)系,若是,返回true,否則返回false。

②函數(shù)good():剛進行的操作成功時返回true,否則返回false。

③函數(shù)fail():與good()相反,剛進行的操作失敗時返回true,否則返回false。

④函數(shù)bad():如果進行了非法操作返回true,否則返回false。

⑤函數(shù)eof():進行輸入操作時,若到達文件尾返回true,否則返回false。

其中,eof函數(shù)只能用于輸入流操作。

20.C解析:構(gòu)造函數(shù)的作用是在對象被創(chuàng)建的時候?qū)ο筮M行初始化。構(gòu)造函數(shù)在對象被創(chuàng)建的時候由系統(tǒng)自動調(diào)用。故C項正確。

21.C解析:友元函數(shù)的定義既可以在類內(nèi)部進行,也可以在類外部進行。它提高了程序的運行效率,但破壞了類的封裝性和隱藏性,使得類的非成員函數(shù)可以訪問類的私有成員。

22.Ac++的V0系統(tǒng)是通過一一種稱為流的機制來實現(xiàn)文件和控制臺的I/0操作的。簡單地說,在C++中,輸入/輸出操作是通過流來完成的。而文件流以磁盤文件及其他可按文件方式進行管理的外部設(shè)備為輸入/輸出對象。每個文件流都應當與一個打開的文件相聯(lián)系;關(guān)閉卟文件就是取消這種聯(lián)系。

23.B在某基類中聲明為virtual并在一個或多個派生類中被重新定義的成員函數(shù),本題中定義r一個派生類對象0bi,執(zhí)行f函數(shù)后,將派生類對象0bj轉(zhuǎn)化為基類對象,由于fun1不是虛函數(shù),所以輸出基類的fun1;而fun2是虛函數(shù),所以輸出派生類的fun2,所以本題答案為8。

24.j+=2]a[i]>=a[j]或a[i]>a[j]j+=2\r\n]a[i]>=a[j]或a[i]>a[j]解析:strlen函數(shù)是測試字符串長度的函數(shù),函數(shù)的值為字符串中的實際長度,不包括'\\0'在內(nèi)。

25.大于3大于3解析:棧的操作原則“后進先出”,隊列的操作原則“先進后出”。出隊列順序即為入隊列順序,而入隊列順序也就是出棧順序是:e2、e4、e3、e6、e5、e1。為得到出棧順序為e2、e4、e3、e6、e5、e1。則入棧操作應為e1、e2進棧,e2出棧。(進棧后有e1、e2,出棧后僅有e1)e3、e4進棧,e4、e3出棧。(進棧后有e1、e3、e4,出棧后僅有e1)e5、e6進棧,e5、e6、e1出棧。(進棧后有el、e5、e6,出棧后為空)。

26.x=y-2

27.傳地址傳地址解析:本題考查的是傳值調(diào)用和傳址調(diào)用的區(qū)別——傳值調(diào)用只是進行值的簡單復制,返回之后不會改變原來的值;而傳址調(diào)用是把參數(shù)的地址傳入,會改變原來的值。

28.指針變量指針變量

29.子圖的輸入、輸出數(shù)據(jù)流同父圖中的輸入輸出完全一致子圖的輸入、輸出數(shù)據(jù)流同父圖中的輸入輸出完全一致解析:數(shù)據(jù)流圖中父圖和子圖應平衡,即子圖的輸入、輸出數(shù)據(jù)流同父圖中的輸入輸出完全一致。

30.判定樹判定樹

31.main()函數(shù)main()函數(shù)解析:main()是C++語言的入口函數(shù)。注意:main()函數(shù)可以放在程序的任何位置

32.程序調(diào)試程序調(diào)試

33.靜態(tài)聯(lián)編、重載函數(shù)靜態(tài)聯(lián)編、重載函數(shù)解析:靜態(tài)聯(lián)編的定義:在編譯時才確定的函數(shù)調(diào)用稱為靜態(tài)聯(lián)編,它是通過使用重載函數(shù)來實現(xiàn)的。

34.純虛函數(shù)基類純虛函數(shù)基類

35.成員函數(shù)成員函數(shù)解析:C++中,只有類的成員函數(shù)才能說明為虛函數(shù)。這是因為,虛函數(shù)僅適用于有繼承關(guān)系的類對象,所以普通函數(shù)不能說明為虛函數(shù)。

36.(1)“voidmain”。(2)“intm=0144;”。(3)“intn=OX25;”或“intn===0x25;”。【解析】本題主要考查了主函數(shù)定義及冪同進制之間的轉(zhuǎn)換,包括十進制到八進制,十進制到十六進制。主函數(shù)定義的定義形式為“main”,函數(shù)名之后必須是一對括號,因此第1處應改為“voidmain”。cout輸出默認是以十進制方式輸出的,根據(jù)題目要求輸出的結(jié)果可發(fā)現(xiàn)變量的初值不正確,十進制的100對應八進制的144,卡進制的37對應十六進制的25,因此2和3應分別改成“intm=0144;”,“intn=0×25;”或“intn=0×25;”。

37.(1)應改為“catch(char*s)”。(2)應改為“cateh(inti)”。(3)應改為“catch(…)”。【解析】本題中第1個標識前的異常拋出語句為“throw("error");”,其中的類型為字符串。所以對應的異常捕捉語句catch中應該符合這個類型,而程序中給出的語句“catch(chars)”是字符型的,所以第1處的語句修改為“catch(char*S)”。第2個標識前的異常拋出語句為“throw((int)0);”,其中的類型為int。對應的異常捕捉語句catch中應該符合這個類型,所以補充catch子句中的類型,否則如果找不到匹配的catch塊,系統(tǒng)就會調(diào)用一個系統(tǒng)函數(shù),使程序終止運行。即第2處的語句修改為“catch(inti)”。如果在catch子句中沒有指定異常信息的類型,那么就用刪節(jié)號“…”表示它可以捕捉任何類型的異常信息,即修改為“catch(…)”。

38.(1)應改為“assert(sizeof(s1)==4);”。

\n(2)應改為“assert(sizeof(s2)==1O);”。

\n(3)應改為“assert(sizeof(s3)==1);”。

\n【解析】assert函數(shù)如果為假,則會產(chǎn)生一個中斷異常。所以要讓它正常執(zhí)行輸出結(jié)果,那么assert函數(shù)只有為真,才不會產(chǎn)生中斷異常?!癮ssert(sizeof(s1)==3);”語句中“sizeof(s1)==3”為假,這會使程序產(chǎn)生異常,不能正常執(zhí)行。因為str1的值為abc,但是它還有一個尾符,它的長度應該是4,而不是3,所以在第1處修改為“assert(sizeof(s1)==4);”。str2[10]說明,str2的空間為10,在第2處修改為“assert(sizeof(s2)==10);”。charstr3=23;語句說明23是字符,所占存儲空間為1,所以修改為“assert(sizeof(s3)==1);”。

39.(1)應改為“TCobjl(1);”。

\n(2)應改為“0bj1.SetNumber(10);”。

\n(3)應改為“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;”應該是調(diào)用成員函數(shù)SetNumber賦值。在C++中成員函數(shù)的使用形式應該是:對象名.成員函數(shù),所以修改為“obj1.SetNumber(10);”。類是對象的抽象,而對象是類的具體實例。第3處“TC.SetNumber(100);”語句中的TC為類,并不是對象,這里應該使用定義的對象,即obj2,所以將語句修改為“obj2.SetNumber(100);”。

40.(1)應改為“TC::TC”。(2)應改為“voidTC::display”。(3)應改為“TC::~TC”。【解析】在類的外部定義成員函數(shù)時,必須在成員函數(shù)前面加上類名和作用域運算符“::”,作用域運算符用采表示某個成員屬于哪個類,使用格式為“(類名)::<成員函數(shù)>((參數(shù)函數(shù))),因此第1處應改為“TC::TC”,默認構(gòu)造函數(shù)沒有參數(shù)。由第2處“TC::display”后的語句看,這是在類外實現(xiàn)TC函數(shù),因此也有作用域運算符使用錯誤問題,display函數(shù)返回值為void,因此第2處的語句應改為“voidTC::display”。由第3處的語句“TC::TC”可知,顯然這里是在類外實現(xiàn)析構(gòu)函數(shù),析構(gòu)函數(shù)是一個特殊的函數(shù),它的名稱和類名相同,并在前面加“~”字符,用采與構(gòu)造函數(shù)加以區(qū)別,因此第3處的語句應改為“TC::~TC”。

41.(1)應改為“ein.getline(str,120,?);”。

\n(2)應改為“while(str[i])”。

\n(3)應改為“if(str[i]>=a&&str[i]<=2)”。

\n【解析】本題中要求以輸入字符“?”為結(jié)束符,用于字符輸入的流成員函數(shù)getline函數(shù)讀入一行字符,格式為“cin.getline(字符數(shù)組,字符個數(shù),終止標志字符)”,所以第1處改為“cin.getline(str,120,?);”。第2處的“while(str)”語句應該是判斷字符串str中的每一個字符是否為結(jié)束符,若不是結(jié)束符,在循環(huán)中判斷每一個字符是否為小寫,若為小寫,則轉(zhuǎn)換。所以應該修改為“while(str[i])”。第3處的“if(str[i]>=a)”語句是判斷字符str[i]是否為小寫字符,而現(xiàn)有的語句只是判斷字符是否大于a,但是小寫字符應該是a到2,所以修改為“if(str[i]>=a&&str[i]>=z)”。

42.(1)應改為“TCobjl(1);”。(2)應改為“0bj1.SetNumber(10);”。(3)應改為“0bj2.SelNumber(100);”?!窘馕觥勘绢}第1處的“TCobjl;”語句是聲明TC類的對象0bj1,根據(jù)TC類構(gòu)造函數(shù)的定義TC(inti),存在整型參數(shù),并且題目要求第一個輸出結(jié)果兩1,所以補全參數(shù)1,即第1處的“TCobjl(1);”。第2處處的“objl.number=10;”應該是調(diào)用成員函數(shù)SetNumber賦值。在C++中成員函數(shù)的使用形式應該是:對象名.成員函數(shù),所以修改為“obj1.SetNumber(10);”。類是對象的抽象,而對象是類的具體實例。第3處“TC.SetNumber(100);”語句中的TC為類,并不是對象,這里應該使用定義的對象,即obj2,所以將語句修改為“obj2.SetNumber(100);”。

43.(1)應改為“catch(char*s)”。(2)應改為“cateh(inti)”。

(3)應改為“catch(…)”。

【解析】本題中第1個標識前的異常拋出語句為“throw("error");”,其中的類型為字符串。所以對應的異常捕捉語句catch中應該符合這個類型,而程序中給出的語句“catch(chars)”是字符型的,所以第1處的語句修改為“catch(char*S)”。第2個標識前的異常拋出語句為“throw((int)0);”,其中的類型為int。對應的異常捕捉語句catch中應該符合這個類型,所以補充catch子句中的類型,否則如果找不到匹配的catch塊,系統(tǒng)就會調(diào)用一個系統(tǒng)函數(shù),使程序終止運行。即第2處的語句修改為“catch(inti)”。如果在catch子句中沒有指定異常信息的類型,那么就用刪節(jié)號“…”表示它可以捕捉任何類型的異常信息,即修改為“catch(…)”。

44.(1)應添加“public:”。

\n(2)“inti”應改為“inti(10);”。

\n(3)“i++;”應改為“i--;”。

\n【解析】本題主要考查的是成員的訪問屬性。成員的訪問屬性有公有、保護和私有3種,而默認的訪問屬性為私有,只有公有成員才能通過類的對象被訪問。故應在構(gòu)造函數(shù)前添加“public:”,否則該類無法被實例化。變量的初始化可以通過“=”號,也可以和初始化對象一樣添加構(gòu)造參數(shù),題目已要求使用后者。本題要求輸出5個數(shù),while的循環(huán)變量i每次減1,在i>5時循環(huán),故i初始化應為10。若循環(huán)中i每次增1,則循環(huán)永遠不會退出。

45.(1)應改為“usingna

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論