2023年黑龍江省黑河市全國計算機等級考試C++語言程序設計預測試題(含答案)_第1頁
2023年黑龍江省黑河市全國計算機等級考試C++語言程序設計預測試題(含答案)_第2頁
2023年黑龍江省黑河市全國計算機等級考試C++語言程序設計預測試題(含答案)_第3頁
2023年黑龍江省黑河市全國計算機等級考試C++語言程序設計預測試題(含答案)_第4頁
2023年黑龍江省黑河市全國計算機等級考試C++語言程序設計預測試題(含答案)_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2023年黑龍江省黑河市全國計算機等級考試C++語言程序設計預測試題(含答案)學校:________班級:________姓名:________考號:________

一、1.選擇題(10題)1.單個用戶使用的數(shù)據(jù)視圖的描述稱為______。

A.外模式B.概念模式C.內(nèi)模式D.存儲模式

2.下述關于break語句的描述中,______是不正確的。

A.break語句可用于循環(huán)體內(nèi),它將退出該循環(huán)

B.break語句可用于switch語句中,它將退出switch語句

C.break語句可用于if體內(nèi),它將退出if語句

D.break語句在一個循環(huán)內(nèi)可以出現(xiàn)多次

3.在ios中提供的格式控制標志位中,()是轉(zhuǎn)換八進制的。

A.hexB.decC.octD.bin

4.C++中“<<”是一個()符號

A.用于輸出的非成員函數(shù)B.用于輸出操作的成員函數(shù)C.用于輸入的非成員函數(shù)D.用于輸入操作的成員函數(shù)

5.下面對二維數(shù)組s的初始化語句,正確的是()。

A.inta[2][3]={{1,2},{3,4},{5,6}}

B.inta[2][3]={{1,2,3},4,5,6};

C.inta[2][]={1,2,3,4,5,6};

D.inta[][]={1,2,3,4,5,6};

6.以下使用不當會破壞面向程序設計特性的是

A.派生類B.虛函數(shù)C.抽象類D.靜態(tài)函數(shù)

7.對下列二叉樹進行中序遍歷的結(jié)果是

A.ZBTYCPXAB.ATBZXCYPC.TZBACYXPD.ATBZXCPY

8.下列程序的運行結(jié)果為

#include<iostream.h>

voidprint(doublea)

{

cout<<++a;

}

voidprint(inta,intb)

{

cout<<b<<a;

}

voidmain()

{

print(1.2);

tout<<"";

print(3,4);

}

A.1.234B.2.234C.1.243D.2.243

9.若調(diào)用一個函數(shù),且此函數(shù)中沒有return語句,則正確的說法是該函數(shù)()。

A.沒有返回值B.返回若干個系統(tǒng)默認值C.有返回值,但返回一個不確定的值D.返回一個用戶所希望的函數(shù)值

10.在“文件包含”預處理語句的使用形式中,當#include后面的文件名用“”括起時,尋找被包含文件的方式是A.直接按系統(tǒng)設定的標準方式搜索目錄

B.先在源程序所在的目錄搜索,再按系統(tǒng)設定的標準方式搜索

C.僅僅搜索源程序所在目錄

D.僅僅搜索當前目錄

二、單選題(13題)11.派生類對象對其基類中的什么成員是可訪問的?()

A.公有繼承的私有成員B.私有繼承的公有成員C.私有繼承的保護成員D.保護繼承的保護成員

12.數(shù)據(jù)庫系統(tǒng)的三級模式不包括()。

A.概念模式B.內(nèi)模式C.外模式D.數(shù)據(jù)模式

13.若為Fraction類重裁前增1運算符++,應在類體中將其聲明為()。

A.A.Fraction&poerator++();

B.B.Fraction&poeralor++(int);

C.C.friendFraction&operator++();

D.D.friendFraction&operator++(int);

14.有如下模板聲明:

template<typenameT1,typenameT2>classA;

下列聲明中,與上述聲明不等價的是A.template<classT1,classT2>classA;

B.template<classT1,typenameT2>classA;

C.template<typenameTI,classT2>classA;

D.template<typenameT1,T2>classA;

15.一個工作人員可以使用多臺計算機,而一臺計算機可被多個人使用,則實體工作人員與實體計算機之間的聯(lián)系是()。

A.一對一B.一對多C.多對多D.多對一

16.數(shù)據(jù)庫系統(tǒng)的核心是()

A.數(shù)據(jù)庫B.數(shù)據(jù)庫管理系統(tǒng)C.模擬模型D.軟件工程

17.判斷char型變量c是否為小寫字母的正確表達式是()。

A.'a'<=c<='z'

B.(c>=A)&&(c<=z=

C.('a'>=c)||('z'<=c)

D.(c>='a')&&(c<='z')

18.如果類A被說明成類B的友元,則()。A.A.類A的成員即類B的成員

B.類B的成員即類A的成員

C.類A的成員函數(shù)不得訪問類B的成員

D.類B不一定是類A的友元

19.線性表L=(a1,a2,a3,…ai,…an),下列說法正確的是()

A.每個元素都有一個直接前件和直接后件

B.線性表中至少要有一個元素

C.表中諸元素的排列順序必須是由小到大或由大到小

D.除第一個元素和最后一個元素外,其余每個元素都有一個且只有一個直接前件和直接后件

20.

21.if語句的語法格式可描述為:格式1:if(<條件>)<語句>或格式2:if(<條件>)<語句1>else<語句2>關于上面的語法格式,下列表述中錯誤的是A.<條件>部分可以是一個if語句,例如if(if(a==0)…)…

B.<語句>部分可以是一個if語句,例如if(…)if(…)…

C.如果在<條件>前加上邏輯非運算符!并交換<語句1>和<語句2>的位置,語句功能不變

D.<語句>部分可以是一個循環(huán)語句,例如if(…)while(…)…

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

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

23.運算符重載時不需要保持的性質(zhì)是_________。

A.操作數(shù)個數(shù)B.操作數(shù)類型C.優(yōu)先級D.結(jié)合性

三、2.填空題(12題)24.函數(shù)swap(arr,n)可完成對arr數(shù)組從第1個元素到第n個元素兩兩交換。在運行調(diào)用函數(shù)中的語句后,a[0]和a[1]的值分別為【】。

a[0]=1;a[1]=2;swap(a,2);

25.若要打開二進制文件binfile寫方式,輸出到文件尾則應為:ofstreambfile("binfile",______);

26.語句cout<<'\n'還可表示為【】。

27.根據(jù)下面的主程序,完成類的一種構(gòu)造函數(shù)的最簡單形式。

#include<iostream.h>

classbase

{

private:

intnum;

public:

【】;

};

voidmain()

{

basetry(6);

}

28.多態(tài)性可分為二類:編譯時和【】。

29.友元類的所有成員函數(shù)都是另一個類的【】。

30.用樹型結(jié)構(gòu)表示實體類型及實體間聯(lián)系的數(shù)據(jù)模型稱為【】。

31.有以下面程序:

#include<iostream>

usingnamespacestd;

longfib(intn)

{

if(n>2)

return(fib(n-1)+fib(n-2));

else

return2;

}

intmain()

{

cout<<fib(3)<<end1;

rcturn0;

}

則該程序的輸出結(jié)果應該是【】。

32.數(shù)據(jù)庫的設計通??梢苑譃檫@樣4個步驟:需求分析、概念設計、【】和物理設計。

33.在下面函數(shù)的橫線處填上適當?shù)膬?nèi)容使該函數(shù)能夠利用遞歸方法求解字符串str的長度(不得使用系統(tǒng)提供的字符串處理函數(shù))。

intGetLen(char*str

{

if(【】)return【】;

elsereturn1+GetLen(str+1);

}

34.如下程序的輸出結(jié)果是______。

#include<iostream>

usingnamespacestd;

classWages{//“工資”類

doublebase;//基本工資

doublebonus;//獎金

doubletax;//稅金

public:

Wages(doubleCBase,doubleCBonus,doableCTax):

base(CBase),bonus(CBonus),tax(CTax){}

doublegetPay()const;//返回應付工資額

Wagesoperator+(Wagesw)cons[;//重載加法

};

doubleWages::getPay()cons[{returnbase+bonus-tax;}

WagesWages::operator+(Wagesw)const{returnWages(base+w.base,bonus+w.bonus,tax+w.tax);}

intmain(){

Wageswl(2000,500,100),w2(5000,1000,300);

eout<<(wl+w2).getPay()<<endl;

return0;

}

35.數(shù)據(jù)結(jié)構(gòu)分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),帶鏈的隊列屬于______。

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

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

}

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

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

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。本程序要求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可能輸入多行,當輸入字符“?”時,默認字符輸入結(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,該程序運行時有錯。請改正程序中的錯誤,使程序輸出的結(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;}45.使用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;}五、綜合應用題(2題)46.(1)應添加“BA(intm){a=m;}”。

(2)應添加“PAl(intm,intn):BA(n){b=m;}”。

(3)應添力Ⅱ“PA2(intm,intn,intk):PAl(n,k){C=m;)”。

(4)應添加“cout<<geta<<""<<getb<<""<<C<<endl;”。

【解析】根據(jù)第1處要求,構(gòu)造函數(shù)的函數(shù)名和類名一致,顯然BA構(gòu)造函數(shù)的名稱為BA,在BA中通過參數(shù)m完成對成員變量a的賦值,因此構(gòu)造函數(shù)的名稱為BA(intm),在函數(shù)內(nèi)部對成員a賦值,故第1處的語句應添加“BA(intm){a=m;)”。根據(jù)第2處的要求,構(gòu)造函數(shù)的形式為“PAl(intm,intn)”,m賦值給PA1類成員b,將n作為基類BA構(gòu)造函數(shù)的參數(shù)值傳入,故第2處應添加“PA1(intm,intn):BA(n){b=m;}”。根據(jù)第3處的要求,函數(shù)形式為PA2(intm,intn,intk),在構(gòu)造函數(shù)中將m賦值給數(shù)據(jù)成員c,將n和k分別賦值給基類PA1構(gòu)造函數(shù)的參數(shù)m和n,因此第3處應添加“PA2(intm,intn,intk):PA1(n,k){C=m;}”。根據(jù)第4處的要求,PA2類公有派生于PA1,而PA1公有派生于BA,因此在PA2類中可以調(diào)用基類的geta和getb來獲得基類私有成員a和b,再輸出PA2的私有成員C即滿足要求,因此第4處應添加“cout<<geta<<""<<getb<<""<<C<<endl;”。

47.使用VC++6.0打開考生文件夾下的源程序文件3.cpp,其中定義了用于表示矩形的CRect類,但類CRect的定義并不完整。請按要求完成下列操作,將類CRect的定義補充完整。(1)定義私有數(shù)據(jù)成員leftPoint、topPoint、rightPoint、bottomPoint,分別用于表示矩形左上角及右下角的點的坐標,它們都是double型的數(shù)據(jù)。請在注釋1之后添加適當?shù)恼Z句。(2)完成默認構(gòu)造函數(shù)CRect的定義,指定默認實參為0,它們都是double型的數(shù)據(jù)。請在注釋2之后添加適當?shù)恼Z句。(3)定義函數(shù)體為空的析構(gòu)函數(shù)。請在注釋3之后添加適當?shù)恼Z句。(4)在main函數(shù)中定義GReet類的實例rect2,并把re-ct1的值賦給rect2。請在注釋4之后添加適當?shù)恼Z句。注意:除在指定位置添加語句之外,不要改動程序中的其他內(nèi)容。試題程序:#include<iostream.h>classCRect{private://********1********public://********2********//********3********voidSetPoints(double,double,double,double);voidSetLeftPoint(doublem){leftPoint=m;}voidSetRightPoint(doublem){rightPoint=m;}voidSetTopPoint(doublem){topPoint=m;}voidSetBottomPoint(doublem){bottomPoint=m;}voidDisplay();};CReet::CRect(double1,doublet,doubler,doubleb){leftPoint=1;topPoint=t;rightPoint=r;bottomPoint=b;}voidCRect::Setpoints(double1,doublet,doubler,doubleb){leftPoint=1;topPoint=t;rightPoint=n;bottomPoint=b;}voidCRect::Display(){cout<<"left-toppointis("<<leftPoint<<","<<top-Point<<")"<<\n;cout<<"right-bottompointis("<<rightPoint<<","<<bottomPoint<<")"<<\n;}voidmain(){CRectrect0;rect0.Display();rect0.SetPoints(20,20.6,30,40);rect0.Display();CRectrectl(0,0,150,150);rect1.SetTopPoint(10.5);rect1.SetLeftPoint(10.5);//********4********rect2.Display();}六、3.綜合應用題(2題)48.使用VC6打開考生文件夾下的工程test27_3。此工程包含一個test27_3.cpp,其中定義了類ARRAY,但類的定義并不完整。請按要求完成下列操作,將程序補充完整。

(1)完成類ARRAY的帶一個參數(shù)的構(gòu)造函數(shù),參數(shù)i為int型,如果i不是正數(shù)則輸出錯誤信息并退出,否則申請int型的大小為i的空間,然后把i賦值給類的數(shù)據(jù)成員num。請在注釋“//**1**”之后添加適當?shù)恼Z句。

(2)完成類ARRAY的拷貝初始化構(gòu)造函數(shù),注意解決重復刪除的問題,請在注釋“//**2**”之后添加適當?shù)恼Z句。

(3)完成類ARRAY的重載的運算符函數(shù)[],參數(shù)i為int型,如果i超界則輸出錯誤信息并退出,否則把下標為i的元素返回,請在注釋“//**3**”之后添加適當?shù)恼Z句。

(4)完成類ARRAY的重載的運算符函數(shù)二,同樣需要注意解決重復刪除的問題,不能只是簡單的賦值,請在注釋“//**4**”之后添加適當?shù)恼Z句。

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

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

#include<iostream.h>

#include<stdlib.h>

classARRAY

{

private:

int*p,num;

public:

ARRAY(){p=newint[10],num=10;}

ARRAY(inti)

{

//**1**

{

cout<<“錯誤!數(shù)組長度應為正。\n”;

exit(0);

}

p=newint[i];

num=i;

}

ARRAY(constARRAY&a);

int&operator[](inti);

~ARRAY(){deletep;}

ARRAY&operator=(constARRAY&a);

friendARRAYoperator+(ARRAY&a,ARRAY&b);

friendostream&operator<<(ostream&os,ARRAY&a);

};

ARRAY::ARRAY(constARRAY&a)

{

//**2**

for(inti=0;i<num;i++)

p[i]=a.p[i];

}

int&ARRAY::operator[](inti)

{

//**3**

{

cout<<“越界訪問!”;

exit(0);

}

returnp[i];

}

ARRAY&ARRAY::operator=(constARRAY&a)

{

num=a.num;

p=newint[num];

for(inti=0;i<num;i++)

p[i]=a.p[i];

//**4**

}

ARRAYoperator+(ARRAY&a,ARRAY&b)

{

if(a.num!=b.hum)

{

cout<<“數(shù)組長度不相同!”<<end1;

exit(0);

}

ARRAYt(a.num);

for(inti=0;i<a.num;i++)

t.p[i]=a.p[i]+b.p[i];

returnt;

}

ostream&operator<<(ostream&os,ARRAY&a)

{

inti=0;

for(;i<a.num;i++)

{

cout<<a.p[i]<<'';

if(!((i+1)%10))cout<<end1;

}

returnos;

}

voidmain()

{

ARRAYa(3);

a[0]=a[1]=a[2]=3;

cout<<'a'<<a<<end1;

ARRAYb(a);

cout<<'b'<<b<<end1;

ARRAYc(2);

c=a+b+b;

cout<<'c'<<c<<end1;

c=((b=(a+b))+c);

cout<<'a'<<a<<'b'<<b<<'c'<<c<<end1;

49.使用VC6打開考生文件夾下的工程MyProj14。此工程包含一個源程序文件MyMain14.cpp,程序中定義了3個類A、B和C,但類的定義并不完整。

請按要求完成下列操作,將類的定義補充完成:

①類A的成員函數(shù)setx(inti,intj)是虛函數(shù),其實現(xiàn)的功能是將類A的保護成員x和y分別設置成i和j并且y具有默認值0。請在注釋“//**1**”之后添加適當?shù)恼Z句。

②將類A的成員函數(shù)print()聲明成員純虛函數(shù)。請在注釋“//**2**”之后添加適當?shù)恼Z句。

③完成類A的保護數(shù)據(jù)成員x和y的定義,它們都是整型變量。請在注釋“//**3**”之后添加適當?shù)恼Z句。

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

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

//MyMain14.cpp

#include<iostream>

usingnamespacestd;

classA

{

public:

//***1***

//***2***

protected:

//***3***

};

classB:publicA

{

public:

voidprint()

{

cout<<x*x<<",";

}

};

classC:publicA

{

public:

voidprint()

{

cout<<x*x*x<<end1;

}

};

intmain()

{

A*pa;

Bb;

Cc;

pa=&b;

pa->setx(5);

pa->print();

pa=&c;

pa->setx(2);

pa->print();

return0;

}

參考答案

1.A解析:選項A)正確,外模式是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式;選項B)不正確,全局數(shù)據(jù)視圖的描述稱為概念模式,即數(shù)據(jù)庫中全部數(shù)據(jù)的整體邏輯結(jié)構(gòu)的描述;選項C)不正確,物理存儲數(shù)據(jù)視圖的描述稱為內(nèi)模式,即數(shù)據(jù)庫在物理存儲方面的描述;選項D)不正確,存儲模式即為內(nèi)模式。

2.C

3.A解析:oct八進制。

4.B解析:<<符號是一個重載的用于輸出的成員函數(shù)。

5.B解析:選項A定義的是三行兩列的數(shù)組,選項C、D錯誤地省略了第二維的長度聲明。二維數(shù)組及多維數(shù)組定義的簡化形式中,可以省略一個或多個括號,甚至只保留最外層的括號。因此正確答案是選項B。

6.D解析:靜態(tài)函數(shù)作為一種共享成份,過量使用或不當使用都可能造成程序間和對象間使用的混亂。而振生類,抽象類和虛函數(shù)則是構(gòu)成了類層次和多態(tài)性的基礎,是C++中面向?qū)ο笏枷氲闹匾獙崿F(xiàn)方式。

7.C解析:按照二叉樹中序遍歷的方法:在訪問根結(jié)點、遍歷左子樹與遍歷右子樹這三者中,首先遍歷左子樹,然后訪問根結(jié)點,最后遍歷右子樹;并且,在遍歷左、右子樹時,仍然先遍歷左子樹,然后訪問根結(jié)點,最后遍歷右子樹。對本題中的二叉樹進行中序遍歷的結(jié)果應是TZBACYXP。

8.D解析:本題考查的是對重載函數(shù)的掌握,因為++a是右結(jié)合的,所以a先自加1再輸出,即為2.2,之后調(diào)用函數(shù)print(inta,intb)輸出b和a,即43。

9.C

10.B

11.BB?!窘馕觥勘绢}考查關于C++語言繼承問題中派生類對基類的訪問。C++語言中通常有三種繼承修飾符,即public、protected、private,限制依次嚴格,另外對類中的數(shù)據(jù)和函數(shù)也由這三種修飾符進行限制,有三種成員是不能繼承的:公有繼承基類的私有成員,私有繼承基類的私有成員,保護繼承基類的私有成員。

12.D數(shù)據(jù)庫系統(tǒng)的3級模式是概念模式、外模式和內(nèi)模式。故答案為D選項。

13.CC?!窘馕觥柯暶鞅仨氁杂言猣riend開頭。為了區(qū)分,用++表示前自增,用++(int)表示后自增。

14.D解析:定義函數(shù)模板時可以使用多個類型參數(shù),這時每個類型參數(shù)前面都要加上關鍵字class或typename,其間用逗號分隔。

15.C因為一個人可以操作多個計算機,而一臺計算機又可以被多個人使用,所以兩個實體之間是多對多的關系。

16.B解析:數(shù)據(jù)庫管理系統(tǒng)(DataBaseManagementSystem,簡稱DBMS)是數(shù)據(jù)庫的機構(gòu),它是一種系統(tǒng)軟件,負責數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護、控制及保護和數(shù)據(jù)服務等,數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫系統(tǒng)的核心。

17.D字符型數(shù)據(jù)在計算機內(nèi)部是以ASCII碼存儲的,英文大寫字母和小寫字母在ASCII碼表中都是連續(xù)的。大寫字母A~z是從65~90,小寫字母a~z是從97~122。所以只要變量c大于等于a并月小于等于z就能保證其為小寫字母。

18.DD?!窘馕觥勘绢}考查的是友元類的定義:類A為類B的友元類,則類A的所有成員函數(shù)都是類B的友元函數(shù),但反之則不一定成立。

19.D解析:線性表可以為空表,排除選項B。第一個元素沒有直接前件,最后一個元素沒有直接后件,故排除選項A。線性表的定義中,元素的排列沒有規(guī)定大小順序,故選項C也有誤,只有D項是正確的。

20.A

21.A解析:本題考查的是if語句。if語句的條件部分是一個表達式而不是語句,因此選項A的說法不正確。

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

23.B\n重載運算符的規(guī)則如下:①c++不允許用戶自己定義新的運算符,只能對已有的c++運算符進行重裁;②c++不能重載的運算符只有5個;③重載不能改變運算符運算對象的個數(shù);④重載不能改變運算符的優(yōu)先級和結(jié)合性;⑤重載運算符的函數(shù)不能有默認的參數(shù);⑥重載的運算符必須和用戶定義的自定義類型的對象一起使用,至少應有一個是類對象,即不允許參數(shù)全部是c++的標準類型。所以答案為B。

\n

24.212,1解析:數(shù)組名作為函數(shù)參數(shù)傳遞的是數(shù)組的首地址,即實參數(shù)組名把實參數(shù)組的首地址傳給了形參數(shù)組名,形參數(shù)組名就指向了相應的實參數(shù)組,就是說形參數(shù)組和實參數(shù)其實就是同一個數(shù)組,對形參數(shù)組元素的修改也同樣影響到對應的實參數(shù)組元素。

25.ios::out|ios;;ate

26.cout<<endl;cout<<endl;解析:\\n表示換行,endl也可表示換行。注意:endl和'\\n'可以通用。

27.base(intn){}base(intn){}解析:注意,根據(jù)main函數(shù)中對類base的使用情況可知,base類必須提供整型單參構(gòu)造函數(shù),同時要求構(gòu)造其最簡單的形式,故函數(shù)體為空。

28.運行時多態(tài)運行時多態(tài)

29.友元函數(shù)友元函數(shù)解析:C++語言中友元類中的函數(shù)都是另一個類的友元函數(shù)。

30.層次模型層次模型解析:用樹形結(jié)構(gòu)表示實體類型及實體間聯(lián)系的數(shù)據(jù)模型稱為層次模型,用有向圖結(jié)構(gòu)表示實體類型及實體間聯(lián)系的數(shù)據(jù)模型稱為網(wǎng)狀模型,用二維表格結(jié)構(gòu)表示實體及其聯(lián)系的數(shù)據(jù)模型稱為關系模型。

31.44解析:本題主要考查C++中遞歸函數(shù)。遞歸函數(shù)即自調(diào)用函數(shù),在函數(shù)體內(nèi)部直接或間接的自己調(diào)用自己,即函數(shù)的嵌套調(diào)用是函數(shù)本身。遞歸調(diào)用分為直接遞歸調(diào)用和間接遞歸調(diào)用兩種形式。本題程序為求解典型遞歸數(shù)列Fibonacci數(shù)列中任意項值的簡化程序(主函數(shù)中的調(diào)用改成fib(n)即變成求解任意項值)。主函數(shù)通過調(diào)用fib()函數(shù),fib()函數(shù)內(nèi)部再通過一個分支結(jié)構(gòu)判斷是否進行遞歸調(diào)用或退出遞歸調(diào)用,調(diào)用方式為直接遞歸調(diào)用。主函數(shù)通過實參將值3賦給fib()函數(shù)的形參n,由于n=3滿足if分支語句條件,因此函數(shù)進行遞歸調(diào)用,即計算fib(2)和fib(1)的值;將2賦給fib()函數(shù)的形參后,由于n=2不滿足if分之語句條件,因此程序退出遞歸,返回2;將1賦給fib()函數(shù)的形參后,函數(shù)同樣返回2。因此函數(shù)遞歸調(diào)用的最終結(jié)果為返回2+2=4,即fib(3)=4,程序最后輸出值為4。

32.邏輯設計邏輯設計解析:本題考核數(shù)據(jù)庫設計的4個主要階段??忌枰斡洈?shù)據(jù)庫設計中的這4個階段,并會區(qū)分不同階段的功能。其中需求分析就是分析用戶的要求。概念設計就是將需求分析得到的用戶需求抽象為信息結(jié)構(gòu)及概念模型的過程。邏輯設計是在概念結(jié)構(gòu)設計的基礎上,將與數(shù)據(jù)庫管理系統(tǒng)無關的ER圖轉(zhuǎn)換成以數(shù)據(jù)庫管理系統(tǒng)的邏輯數(shù)據(jù)模型表示的邏輯模式。物理設計就是為一個給定的邏輯數(shù)據(jù)模型選取一個最適合應用環(huán)境的物理結(jié)構(gòu)的過程。

33.*str==NULL或者!*str0*str==NULL或者!*str\r\n0解析:如果結(jié)束,返回0值。

34.8100

35.線性結(jié)構(gòu)線性結(jié)構(gòu)解析:數(shù)據(jù)結(jié)構(gòu)分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),其中隊列是屬于線性結(jié)構(gòu)。隊列有兩種存儲結(jié)構(gòu):一種是順序存儲結(jié)構(gòu),稱為順序隊列;另一種是鏈式存儲結(jié)構(gòu),稱為鏈隊列。題目中所說的帶鏈的隊列就是指鏈隊列。無論隊列采取哪種存儲結(jié)構(gòu),其本質(zhì)還是隊列,還屬于一種線性結(jié)構(gòu)。因此,本題的正確答案是線性結(jié)構(gòu)。36.(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(…)”。37.(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”。

38.(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);”。

39.(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(…)”。40.(1)“staticintn=O”應改為“staticintn;”。(2)“intCO::n;”應改為“intCO::n=0;”。(3)“cout<<c.n<<endl;”應改為“cout<<c->n<<endl;”?!窘馕觥勘绢}要在屏幕上輸出兩個字符,首先要靜態(tài)變量初始化,第1處應改為“staticintn;”,第2處要給n賦值,第3處輸出時引用c的對象,應改為“cout<<c->n<<endl;”。

41.(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)生中斷異常。“assert(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);”。

42.(1)應改為“usingnamespacestd;”。

\n(2)應改為“outl.open('1.txt',ios::binary|ios::app);”。

\n(3)應改為“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個標識應該用流成員函數(shù)put輸出字符,所以第3處的語句修改為“out1.put(s[i]);”。

43.(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)”。

44.(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;”。45.(1)應改為“TCobjl(1);”。(2)應改為“0bj1.SetNumber(10);”。(3)應改為“0bj2.SelNumber(100);”?!窘馕觥勘绢}第1處的“TCobjl;”語句是聲明TC類的對象0bj1,根據(jù)TC類構(gòu)造函數(shù)的定義TC

溫馨提示

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

評論

0/150

提交評論