2023年廣東省深圳市全國計算機等級考試C語言程序設計真題(含答案)_第1頁
2023年廣東省深圳市全國計算機等級考試C語言程序設計真題(含答案)_第2頁
2023年廣東省深圳市全國計算機等級考試C語言程序設計真題(含答案)_第3頁
2023年廣東省深圳市全國計算機等級考試C語言程序設計真題(含答案)_第4頁
2023年廣東省深圳市全國計算機等級考試C語言程序設計真題(含答案)_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2023年廣東省深圳市全國計算機等級考試

C++語言程序設計真題(含答案)

學校:班級:姓名:考號:

一、1.選擇題(10題)

I.以下哪個基類中的成員函數(shù)表示純虛函數(shù)()。

A.virtualvoidvf(int)

B.voidvf(int)=0

C.virtualvoidvf(=0)

0.virtualvoidvf(int){}

2.下面程序的執(zhí)行結果是#include"iostream.h"void

main(){int*p,r;p=newin;*p=20;

r=sizeof(*p);cout<<r<<endl;delete

P;}

A.程序錯誤B.內存為20地址的大小.C.20D.4

3.執(zhí)行如下程序,輸出星號(*)的個數(shù)為#include<iostream>using

namespaeestd;classSample{public:Sample(){}~Sample(){cout<

<;}};intmain(){Sampletemp[2J,*pTemp[2];return0;)

A.lB.2C.3D.4

4.假定其中的x的單位是角度且不考慮兀值的精度,則與數(shù)學公式

,|cos(x)|等價的C++語言表達式是

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)))

5.假定變量m定義為intm=7;則定義變量p的正確語句為()。

A.intp=&m;

B.int*p=&m;

C.int&p=*m;

D.int*p=m;

6.靜態(tài)成員函數(shù)沒有0。

A.返回值B.lhis指針C.指針參數(shù)D.返回類型

7.語句ofstreamf("SALARY.DAT”,ios_base::app);的功能是建立流對

象f,并試圖打開文件SALARY.DAT與f關聯(lián),而且()。

A.若文件存在,將其置為空文件:若文件不存在,打開失敗

B.若文件存在,將文件指針定位于文件尾;若文件不存在,建立一個新

文件

C.若文件存在,將文件指針定位于文件首;若文件不存在,打開失敗

D.若文件存在,打開失?。喝粑募淮嬖?,建立一個新文件

8.開發(fā)軟件時對提高開發(fā)人員工作效率至關重要的是()。

A.操作系統(tǒng)的資源管理功能B.先進的軟件開發(fā)工具和環(huán)境C.程序人

員的數(shù)量D.計算機的并行處理能力

9.在數(shù)據管理技術的發(fā)展過程中,經歷了人工管理階段、文件系統(tǒng)階段

和數(shù)據庫系統(tǒng)階段。其中數(shù)據獨立性最高的階段是()

A.數(shù)據庫系統(tǒng)B.文件系統(tǒng)C.人工管理D.數(shù)據項管理

10.下列關于運算符重載不正確的是0

A.運算符重載不能改變運算符的操作數(shù)個數(shù)

B.運算符重載不能改變運算符的優(yōu)先級

C.運算符重載不能改變運算符的結合性

D.運算符重載能改變對預定義類型數(shù)據的操作方式

二、單選題(13題)

H.下面不屬于同一函數(shù)模板的是()。

A.template<classtl>tlmax(tl&a,tl&b){...{template<classt2>t2

max(t2&a,t2&b){...}

B.template<classtl>tlmax(tla,tlb){...}template<classt2>t2max(t2

&a,t2&b){…}

C.template<classtl>tlmax(tl*a,tl*b)template<classt2>t2

max(t2&a,t2&b){...}

D.template<classtl>tlmax(tla,tlb){...}template<classt2>t2max(t2

&a,t2&b,t2c){...}

12.有下列程序:

#inc!ude<stdiO.h>

voidfun(char*s)

{while(*s)

{if(*s%2==(1)printf("%C”,*s);

s+十:

voidmain()

{chara[]={ngoodn);

fun(a);printf(nnH);

)

注意:字母a的ASCII碼值為97,程序運行后的輸出結果是()?A.dB.goC.god

D.good

13.下面關于數(shù)組的初始化正確的是

A.charstr[]={'a:b,'c'}

B.charstr[2]=

C.charstr[2][3]={{,a';b,},{'c',d},C?f}}

D.charstr()={'a'/b/c1)

14.下列運算符中全都可以被友元函數(shù)重載的是

A=,+,-,\B.[],+,(),newC.->,+,*,>>D.<<,>>,

+,*

15.有下列程序:

#include<stdiO.h>

voidmain()

intx=8:

for(;x>0;x—)

if(x%3){printf(M%d,”,x—),continue;}

printf("%d,",—x):

)

}

程序的運行結果是()oA.7,4,2B.8,7,5,2C.9,7,6,4D.8,5,

4.2

16.模板函數(shù)的真正代碼是在()時候產生。

A.源程序中聲明函數(shù)時B.源程序中定義函數(shù)時C.源程序中調用函數(shù)

時D.運行執(zhí)行函數(shù)時

17.

28.對于語句cout《《setfilK'*的輸出結

果是().

A.*********1*2B.********12

C.??**?**1*2D.12********

18.下列敘述中錯誤的是()。

A.gets函數(shù)用于從終端讀入字符串

B.getchar函數(shù)用于從磁盤文件讀入字符

C.fputs函數(shù)用于把字符串輸出到文件

D.fwrite函數(shù)用于以二進制形式輸出數(shù)據到文件

19.以下敘述中正確的是

A.在類中,不作特別說明的數(shù)據成員均為私有類型

B.在類中,不作特別說明的成員函數(shù)均為公有類型

C.類成員的定義必須是成員變量在前、成員函數(shù)在后

D.類成員的定義必須放在類定義體內部

20.為用戶與數(shù)據庫系統(tǒng)提供接口的語言是

A.高級語言B.數(shù)據描述語言(DDL)C.數(shù)據操縱語言(DML)D.匯編語言

21.下列說法中不正確的是

A.數(shù)據庫減少了數(shù)據冗余B.數(shù)據庫中的數(shù)據可以共享C.數(shù)據庫避免

了一切數(shù)據的重復D.數(shù)據庫具有較高的數(shù)據獨立性

22.定義如下枚舉類型enum{Monday,Tuesday,Wednesday,Thrusday,

Fridays);則下列選項正確的是()。

A.表達式Wednesday==Friday的值是true

B.Dayday;day=3;

C.Dayday;day=Monday+3;

D.Daydayday=Tuesday+10;

23.C++語言中關于構造函數(shù)的說法正確的是()。

A.構造函數(shù)的函數(shù)名不必和類名相同B.構造函數(shù)只能有一個C.每個

類必定有構造函數(shù)D.構造函數(shù)必有返回值

三、2.填空題(12題)

24.如果一個工人可管理多個設備,而一個設備只被一個工人管理,則

實體“工人”與實體"設備”之間存在【】關系。

25.長度為n的順序存儲線性表中,當在任何位置上插入一個元素概率

都相等時,插入一個元素所需移動元素的平均個數(shù)為【】。

26.請在下列程序中的空格處填寫正確的語句:

classSample(

public:

Sample(){}

~Sample(){}

voidSetData(intdatA){〃將Sample類成員變量data設置成形參的值

private:

intdata;

);

27.C++程序中的預處理命令以符號【】作為起始標記。

28.如下程序的輸出結果是_____o

#include<iostream>

usingnamespacestd

classpumpkin{

public:

pumpkin(){++count;}

?pumpkin(){-eount;}

staticvoidtotal_count(){cout<<count<<Hpumpkin(s)n<<endl;}

private:

staticintcount;

};

intpumpkin::count=0;

intmain(){

pumpkinplflO];

pumpkin::total_count();

return0;

)

29.如果要把返回值為void的函數(shù)A聲明為類B的友元函數(shù),則應在

類B的定義中加入的語句是【】。

30.若要在程序文件中進行標準輸入輸出操作,則必須在開始的#

include命令中使用頭文件【]0

31.在程序設計階段應該采取【】和逐步求精的方法,把一個模塊的功

能逐步分解,細化為一系列具體的步驟,進而用某種程序設計語言寫成

程序。

32.有如下程序:

#include<iostream>

usingnamespacestd;

classA{

public:

A(){cout<

~A(){cout<<"A";}

I;

classB{

Aa;

public:

B(){cout<<"BM;)

-B(){cout<

);

intmain(){

Bb;

return0:

)

程序的輸出結果是_____o

33.C++語言的參數(shù)傳遞機制包括傳值和傳地址兩種,如果調用函數(shù)時,

需要改變實參或者返回多個值,應該采取【】方式。

34.對于下列語句

char*strl="Hello”;

char*str2二."Hello";

*strl='P';

cout<<str2<<endI;

其輸出結果為:[1

35.二分法查找僅限于這樣的表:表中的數(shù)據元素必須有序,其存儲結

構必須是_____O

四、程序改錯題(10題)

36.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序

運行有問題,請改正main函數(shù)中的錯誤,使程序的輸出結果為:

number=l

number=10

number=100

注意:不要改動main函數(shù),不能增加或刪除行。也不能更改程序的結

構,錯誤的語句在//******error******的下面。

試題程序:

#include<iostream.h>

classTC

(

public:

TC(inti)

(

number=i;

}

voidSetNumber(intm)

number=m;

)

intGetNumberconst

returnnumber;

voidPrintconst

(

cout?"number="?number?endl;

)

private:

intnumber;

);

voidmain

1

//****舉舉不小piTcr’”不

TCobjl;

objl.Print;

TCobj2⑶;

/?>1?*>1**>1?*>1??>1?*>1?

//不不不不不不不小prrcr不不不不不不予不

objl.number=10;

!1********%0******

TC.SetNumber(100);

objl.Print;

obj2.Print;

}

37.使用VC++6.0打開考生文件夾下的源程序文件1.cpp0本程序要

求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可能輸

入多行,當輸入字符時,默認字符輸入結束,最后把結果輸出到屏幕

中。

注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結

構,錯誤的語句在//******errc>r******的下面。

試題程序:

#include<iostream.h>

voidmain

(

inti=O;

charstr[120];

cout?HEnterastringendwith?."?endl;

//*3**1**1*

//不不不不不不不不prrcr不不不不干不不不

cin.getline(str,120);

while(str)

/1**?*****?

//不不不不不不不不prrcr不不不不不不不不

if(str[i])=a)

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

i++;

)

cout?str?endl;

return;

38.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運

行時有錯,請改正其中的錯誤,使程序正常運行,并使程序輸出的結果

為:

sizeof(Sl)=5

sizeof(s2)=I0

sizeof(s3)=l

注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結

構,錯誤的語句在//******error******的下面。

(1)不能刪除assert()語句。

(2)只能修改后面的數(shù)字。

提示:assert函數(shù)如果為假,則會產生一個中斷異常。

試題程序:

#include<iostream.h>

#include<asseil.h>

voidmain()

char*sl=,'abcM:

/1*****?

//不不不不不不不不prrcr不不不不不不不不

assert(sizeof(s1)==3):

cout?',sizeof(sl)=5,,?endl;

chars2[101=Mab":

assert(sizeof(s2)==2);

cout?nsizeof(s2)=10H?endl;

chars3=23:

//一如?如?1?■£,■[,■£?■£?

//小小小小小小小小prrcr小小小小小小小小

assert(sizeof(s3)==4);

cout?',sizeof(s3)=r,?endl;

return;

}

39.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序

運行時有錯,請改正其中的錯誤,使程序正常運行,輸出的結果為

Constructor,i=0,

Destructor

注意:錯誤的語句在//******error******的下面,修改該語句即

可。

試題程序:

#include(iostream.h)

classTC

inti;

public:

TC;

voiddisplay;

?TC;

);

/-X>

//******p]Tcr不不不不予不

TC;TC

cout?,,Constructor',?M,"

i=0;

)

/******errcr不不不不不不

TC:display

tout?',i=,,?i?n,M?endl;

)

/汴汴汴汴不舉prmr不不不不不不

TC:TC

(

COUI?"Destructor"?endl:

)

voidmain

(

TCa;

a.display;

40.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序

運行時有錯。請改正程序中的錯誤,使程序輸出的結果為

100

37

32

注意:錯誤的語句在//******error******的下面,修改該語句即

可。

試題程序:

#include<iostream.h>

!?*??*??*??*?

//****^**不**

voidmain

/小小小小小小errcr卒<*<*<**><?

intm=0142:

/

//不不不不不不prrcr不不不不不不

intn=0X27:

intq=32;

cout<<m<<endl;

cout<<n<<endl;

cout<<q<<endl;

return;

41.使用VC++6.0打開考生文件夾下的源程序文件

1.cpp,該程序運行時有錯誤,請改正程序中的錯誤。本程序要求實現(xiàn)

的功能為從鍵盤輸入一個字符串,并將結果保存到文件1.txt中。

注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結

構,錯誤的語句在

I******cnx)r******的F面°

試題程序:

#include<iostream>

#include<fstream>

usingstd;

voidWriteFile(char*s)

ofstreamoutl;

outl.open("l.txt",binary|app);

for(inti=0;s[iJ!=O;i++)

/1

outl.puts(s[i]);

outl.close;

}

voidClearFile

ofstreamout1;

outl.open("l.txt");

outl.close;

)

intmain

chars[10241;

ClearFile;

cout?npleaseinputastrin9:u?endl;

cin.getline(s,1024);

WriteFile(s);

returnO;

42.使用VC++6.0打開考生文件夾下的源程序文件1.cppo本程序

要求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可

能輸入多行,當輸入字符時,默認字符輸入結束,最后把結果輸出

到屏幕中。

注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結

構,錯誤的語句在//*****%1丁0產*****的下面。

試題程序:

#include<iostream.h>

voidmain

inti=O;

charstr[120];

cout?,,Enterastringendwith?.H?endl;

/

//*****汴*汴error不不予不不不不不

cin.getline(str,120);

/小小小小小小小小prmr不不不不不不不不

while(str)

%1??£?

不不不不不不不不error不不不不不不不不

if(str[i])=a)

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

i++;

cout?str?endl;

return;

43.使用VC++6.0打開考生文件夾下的源程序文件

1.cpp,該程序運行時有錯誤,請改正程序中的錯誤。本程序要求實

現(xiàn)的功能為從鍵盤輸入一個字符串,并將結果保存到文件1.txt中。

注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結

構,錯誤的語句在

!!******eiTor******白勺~~j,?。

試題程序:

#include<iostream>

#include<fstream>

/

//?門*r*p不prr<、r干不干干干干干干

usingstd;

voidWriteFileCchar*s)

(

ofstreamout1;

outl.open(nl.txt",binary|app);

for(inti=0;s[i]!=0;i++)

/

/f不*T*不*T**?*小*T*小m*/**^1**^不不小小不不不

outl.puts(s[i]);

outl.close;

)

voidClearFile

(

ofstreamout1;

outl.open("1.txt");

outl.close;

}

intmain

(

charsfl0241;

ClearFile;

cout?Hpleaseinputastrin9:u?endl;

cin.getline(s,1024);

WriteFile(s):

returnO;

)

44.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運

行有問題,請改正main函數(shù)中的錯誤,使程序的輸出結果為:

number=l

number=10

number=100

注意:不要改動main函數(shù),不能增加或刪除行。也不能更改程序的結

構,錯誤的語句在//******errc)r******的下面。

試題程序:

#include<iostream.h>

classTC

(

public:

TC(inti)

(

number=i;

)

voidSetNumber(intmi

(

number=m;

}

intGetNumberconst

(

returnnumber;

}

voidPrintconst

(

cout?',number=,'?number?endl;

)

private:

intnumber;

);

voidmain

TCobjl;

objl.Print;

TCobj2(3);

/t//不不不不不不不不error不不*小1*下*1*不*1?不不*1*不

objl.number=10;

II********error*%o******

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

)

45.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序

運行時有錯誤,請改正錯誤,使程序正常運行,并且要求最后一個

catch必須拋出執(zhí)行的任何異常。

程序異常,輸出信息為

error

O

ERROR

注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結

構,錯誤的語句在//******error******的下面。

試題程序:

#include<iostream.h)

intmain

(

try

(

throw("error'1);

)

/不不不不不不不不error"不不不不不予不

catch(chars)

(

cout?s?endl;

)

try

(

throw((int)0);

}

/小小小小小小小小prrcr不不不不不不不不

catch

(

cout?i?endl;

)

try

(

throw(O);

throw(nerrorn);

}

/?>1?*>1**>1?*>1??>1?*>1?

//不不不不不不不小prrcr不不不不不不予不

catch

(

cout?nERROR"?endl;

)

returnO;

)

五、綜合應用題(2題)

46.請使用VC6或使用【答題】菜單打開考生文件夾proj3下的工程

proj3,其中聲明的CDeepCopy是一個用于表示矩陣的類。請編寫這個

類的賦值運算符成員函數(shù)Operators以實現(xiàn)深層復制。

要求:

泰卜本編去il6々IAI穴后;ZF"〃************aaa************"匕

“〃****************666*************''之間o不得修改程序的其他部

分。

注意:程序最后將結果輸出到文件out.dat中。輸出函數(shù)writeToFile

已經編譯為obj文件,并且在本程序中調用。

//CDeepCopy.h

#include<iostream>

#include<string>

usingnamespacestd;

classCDeepCopy

(

public:

intn;〃動態(tài)數(shù)組的元素個數(shù)

int*p;〃動態(tài)數(shù)組首地址

CDeepCopy(int);

?CDeepCopy;

CDeepCopy&operator=(constCDeepCopy&r);//賦值運算符函數(shù)

voidwriteToFile(char});

//main,cpp

Sinclude^CDeepCopy.h"

CDeepCopy::一CDeepCopy{delete[]P;}

CDeepCopy::CDeepCopy(intk){n=k;p=newintfn];}//構造函數(shù)實現(xiàn)

CDeepCopy&CDeepCopy::Operator=(constCDeepCopy&r)〃賦值運算

符函數(shù)實現(xiàn)

//

ff*T**T**T**T**T**T*

〃***********666***********

intmain

CDeepCopya(2),d(3);

a.p[O]=l;d.pfO]=666;〃對象a,d數(shù)組元素的賦值

CDeepCopyb(3);〃調用賦值運算符函數(shù)

a.p[O]=88;b=a;

cout?b.pfO];〃顯示內層局部對象的數(shù)組元素

cout?d.pLOJ;〃顯示d數(shù)組元素a.p[0]的值

coutvv“dfadeaway;\n";

cout?a.pfO];//顯示a數(shù)組元素a.p[O]的值

,,,,

writeToFile();

return0;

47.使用VC++6.0打開考生文件夾下的源程序文件3.cppo其中定

義的類不完整,按要求完成下列操作,將類的定義補充完整。每賣出

一個水果,則計算水果的重量,還要計算所有賣出水果的總重量以及

總個數(shù),同時允許退貨,請按照以下的操作,把類補充完整。

⑴定義類TCFruit的私有靜態(tài)數(shù)據成員float型變量AllWeight和int型

變量AHN0,請在注釋1后添加適當?shù)恼Z句。

(2)完成類TCFruit的帶一個float型變量w的構造函數(shù),并把這個w加

到AllWeight中,并且AllNo自加。請在注釋2后添加適當?shù)恼Z句。

⑶在析構函數(shù)中,在AHWeight中減去weight,然后AllNo自減,請

在注釋3后添加適當?shù)恼Z句。

(4)完成靜態(tài)成員變量的初始化為0,請在注釋4后添加適當?shù)恼Z句。

注意:增加或者修改代碼的位置已經用符號表示出來,請不要修改其

他的程序代碼。

試題程序:

#include(iostream.h>

classTCFruit

private:

floatWeight;

*1*

*7**7**7**7*I*1**7**7**7*

staticintAHNo;

public:

TCFruit(floatw)

/

//年"字平字**2********

AllWeight+=w:

AllNo++:

?TCFruit

/9?!<*1**1*4,

/t^T**^*^T^L*j**T**T**^*

AllWeight-=Weight:

)

voiddisplay

(

cout?',SellaFruitwithn?Weight?,'k9,'?

endl;

coutw''Allsellnumber:n?AllNo?endl;

cout?nAllsellweight:,,?AllWeight?"k9,'?

endl?endl;

}

};

//********4********

floatTCFruit::AIIWeight=O.0;

intmain

(

TCFruitFruitl(l.2);

Fruitl.display;

TCFruitFruit2(2.3);

Fruit2.display;

returnO;

六、3.綜合應用題(2題)

48.使用VC6打開考生文件夾下的工程test37_3o此工程包含一個

test37_3.cpp,其中定義了類Letter和Number以及Grid,其中Grid類由

Letter類和Number類public派生,但三個類的定義并不完整。請按要

求完成下列操作,將程序補充完整。

⑴添加類Letter的帶一個參數(shù)c的構造函數(shù),c是char型的數(shù)據,默認

值為'A]該函數(shù)把參數(shù)c的值賦給類的保護成員ch,請在注釋“//**1**”

之后添加適當?shù)恼Z句。

⑵添加類Number的帶一個參數(shù)n的構造函數(shù),n是int型的數(shù)據,默

認值為0.該函數(shù)把參數(shù)n的值賦給類的保護成員num,請在注釋

“〃**2**”之后添加適當?shù)恼Z句。

⑶添加派生類Grid構造函數(shù)的定義,傳入的參數(shù)為char型的c和血型

的n,并將其分別賦值給基類的ch和num,請在注釋“〃**3***之后添加

適當?shù)恼Z句。

⑷完成派生類Grid的友元函數(shù)—“<<”運算符重載的定義,使其以

格式“[g.ch,g.numF輸出,請在注釋“〃**4***之后添加適當?shù)恼Z句,

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

#include<iostream,h>

classLetter

(

protected:

charch;

public:

H**]**

I;

classNumber

protected:

intnum;

public:

H**2**

);

classGrid:publicLetter,publicNumber

(

public:

H**3**

friendostream&operator<<(ostream&o,Grid&g);

};

H**4**

(

o<<<<g.ch<<M,M<<g.num<<

returno;

)

intmain()

(

Gridg('C;3);

cout<<"Gridreference:"<<g<<end1;

return0;

)

49.使用VC6打開考生文件夾下的工程test27_3o此工程包含一個

test27_3.cpp,其中定義了類ARRAY,但類的定義并不完整。請按要求

完成下列操作,將程序補充完整。

⑴完成類ARRAY的帶一個參數(shù)的構造函數(shù),參數(shù)i為int型,如果i不

是正數(shù)則輸出錯誤信息并退出,否則申請int型的大小為i的空間,然

后把i賦值給類的數(shù)據成員num。請在注釋"http://**”"之后添加適當?shù)恼Z

句。

⑵完成類ARRAY的拷貝初始化構造函數(shù),注意解決重復刪除的問題,

請在注釋“〃**2**”之后添加適當?shù)恼Z句。

⑶完成類ARRAY的重載的運算符函數(shù)口,參數(shù)i為血型,如果i超界

則輸出錯誤信息并退出,否則把下標為i的元素返回,請在注釋“〃**3**”

之后添加適當?shù)恼Z句。

(4)完成類ARRAY的重載的運算符函數(shù)二,同樣需要注意解決重復刪除

的問題,不能只是簡單的賦值,請在注釋“〃**4***之后添加適當?shù)恼Z句。

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

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

#include<iostream.h>

#include<stdlib.h>

classARRAY

(

private:

int*p,num;

public:

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

ARRAY(inti)

H(**]**

(

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

exit(O);

)

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)

H**2**

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

pfi]=a.p[il;

)

int&ARRAY::operatorf](inti)

(

H**3**

(-

cout<("越界訪問!”;

exit(0);

)

returnp[ij;

)

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ù)組長度K相同!”<<endl;

exit(0);

}

ARRAYt(a.num);

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

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

returnt;

1

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

(

inti=0;

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

cout<<a,p[i]<<

if(!((i+l)%10))cout<<endl;

returnos;

}

voidmain()

(

ARRAYa(3);

a[O]=a[l]=a[2]=3;

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

ARRAYb(a);

cout<<'b'<<b<<endl;

ARRAYc(2);

c=a+b+b;

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

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

cout<<'a1<<a<<'b*<<b<<*c'<<c<<endl;

參考答案

l.B

2.D解析:理解sizeof的用法,它可以運算出各種數(shù)據類型所占內存空

間的多少。注意:選項C)中是指針p所指向的內存地址中內容是200

注意:在用完申請后的內存應立刻釋放。

3.B解析:類在創(chuàng)建對象時調用構造函數(shù),在撤銷對象時調用析構函數(shù),

而在定義類指針時則不調用構造函數(shù)和析構函數(shù)。sampietemp[2]定義了

一個2個元素的對象數(shù)組,因此調用兩次析構函數(shù),打印2個*。

4.D解析:本題考查數(shù)學表達式的掌握,首先應轉換為弧度,然后作為

cos函數(shù)的參數(shù),求絕對值,最后是開方函數(shù)??忌枰莆盏氖浅S?/p>

的數(shù)學函數(shù)。

5.B解析:將變量m的地址賦給指針po

6.B

7.B

8.B解析:軟件工程鼓勵研制和采用各種先進的軟件開發(fā)方法、工具和

環(huán)境。工具和環(huán)境的使用又進一步提高了軟件的開發(fā)效率、維護效率

和軟件質量。

9.A在數(shù)據管理技術的發(fā)展過程中,經歷了人工管理階段、文件系統(tǒng)階

段和數(shù)據庫系統(tǒng)階段。其中數(shù)據獨立性最高的階段是數(shù)據庫系統(tǒng)這一

階段。數(shù)據庫系統(tǒng)階段用數(shù)據模型來表示復雜的數(shù)據,有較高的數(shù)據

獨立性。數(shù)據庫系統(tǒng)為用戶提供了方便的用戶接口,用戶既可使用查

詢語言或終端命令操作數(shù)據庫,也可以用程序方式來操作。數(shù)據庫管

理系統(tǒng)提供了數(shù)據控制功能。

lO.DDo【解析】本題考查C++語言中操作符重載的概念。運算符重

載的關鍵字是operator。運算符重載的規(guī)則是重載時不能改變運算符的

操作數(shù)個數(shù),不能改變運算符的優(yōu)先級,不能改變運算符的結合性,

不能改變對預定義類型數(shù)據的操作方式。

11.D解析?:函數(shù)模板的重載是靠模板參數(shù)的數(shù)量不同來區(qū)分的,因為

函數(shù)模板是抽象的,有待于進一步實例化,所以靠參數(shù)類型無法區(qū)別

調用哪個函數(shù)模板。

12.A

Ao【解析】在本題中,子函數(shù)fun(char*s)的功能是如果*s的ASCII

值是偶數(shù),則輸出*s,主函數(shù)中當實參的值為good時,9的ASCH值

是103,字母o的ASCII值是111,字母d的ASCII值是100,只有字

母d的ASCII值是偶數(shù),所以輸出字母d。

13.A解析:本題考查的是字符數(shù)組的初始化。選項B)中用3個元素初

始化大小為2的數(shù)組,越界了;選項C)中應該是2行3列的數(shù)組,題中

使用3行2列初始化;選項D)中數(shù)組合后應用方括號。

14.D解析:運算符重載為成員函數(shù)的形式為:函數(shù)類型。perator運算符

(形參表){函數(shù)體;};運算符重載為友元函數(shù)的形式為:friend函數(shù)類型

operator運算符(形參表){函數(shù)體;)。一般來講,單目運算符最好重載為成

員函數(shù),雙目運算符最好重載為友元函數(shù)。=、[]、0、->以及所有的類

型轉換運算符只能作為成員函數(shù)重載。

15.D

Do【解析】x-后綴表示先用x的值再令x減1,-x前綴表示先將x

減1,再執(zhí)行程序,則輸出(X-)繼續(xù)下一次循環(huán),輸出“8,”,此時x

自減值變?yōu)?,執(zhí)行X--,x=6,x%3=0,后面語句不執(zhí)行,執(zhí)行語句

“printf(”%d,",-x);”,輸出“5”,繼續(xù)for循環(huán)中的x??,得到x=5,

輸出“5”;判斷x%3為斷,輸出“4”,執(zhí)行兩次X—后,x=2,執(zhí)行

“{printf("%d”,X-);cotinue;}”后,輸出“2”;然后執(zhí)行兩次x—后,

x=0,不符合“x>0”,循環(huán)結束。

16.C解析:本題考核模板函數(shù)的使用。在說明一個函數(shù)模板后,當編譯

系統(tǒng)發(fā)現(xiàn)有一個對應的函數(shù)調用時,將根據實參中的類型來確認是否匹

配函數(shù)模板中對象的形參,然后生成一個重載函數(shù)。由此可知模板函數(shù)

的真正代碼是在函數(shù)調用時產生的。

17.A

18.B

解析:本題考查的是輸入輸出函數(shù)的使用,gets和getchar函數(shù)用于從

標準輸入設備終端讀八字符串和字符,并非從磁盤文件讀入,fputs用

于把字符串輸出到文件,fwrite用于以二進制形式輸出數(shù)據到文件,故

選項B)描述錯誤。

19.A解析:類中默認的類型是私有類型,除非特別指定為公有或保護類

型。同時,并沒有強制要求成員函數(shù)和數(shù)據成員的排列順序,如果類的

成員函數(shù)在類定義體內部定義,則為內聯(lián)函數(shù),一般類的成員函數(shù)都在

類定義體的外部實現(xiàn)。

20.C數(shù)據定義語言(DDL),例如:CREATE、DROP、ALTER等語句。

\u3000\u3000數(shù)據操作語言(DML),例如:INSERT(插入)、UPDATE

(修改)、DELETE(刪除)語句。

\u3000\u3000數(shù)據查詢語言(DQL),例如:SELECT語句。

\u3000\u3000數(shù)據控制語言(DCL),例如:GRANT、REVOKE、COMMIT、

ROLLBACK等語句。

21.C解析:數(shù)據庫系統(tǒng)具有以下幾個特點:數(shù)據的集成性、數(shù)據的高共

享性與低冗余性、數(shù)據的獨立性、數(shù)據統(tǒng)一管理與控制。

22.A

Ao【解析】枚舉類型定義了一些整型符號常量的集合,使用枚舉類型

時應該注意以下幾點:枚舉類型的第一個常量默認值是0;枚舉類型常

量的值允許彼此相同;雖然枚舉類型常量是整數(shù)類型,但是不允許使

用整數(shù)直接賦值給枚舉類型變量,也不允許與整數(shù)進行運算,只可以

與整數(shù)進行比較。

23.C

24.一對多或I:N一對多或I:N,

25.n/2n/2解析:性表的任何位置插入一個元素的概率相等,即概率為

P=l/(n+l),則插入一個元素時所需移動元素的平均次數(shù)為E=l/(n+l)

(n-i+1)=n/2o

26.this.data=data;

27.##解析:“鏟'是預處理命令?的開始標記符。

28.1Opumpkin(s)1Opumpkin(s)解析:在主函數(shù)中pumpkinpl[10];定義

了一個有10個元素的對象數(shù)組,所以調用了10次構造函數(shù),靜態(tài)數(shù)據

成員court累加了10次,pumpkin::total_count();顯式調用類成員函數(shù),

直接調用靜態(tài)成員函數(shù):total_count(),打印pumpkin(s)o

29.friendvoidA();friendvoidA();解析:C++中類的友元函數(shù)在聲明

時應在該函數(shù)前面加上關鍵字friend,同樣如果要聲明一個類為另一個

類的友元類也要在前面類名前加上friendo

30.iostream.hiostream.h解析:本頭文件和重要,包含了基本輸入輸出所

需要的庫函數(shù)。

31.自頂而下自頂而下

32.ABBAABBA解析此題考查的是類的構造與析構。建立類的對象時,

構造函數(shù)的執(zhí)行順序如下:執(zhí)行基類的構造函數(shù),調用順序按照各個基

類被繼承時聲明的順序(自左向右)?>執(zhí)行成員對象的構造函數(shù),調用順

序按照各個成員對象在類中聲明的順序->執(zhí)行自身的構造函數(shù)。析構

順序與之相反。此題中,B類沒有基類。但是有一個A類的成員限所

以構造B類對象時,先構造成員a再構造自身。因此,構造時輸出的結

果是AB,析構與構造順序相反會輸出BA0所以程序最終輸出結果是

ABBA。

33.傳地址傳地址解析:本題考查的是傳值調用和傳址調用的區(qū)別——

傳值調用只是進行值的簡單復制,返回之后不會改變原來的值;而傳址

調用是把參數(shù)的地址傳入,會改變原來的值。

34.Pelk)Pell。解析:注意,兩個字符串都沒有名字,屬字符串常量,在

內容中是同一份內容。因此,對strl進行重新賦值,僅僅替換了該字符

數(shù)組的第一個字符。兩個指針指向同一個字符串,因此輸出為Pell。。

35.順序存儲(或順序方式存儲)順序存儲(或順序方式存儲)解析:二分法

查找對表的要求是有序的順序表,即第一要求是數(shù)據元素有序,第二要

求是按順序方式存儲。

36.⑴應改為“TCobjl(l);

(2)應改為"ObjLSetNumber(lO);

⑶應改為“0bj2.SelNumber(lOO);

【解析】本題第1處的“TCobjl;”語句是聲明TC類的對象Objl,根據

TC類構造函數(shù)的定義TC(inti),存在整型參數(shù),并且題目要求第一個

輸出結果兩1,所以補全參數(shù)1,即第1處的“TCobjl(l);第2處處

的“objl.number=10;”應該是調用成員函數(shù)SetNumber賦值。在C+

十中成員函數(shù)的使用形式應該是:對象名.成員函數(shù),所以修改為

“objl.SetNumber(lO);類是對象的抽象,而對象是類的具體實

例。第3處“TC.SetNumber(lOO);”語句中的TC為類,并不是對象,

這里應該使用定義的對象,即。bj2,所以將語句修改為

uobj2.SetNumber(lOO);

37.(1)應改為“ein.getline(str,120,?);

\n(2)應改為"while(str[i])"°

,,

\n(3)應改為巾]>=a&&str[i]<=2)o

\n【解析】本題中要求以輸入字符“?”為結束符,用于字符輸入的流成員

函數(shù)getline函數(shù)讀入一行字符,格式為“cin.getline(字符數(shù)組,字符個

數(shù),終止標志字符)”,所以第1處改為“cin.getline(str,120,?);”。第

2處的“while(str)”語句應該是判斷字符串str中的每一個字符是否為結

束符,若不是結束符,在循環(huán)中判斷每一個字符是否為小寫,若為小寫,

則轉換°所以應該修改為“while(str[i])”°第3處的“if(st幣]>=a)”語句是

判斷字符復①]是否為小寫字符,而現(xiàn)有的語句只是判斷字符是否大于a,

但是小寫字符應該是a到2,所以修改為“i「str[i]>=a&&st巾]>=z)”。

38.(1)應改為"assert(sizeof(sl)==4);”。

\n(2)應改為"assert(sizeof(s2)=lO);”。

\n(3)應改為"assert(sizeof(s3)—1);”。

\n【解析】assert函數(shù)如果為假,則會產生一個中斷異常。所以要讓它正

常執(zhí)行輸出結果,那么assert函數(shù)只有為真,才不會產生中斷異常。

€4assert(sizeof(sl)==3);”語句中“sizeof(sl)==3”為假,這會使程序產生異

常,不能正常執(zhí)行。因為strl的值為abc,但是它還有一個尾符,它的

長度應該是4,而不是3,所以在第1處修改為“assert(sizeof(sl)==4)

str2[10]說明,slr2的空間為10,在第2處修改為“assert(sizeof(s2)=10):°

charslr3=23;語句說明23是字符,所占存儲空間為1,所以修改為

t€assert(sizeof(s3)==I);

39.(1)應改為“TC::TC”。

⑵應改為“voidTC::display"o

(3)應改為“TC::?TC”。

【解析】在類的外部定義成員函數(shù)時,必須在成員函數(shù)前面加上類名

和作用域運算符作用域運算符用采表示某個成員屬于哪個

類,使用格式為“(類名)::〈成員函數(shù)〉((參數(shù)函數(shù))),因此第1處應改

為“TC::TC”,默認構造函數(shù)沒有參數(shù)。由第2處“TC::display”后

的語句看,這是在類外實現(xiàn)TC函數(shù),因此也有作用域運算符使用錯

誤問題,display函數(shù)返回值為void,因此第2處的語句應改為

uvoidTC::display”。由第3處的語句“TC::TC”可知,顯然這里是

在類外實現(xiàn)析構函數(shù),析構函數(shù)是一個特殊的函數(shù),它的名稱和類名

相同,并在前面加“?”字符,用采與構造函數(shù)加以區(qū)別,因此第3處

的語句應改為“TC::?TC”。

40.(l)“voidmain”。

(2)“intm=0144;”。

(3)“intn=OX25;”或“intn===0x25;”。

【解析】本題主要考查了主函數(shù)定義及累同進制之間的轉換,包括十

進制到八進制,十進制到十六進制。主函數(shù)定義的定義形式為

“main”,函數(shù)名之后必須是一對括號,因此第1處應改為“voidmain”。

cout輸出默認是以十進制方式輸出的,根據題目要求輸出的結果可發(fā)

現(xiàn)變量的初值不正確,十進制的100對應八進制的144,卡進制的37

對應十六進制的25,因此2和3應分另IJ改成“intm=0144;”,

“intn=0x25;”或“intn=0x25;”。

41.⑴應改為"usingnamespacestd;

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

\n(3)應改為“outl.put(s[i]);”。

\n【解析】本題第1處的“usingstd廣是在程序中弓I入標準命名空間std,

對于C++中弓I入標準命名空間的格式,缺少namespace,所以第1處

的語句修改為“usingnamespacestd;"。第2處,調用成員函數(shù)open中,

輸入、輸出方式是在ios類中定義的,所以“out1.open".txf,binary|

app)二'語句缺少類ios,即第2處的語句修改為“outl.open”.txt]ios::

binary|ios::app);”。第3個標識應該用流成員函數(shù)put輸出字符,所

以第3處的語句修改為“outl.put(s[i]);

42.(1)應改為“ein.getline(str,120,?);

(2)應改為"while(str[i])”。

⑶應改為“if(str[i]>=a&&str[i]v=2)”。

【解析】本題中要求以輸入字符為結束符,用于字符輸入的流成員

函數(shù)getline函數(shù)讀入一行字符,格式為“cin.getline(字符數(shù)組,字符

個數(shù),終止標志字符廣,所以第1處改為“cin.getline(str,

120,?);工第2處的“while(str)”語句應該是判斷字符串str中的每一

個字符是否為結束符,若不是結束符,在循環(huán)中判斷每一個字符是否

為小寫,若為小寫,則轉換。所以應該修改為“while?巾]廣。第3處的

“if(st明>=a)”語句是判斷字符str[i]是否為小寫字符,而現(xiàn)有的語句只

是判斷字符是否大于a,但是小寫字符應該是a到2,所以修改為

44if(str[i]>=a&&str[i]>=z),,o

43.(1)應改為"usingnamespacestd;

⑵應改為“outl.open("l.txt",ios::binaryIios::叩p);"。

(3)應改為“outl.put(s[i]);

【解析】本題第1處的“usingstd;”是在程序中引入標準命名空間std,

對于C++中引入標準命名空間的格式,缺少namespace,所以第1處

的語句修改為“usingnamespacestd;第2處,調用成員函數(shù)open

中,輸入、輸出方式是在ios類中定義的,所以“outl.open("l.txt'1,

binaryIapp);”語句缺少類ios,即第2處的語句修改為

4€outl.open("l.txt",ios::binaryIios::叩p);第3個標識應

該用流成員函數(shù)put輸出字符,所以第3處的語句

溫馨提示

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

評論

0/150

提交評論