C++自考歷年真題小集_第1頁
C++自考歷年真題小集_第2頁
C++自考歷年真題小集_第3頁
C++自考歷年真題小集_第4頁
C++自考歷年真題小集_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C++自考歷年真題小集.txt這是一個禁忌相繼崩潰的時代,沒人攔得著你,只有你自己攔著

自己,你的禁忌越多成就就越少。自卑有多種檔次,最高檔次的自卑表現(xiàn)為吹噓自己干什么

都是天才。全國2008年10月自學考試

C++程序設計試題

課程代碼:04737

一、單項選擇題(本大題共20小題,每小題1分,共20分)

在每小題列出的四個備選項中只有一個是符合題目要求的,請將其代碼填寫在題后的括號內。

錯選、多選或未選均無分。

1.對C++語言和C語言的兼容性,描述正確的是()

A.C++兼容C

B.C++部分兼容C

C.C++不兼容C

D.C兼容C++

2.在C++中使用流進行輸入輸出,其中用于屏幕輸出的對象是()

A.cerr

B.cin

C.cout

D.cfile

3.對使用關鍵字new所開辟的動態(tài)存儲空間,釋放時必須使用()

A.free

B.create

C.delete

D.realse

4.如沒有使用private關鍵字定義類的數(shù)據成員,則默認為()

A.private

B.public

C.protected

D.friend

5.使用值傳遞方式將實參傳給形參,下列說法正確的是()

A.形參是實參的備份

B.實參是形參的備份

C.形參和實參是同一對象

D.形參和實參無聯(lián)系

6.在函數(shù)調用時,如某一默認參數(shù)要指明一個特定值,則有()

A.其之前所有參數(shù)都必須賦值

B.其之后所有參數(shù)都必須賦值

C.其前、后所有參數(shù)都必須賦值

D.其前、后所有參數(shù)都不必賦值

7.設存在函數(shù)intmax(int,int)返回兩參數(shù)中較大值,若求22,59,70三者中最大值,

下列表達式不正確的是()

A.intm=max(22,max(59,70));

B.intm=max(max(22,59),70);

C.intm=max(22,59,70);

D.intm=max(59,max(22,70));

8.下列哪個類型函數(shù)不適合聲明為內聯(lián)函數(shù)()

A.函數(shù)體語句較多

B.函數(shù)體語句較少

C.函數(shù)執(zhí)行時間較短

D.函數(shù)執(zhí)行時間過長

9.intFunc(int,int);不可與下列哪個函數(shù)構成重載()

A.intFunc(int,int,int);

B.doubleFunc(int,int);

C.doubleFunc(double,double);

D.doubleFunc(int,double);

10.對類中聲明的變量,下列描述中正確的是()

A.屬于全局變量

B.只屬于該類

C.屬于該類,某些情況下也可被該類不同實例所共享

D.任何情況下都可被該類所有實例共享

11.類的私有成員可在何處訪問()

A.通過子類的對象訪問

B.本類及子類的成員函數(shù)中

C.通過該類對象訪問

D.本類的成員函數(shù)中

12.如果沒有為一個類定義任何構造函數(shù)的情況下,下列描述正確的是()

A.編譯器總是自動創(chuàng)建一個不帶參數(shù)的構造函數(shù)

B.這個類沒有構造函數(shù)

C.這個類不需要構造函數(shù)

D.該類不能通過編譯

13.?個類可包含析構函數(shù)的個數(shù)是()

A.0個

B.1個

C.至少一個

D.0個或多個

14.this指針存在的目的是()

A.保證基類公有成員在子類中可以被訪問

B.保證每個對象擁有自己的數(shù)據成員,但共享處理這些數(shù)據成員的代碼

C.保證基類保護成員在子類中可以被訪問

D.保證基類私有成員在子類中可以被訪問

15.下列關于類的權限的描述錯誤的是()

A.類本身的成員函數(shù)只能訪問自身的私有成員

B.類的對象只能訪問該類的公有成員

C.普通函數(shù)不能直接訪問類的公有成員,必須通過對象訪問

D.一個類可以將另一個類的對象作為成員

16.在編譯指令中,宏定義使用哪個指令()

A.ttinclude

B.ttdefine

C.#if

D.#else

17.設類A將其它類對象作為成員,則建立A類對象時,下列描述正確的是()

A.A類構造函數(shù)先執(zhí)行

B.成員構造函數(shù)先執(zhí)行

C.兩者并行執(zhí)行

D.不能確定

18.下列描述錯誤的是()

A.在創(chuàng)建對象前,靜態(tài)成員不存在

B.靜態(tài)成員是類的成員

C.靜態(tài)成員不能是虛函數(shù)

D.靜態(tài)成員函數(shù)不能直接訪問非靜態(tài)成員

19.對于友元描述正確的是()

A.友元是本類的成員函數(shù)

B.友元不是本類的成員函數(shù)

C.友元不是函數(shù)

D.友元不能訪問本類私有成員

20.在哪種派生方式中,派生類可以訪問基類中的protected成員()

A.public和private

B.public和protected

C.protected和private

D.僅protected

二、填空題(本大題共20小題,每小題1分,共20分)

請在每小題的空格中填上正確答案。錯填、不填均無分。

21.設要把一個文件輸出流對象myFile與文件“f:\myText.txt相關聯(lián),所用的C++語句

是:。

22.C++中ostream類的直接基類是。

23.運算符[]只能用運算符來重載,不能用友元運算符來重載。

24.定義虛函數(shù)所用的關鍵字是。

25.vector類中用于返回向量中第1個對象的方法是。

26.在C++中,利用向量類模板定義?個具有20個char的向量E,其元素均被置為字符't',

實現(xiàn)此操作的語句是。

27.類的繼承是指子類繼承基類的和成員函數(shù)。

28.不同對象可以調用相同名稱的函數(shù),但可導致完全不同的行為的現(xiàn)象稱為。

29.指令指示編譯器將一個源文件嵌入到帶該指令的源文件之中。

30.設類A有成員函數(shù)

voidFun(void);

若要定義一個指向類成員函數(shù)的指針變量pafn來指向Fun,該指針變量的聲明語句是:

31.設在程序中使用如下語句申請了一個對象數(shù)組:

Point*ptr=newPoint[2];

則在需要釋放ptr指向的動態(tài)數(shù)組對象時;所使用的語句是—

32.在保護派生中,基類權限為Private的成員在派生類中

33.類A有如下成員函數(shù)

intA::fun(doublex){return(int)x/2;)

intA::fun(intx){returnx*2;}

設a為類A的對象,在主函數(shù)中有ints=a.fun(6.0)+a.fun(2),則執(zhí)行該語句后,s的值

為________o

34.對象傳送的消息一般由3部分組成:接收對象名、調用操作名和o

35.將指向對象的指針作為函數(shù)參數(shù),形參是對象指針,實參是對象的_______o

36.在使用string類的find成員函數(shù)來檢索主串中是否含有指定的子串時,若在主事中不

含指定的子串,find函數(shù)的返回值是________。

37.在C++中,聲明布爾類型變量所用的關鍵字是o

38.執(zhí)行下列代碼

inta=29,b=100;

cout〈程序的輸出結果是:_.o

39.執(zhí)行下列代碼

cout<<〃Hex:〃?hex?255;

程序的輸出結果為O

40.C++語言中可以實現(xiàn)輸出一個換行符并刷新流功能的操控符是_______o

三、改錯題(本大題共5小題,每小題2分,共10分)

下面的類定義中有一處錯誤,請用下橫線標出錯誤所在行并給出修改意見。

41.ttinclude

main(){

intx=5,y=6;

constint*p=&x;

*p=y;

cout<<*p<)

42.^include

classf{

private:intx,y;

public:fl(){x=0;y=0;}

print(){cout<}

main(){

fa;

a.fl(l,1);

a.print();

)

43.ttinclude

classf{

private:intx=0,y=0;

public:voidfl(inta,intb){x=a;y=b;}

voidget(){cout<};

main(){

fa;

a.fl(1,3);

a.get();

)

44.ttinclude

classpoint{private:floatx;

public:voidf(floata){x=a;}

voidf(){x=0;}

friendfloatmax(pointfea,point&b);

);

floatmax(point&a,point&b)

{return(a.x>b.x)?a.x:b.x;)

main(){

pointa,b;

a.f(2.2);b.f(3.3);

cout<}

45.^include

template

classf{

private:Tx,y;

public:voidfl(Ta,Tb){x=a;y=b;}

Tmax(){retum(x>y)?x:y;}

};

main(){

fa;

a.fl(1.5,3.8);'

cout<)

四、完成程序題(本大題共5小題,每小題4分,共20分)

46.完成下面類中的成員函數(shù)的定義。

classpoint

(

private:

intm,n;

public:

point(int,int);

point(point&);

};

point::point(inta,intb)

(

m=a;

_________=b;

)

point::point()

m二t.m;

n=t.n;

)

47.下面是一個輸入半徑,輸出其面積和周長的C++程序,在下劃線處填上正確的語句。

#include

usingnamespacestd;

pi=3.14159;

voidmain()

(

doubler;

cout<<"r=/,;

double1=2.0*pi*r;

doubles=pi*r*r;

cout<<"\nThelongis:"<cout?,zTheareais:"<}

48.在下劃線處填上缺少的部分。

ttinclude

^include

usingnamespacestd;

classcomplex

(

public:

intreal;

intimag;

complex(intr=0,inti=0)

(

real二r;

imag=i;

)

};

complexoperator+(,complex&b)

(

intr=a.real+b.real;

inti=a.imag+b.imag;

return;

}

voidmain()

(

complexx(l,2),y(3,4),z;

z=x+y;

cout<}

49.程序的輸出結果如下:

1,9

50,30

請根據輸出數(shù)據在下面程序中的下劃線處填寫正確的語句。

源程序如下:

#include

usingnamespacestd;

classbase

(

private:

intm;

public:

base(){};

base(inta):m(a){}

intget(){returnm;}

voidset(inta){m=a;}

);

voidmain()

(

base*ptr=newbase[2];

ptr->set(30);

ptr=;

ptr->set(50);

basea[2]={l,9};

cout<cout<get()?,/,";

ptr=ptr-l;

cout<<<delete[]ptr;

)

50.在下面橫線處填上求兩個浮點數(shù)之差的cha函數(shù)的原型聲明、調用方法。

#include

usingnamespacestd;

voidmain()

(

floata,b;

//函數(shù)cha的原型聲明

a=12.5;

b=6.5;

floatc=;//調用函數(shù)cha

cout<}

floatcha(floatx,floaty)

(

floatw;

w=x-y;

returnw;

)

五、程序分析題(本大題共4小題,每小題5分,共20分)

51.給出下面程序的輸出結果。

#include

template

classSample

(

Tn;

public:

Sampledi){n=i;}

intoperator==(Sample&);

};

template

intSample::operator==(Sample&s)

(

if(n==s.n)

return1;

else

return0;

)

voidmain()

(

Samplesl(2),s2(3);.

cout?"si與s2的數(shù)據成員〃<?sl=二s2?〃相等":"不相等〃)<Samples3(2.5),

s4(2.5);

cout<<〃s3與s4的數(shù)據成員〃<<(s3=s4?"相等":〃不相等〃X}

52.給出下面程序的輸出結果。

#include

usingnamespacestd;

template

Tmax(Tml,Tm2)

{return(ml>m2)?ml:m2:}

voidmain(){

cout<cout<}

53.給出下面程序的輸出結果

#include

usingnamespacestd;

classA{

public:

intx;

A(){)

A(inta){x=a;}

intget(inta){returnx+a;}};

voidmain(){

Aa(8);

int(A::*p)(int);

p=A::get;

cout<<(a.*p)(5)<A*pi=&a;

cout?(pi->*P)(7)<54.給出下面程序的輸出結果。

include

#include

usingnamespacestd;

classBook{

char*title;

char*author;

intnumsold;

public:

Book(){}

Book(constchar*strl,constchartstr2,constintnum){

intlen=strlen(strl);

title=newchar[len+1];

strcpy(title,strl);

len=strlen(str2);

author=newchar[len+1];

strcpy(author,str2);

numsold=num;}

voidsetbook(constchar*strl,constchartstr2,constintnum){

intlen=strlen(strl);

title=newchar[len+1];

strcpy(title,strl);

len=strlen(str2);

author=newchar[len+1];

strcpy(author,str2);

numsold二num;

}

?Book(){

deletetitle;

deleteauthor;

)

voidprint(ostream&output){

output<<"書名:"<output<<"作者:"<output*"月銷售

量:〃<).

};

voidmain(){

Bookobjl("數(shù)據結構〃,〃嚴蔚敏〃,200),obj2;

objl.print(cout);

obj2.setbook(〃C++語言程序設計",〃李春葆〃,210);

obj2.print(cout);

)

六、程序設計題(本大題共1小題,共10分)

55.在三角形類TRI實現(xiàn)兩個函數(shù),功能是輸入三個頂點坐標判斷是否構成三角形

ttinclude

#include

classpoint{

private:floatx,y;

public:point(floata,floatb){x=a;y=b;}

point(){x=0;y=0;},

voidset(floata,floatb){x=a;y=b;}

floatgetx(){returnx;}

floatgety(){returny;}

);

classtri(

pointx,y,z;

floatsi,s2,s3;

public;...settri(....);//用于輸入三個頂點坐標

....test(....);//用于判斷是否構成三角形

);請寫出兩個函數(shù)的過程(如果需要形式參數(shù),請給出形參類型和數(shù)量,以及返回值

類型

全國2009年1月自學考試

C++程序設計試題

課程代碼:04737

一、單項選擇題(本大題共20小題,每小題1分,共20分)

在每小題列出的四個備選項中只有一個是符合題目要求的,請將其代碼填寫在題后的括號內o

錯選、多選或未選均無分。

1.C++源程序文件擴展名為()

A..cpp

B..h

C..lib

D..obj

2.在C++中使用流進行輸入輸出,其中專用于從鍵盤進行輸入的流是()

A.cerr

B.cin

C.cout

D.cfile

3.包含自定義頭文件file,h的預處理指令是()

A.#define<file.h>

B.#includefile,h

C.^definefile,h

D.#include,zfile.h〃

4.用于標識十六進制前綴或后綴是()

A.元

B.后綴L或e

C.前綴零

D.前綴Ox

5.設存在整型變量intx,則下列句與其它三項含義不同的是()

A.int*p=&x;

B.int&p=x;

C.int&p=x;

D.int&p=x;

6.在定義類成員時,為產生封裝性,則需使用哪個關鍵字()

A.public

B.publish

C.protected

D.private

7,設函數(shù)voidswap(int&,int&)將交換兩形參的值,如兩整型變量inta=10;intb=15;

則執(zhí)行swap(a,b)后,a、b值分別為()

A.10,10

B.10,15

C.15,10

D.15,15

8.函數(shù)默認參數(shù)在函數(shù)原型中說明,默認參數(shù)必須放在參數(shù)序列的()

A.前部

B.中部

C.后部

D.兩端

9.設存在函數(shù)intmin(int,int)返回兩參數(shù)中較小值,若求15,26,47三者中最小值,下

列表達式中錯誤的是()

A.intm=min(min(15,26),min(15,47));

B.intm=min(15,26,47);

C.intm=min(15,min(47,26));

D.intm=min(min(47,26),16);

10.下列函數(shù)不能和函數(shù)voidprint(char)構成重載的是()

A.intprint(int);

B.voidprint(char,char);

C.intprint(char);

D.voidprint(int,int);

11.在下列成對的表達式中,運算結果類型相同的一對是()

A.7/2和7.0/2.0

B.7/2.0和7/2

C7.0/2和7/2

D.7.0/2.0和7.0/2

12.內聯(lián)函數(shù)的特點是()

A.減少代碼量,加快訪問速度

B.減少代碼量,減緩訪問速度

C.增加代碼量,減緩訪問速度

D.增加代碼量,加快訪問速度

13.類的私有成員可在何處被訪問()

A.本類的成員函數(shù)中

B.本類及子類的成員函數(shù)中

C.通過對象名在任何位置

D.不可訪問

14.類的構造函數(shù)在以下什么情況下會被自動調用()

A.定義成員函數(shù)時

B.定義對象時

C.定義數(shù)據成員時

D.定義友元函數(shù)時

15.下列關于析構函數(shù)描述正確的是()

A.可以重載

B.函數(shù)體中必須有delete語句

C.返回類型必須是void類型

D.不能指定返回類型

16.設有函數(shù)TSum(Tx,Ty){returnx+y;),其中T為模板類型,則下列語句中對該函數(shù)

錯誤的使用是()

A.Sum(l,2);

B.Sum(3.0,2.2);

CSum('A','C');

D.Sum("A〃,"C");

17.下列哪個編譯指令屬于條件編譯指令()

A.^include

B.^define

C.#else

D.Spragma

18.關于類的靜態(tài)成員函數(shù)描述錯誤的是()

A.在創(chuàng)建對象前不存在

B.不能說明為虛函數(shù)

C.不能直接訪問非靜態(tài)函數(shù)

D.不是對象的成員

19.如果類A被聲明成類B的友元,則()

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

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

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

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

20.派生類的對象可以訪問以下那種情況繼承的基類成員()

A.私有繼承的私有成員

B.公有繼承的私有成員

C.私有繼承的保護成員

D.公有繼承的公有成員

二、填空題(本大題共20小題,每小題1分,共20分)

請在每小題的空格中填上正確答案。錯填、不填均無分。

21.若使用標準輸出流把整型變量a的值輸出到屏幕上,實現(xiàn)此操作的C++語句是。

22.C++將數(shù)據從一個對象流向另一個對象的流動抽象為“流”,從流中獲取數(shù)據的操作稱為

23.執(zhí)行下列代碼

intb=100;

cout?/zllex:z/?hex<<b;

程序的輸出結果是。

24.靜態(tài)聯(lián)編所支持的多態(tài)性稱為的多態(tài)性。

25.C++程序必須有且只有一個主函數(shù),其函數(shù)名為。

26.寫出聲明一個復數(shù)對象的語句,并使該對象被初始化為2.2+1.3i,此聲明語句是o

27.若有函數(shù)定義為:

intadd(intml=0,intm2=2,intm3=4)

{returnml+m2+m3;}

在主函數(shù)中有ints=add(l)+add(0,l)+add(0,1,2);

則執(zhí)行此語句后s的值為。

28.C++中使用關鍵字說明函數(shù)為內聯(lián)函數(shù)。

29.在源程序中有宏定義:#definePI3.14,則若不想使該宏定義影響到程序的其它地方,

可以使用刪除該宏定義。

30.類和其它數(shù)據類型不同的是,組成這種類型的不僅可以有數(shù)據,還可以有對數(shù)據進行操作

的。

31.有下列代碼inta=0;doubleb=0;cin?a?b;當用鍵盤輸入1.25時,b=。

32.對于類Point而言,其析構函數(shù)的定義原型為____o

33.對象成員構造函數(shù)的調用順序取決于這些對象在類中說明的順序,與它們在成員初始化列

表中給出的順序______O

34.類的簡單成員函數(shù)是指聲明中不含、volatile,static關鍵字的函數(shù)。

35.與操作對象的數(shù)據類型相互獨立的算法稱為____。

36.從一個或多個以前定義的類產生新類的過程稱為o

37.在vector類中向向量尾部插入一個對象的方法是____。

38.C++中用于動態(tài)創(chuàng)建對象,并返回該對象的指針的關鍵字是o

39.C++的流類庫預定義的與標準輸出設備相聯(lián)接的流是____。

40.執(zhí)行下列代碼

cout<<noshowpoint<<123.0;

程序輸出結果是O

三、改錯題(本大題共5小題,每小題2分,共10分)

下面的類定義中有一處錯誤,請用下橫線標出錯誤所在行并給出修改意見。

41.#include<iostream.h>

classf{

private:floatx,y;

public:f(floata,floatb){x=a;y=b;}

floatmax(){return(x<y)?x:y;}//求最大值

};

main(){

fa(l.5,3.8);

cout<<a.max()<<endl;

}

42.#include<iostream.h>

classtest{

private:intx;

public:test(inta){x=a;}

voidset(inta){x=a;}

voidget(){cout<<x<<endl;}

)

main(){

consttesta(3);

A.set⑸;

A.get();

}

43.#include<iostream.h>

classpoint{

private:floatx,y;

public:fl(floata,floatb){x=a;y=b;}

point(){x=0;y=0;}

voidgetx(){cout<<x<<endl;}

voidgety(){cout?y?endl;}

};

voidprint(pointa){cout?a.x?endl;}

main(){

pointa;

A.fl(3.0,5.0);

print(a);

)

44.#include<iostream.h>

classf(

private:intx,y;

public:fl(inta,intb){x=a;y=b;}

voidprint(){cout?x?y<<endl;}

};

mainO{

fa;

A.fl(1.5,1.8);

A.print();

)

45.#include<iostream.h>

main(){

intx=6;

constint*p二x;

cout<<*p?endl;

)

四、完成程序題(本大題共5小題,每小題4分,共20分)

46.完成下面程序,使其輸出10,并在退出運行時正確釋放分配給指針的存儲空間。

#include<iostream>

usingnamespacestd;

voidmain()

(

int*a,*p;

a=newint(10);

P=;

cout<<*p<<endl;

47.#include<iostream>

usingnamespacestd;

classbase

(

private:intx;

public:base(inta){x=a;}

intget(){returnx;}

voidshowbase(){cout?,,x="z<<x<<endl;}

);

classDerived:publicbase

{private:inty;

public:Derived(inta,intb):base(a){y=b;}

voidshowderivedO

{cout<<,,x=,,<<get()<<",y=zz<<y<<endl;}

);

voidmain()

(

baseb(3);

Derivedd(6,7);

b.showbase();

d.showderivedO;

b.showbase();

bl.showbase();

base*pb=&bl;

pb—>showbase();

d.showderivedO;

b.showbase();

)

輸出結果如下:

x=3

x=6,y=7

x=6

x=6

x=6

x=6,y=7

x=6

48.下面程序的運行結果如下:

B::display()

C::display()

在下劃線處填上缺少的部分。源程序如下:

#include<iostream>

usingnamespacestd;

classB

(

public:

display(){cout<<〃B::display()〃<<endl;

);

classC:publicB

public:

display(){cout?,,C::display(),z?endl;}

);

voidfun(B*p)

(

p->display();

)

voidmain()

(

Bb,*pb;

Cc;

pb=&b;

fun(pb);

pb=&c;

fun(pb);

)

49.下面程序的運行結果如下:

Thisislinel

Thisisline2

Thisisline3

在下劃線處填上缺少的部分。源程序如下:

ttinclude<iostream>

ttinclude

usingnamespacestd;

voidmain()

(

fstreamfin,fout;

fout.open(〃my.txt〃,ios::out);

if(!fout.is_open())

return;

for(inti=0;i<3;i=i+l)

fout?/zThisislinez,<<i+l?endl;

fout.closeO;

fin.open(〃my.txt〃,ios::in);

if(!fin.is_open())

return;

charstr[100];

while()

(

fin.getline(str,100);

cout<<str<<endl;

)

fin.close();

)

50.在下劃線處填上缺少的部分。源程序如下:

#include<iostream>

usingnamespacestd;

Tfun(Tx)

(

______y;

y=x*x-T(5);

returny;

)

voidmain()

(

floata=2;

cout?fun(a);

)

五、程序分析題(本大題共4小題,每小題5分,共20分)

51.請寫出myTextl.txt文本文件中的內容

#include<iostream>

#include<string>

usingnamespacestd;

#include<fstream>

voidmain()

(

ofstreammyFilel;

myFilel.open(z/myTextl.txt〃);

cout?z/EnterthedatainChineseformat(e.g.,2008,May25):/z<<endl;

stringDate(“2008,January1");

stringYear=Date,substr(0,4);

intk=Date.find(",");

inti二Date,find(〃〃);

stringMonth=Date,substr(k+1,i-k-l);

stringDay=Date.substr(i+1,2);

stringNewDate=Day+〃〃+Month+〃〃+Year;

myFilel?,zoriginaldate:z,<<Date?endl;

myFi1e1?,zConverteddate:,z<<NewDate<<endl;

myFilel.close();

)

52.給出下面程序的輸出結果

#include<iostream>

usingnamespacestd;

classSimple

intx,y;

public:

Simple(){x=y=O;}

Simple(inti,intj){x=i;y=j;}

voidcopy(Simple&s);

voidsetxy(inti,intj){x=i;y=j;}

voidprint()(cout?/,x=,/<<x<</,,y=z,<<y<<endl;}

);

voidSimple::copy(Simple&s)

(

x=s.x;y=s.y;

)

voidfunc(Simplesi,Simple&s2)

{

si.setxy(30,40);

s2.setxy(70,80);

)

voidmain()

(

Simpleobjl(1,2),obj2;

obj2.copy(objl);

func(objl,obj2);

objl.print();

obj2.print();

)

53.給出下面程序的輸出結果

#includez/iostream.h〃

intmain()

(

inti=17;

while(i>=10)

if(―i%4=3)continue;

else

cout?,zi=,z<<i―<<endl;

)

54.給出下面程序的輸出結果

#include<iostream>

usingnamespacestd;

voidmain()

(

intnum=300;

int&ref=num;

cout?ref;

ref=ref-100;

cout<<"〃<<num;

num=num-50;

cout<<,zzz<<ref<<endl;

)

六、程序設計題(本大題共1小題,共10分)

55.定義堆棧類模板Stack(先進后出),棧的大小由使用者確定。要求該類模板對外提供

如下二種基本操作:

(1)push入棧(2)pop出棧,用數(shù)組來實現(xiàn)

#include<iostream>

usingnamespacestd;

template<classT,intsize>

classStack{

Tx[size];

intcurrent;

public:

Stack(){current=0;}

....push(....);

....pop(....);

};

請寫出兩個函數(shù)的過程(如果需要形式參數(shù),請給出形參類型和數(shù)量,以及返回值類型)

全國2009年10月自學考試

C++程序設計試題

課程代碼:04737

一、單項選擇題(本大題共20小題,每小題1分,共20分)

在每小題列出的四個備選項中只有一個是符合題目要求的,請將其代碼填寫在題后的括號內。

錯選、多選或未選均無分。

1.對C++中主函數(shù)描述正確的是()

A.名稱為main,可為多個

B.名稱不限,可為多個

C.名稱為main,必須有且只能有一個

D.名稱不限,必須有且只能有一個

2.調用聲明為intresult(inta,intb)的函數(shù)時,正確的方法是()

A.result(1,2)

B.result(1)

C.result(0.1,0.3)

D.result(1,2,3)

3.用于包含C++標準庫iostream的預處理指令是()

A.ftdefine

B.#include

C.#define<iostream,

D.#include'iostream'

4.無類型標識符是指()

A.void

B.bool

C.short

D.long

5.從本質上看,引用是被引用變量的()

A.拷貝

B.別名

C.復制

D.克隆

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

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

B.charstr[2]={'a','b','c'};

C.charstr[l][2]={{,a,,'b*},{'e','d'}};

D.charstr[][]={'a'b'c'};

7.C++類中定義的成員默認訪問屬性為()

A.public

B.private

C.protected

D.friend

8.決定C++語言中函數(shù)的返回值類型的是()

A.return語句中的表達式類型

B.調用該函數(shù)時系統(tǒng)隨機產生的類型

C.調用該函數(shù)時的主調用函數(shù)類型

D.在定義該函數(shù)時所指定的數(shù)據類型

9.函數(shù)int&min(int&,int&)返回參數(shù)中較小者,設有兩整型變量inta=10;intb=15;

在執(zhí)行語句min(a,b)-;之后,a,b值分別為()

A.9,14

B.9,15

C.10,14

D.10,15

10.聲明函數(shù)為內聯(lián)函數(shù)時所使用的關鍵字為()

A.const

B.inline

C.short

D.signed

IL函數(shù)intsum(inta=l,intb=l,intc=3)可與下列哪個函數(shù)同時聲明()

A.doublesum(int);

B.charsum(int,int);

C.intsum(double);

D.intsum(int,int,int);

12.函數(shù)模板templatevoidFunc(T,T)可具有下列哪種實例化形式()

A.voidFunc(float,int)

B.voidFunc(char,char)

C.voidFunc(int,double)

D.voidFunc(bool,float)

13.下列訪問成員的方式哪個是正確的()

A.對象名,對象成員名

B.對象指針名.對象成員名

C.對象名f對象成員名

D.類名一對象成員名

14.對類A,復制構造函數(shù)的原型是()

A.A::A(constA&);

B.A::A(constA*);

C.A::A(constA);

D.A::A();

15.對classpoint,如使用point*ptr=newpoint[2];創(chuàng)建對象數(shù)組,則刪除此數(shù)組使用

的語句是()

A.deleteptr[2];

B.deletet]ptr;

C.deleteptr[];

D.delete[2]ptr;

16.下列哪個編譯指令不屬于條件編譯指令()

A.#if

B.#else

C.#endif

D.tterror

17.類A中存在靜態(tài)數(shù)據成員x,設a和b是類A的兩個對象,在執(zhí)行a.x=10之后,b.x

的值為()

A.未初始化

B.等于a.x

C.等于0

D.隨機

18.使用string/庫操縱字符串時,將兩個字符串連接成一個字符串的函數(shù)是()

A.strlen()

B.strcap()

C.strcat()

D.strcmp()

19.基類中的public成員,通過public派生,其在派生類中的訪問權限為()

A.不可訪問

B.private

C.protected

D.public

20.不同對象調用同名函數(shù),但導致完全不同行為的現(xiàn)象稱為()

A.抽象

B.封裝

C.繼承

D.多態(tài)性

二、填空題(本大題共20小題,每小題1分,共20分)

請在每小題的空格中填上正確答案。錯填、不填均無分。

21.在C++語言的面向對象設計框架中,是程序的基本組成單元。

22.執(zhí)行代碼doublepi=3.1415192;cout<<setprecision(3)<<pi;程序的輸出結果

是?

23.C++語言提供的的基本控制結構可以分為3種類型:順序結構、和循環(huán)結構。

24.要使用STL庫提供的對數(shù)組進行降嘉排序算法,在源程序中需要包含的頭文件是o

25.在C++標準庫中,用類來表示復數(shù)。

26.將對象作為函數(shù)參數(shù),是將實參對象的傳遞給形參對象,這種傳遞是單向的。

27.C++函數(shù)的返回類型可以是除數(shù)組與以外的任何類型。

28.能提供封裝的C++關鍵字是。

29.在C++的類聲明中,用public關鍵字聲明的類成員的訪問權限是。

30.開發(fā)一個C++語言程序的步驟通常包括編輯、、連接、運行和調試。

31.C++類中的_____函數(shù)在對象的生存期結束時被自動調用。

32.友元函數(shù)可以存取類的、公有成員和保護成員。

33.若類的成員函數(shù)用關鍵字static進行修飾,這樣的成員函數(shù)稱為。

34.在C++中,創(chuàng)建派生類對象時?,總是先從的初始化開始的。

35.類的繼承是指派生類繼承基類的數(shù)據成員和。

36.在C++中,利用向量類模板定義一個具有20個double的向量,其元素均被置為0.5,實

現(xiàn)此操作的語句是。

37.vector類中用于返回向量中的最后一個對象的方法是。

38.虛函數(shù)類似于重載函數(shù),但與重載函數(shù)的實現(xiàn)策略不同,對虛函數(shù)聲明時應使用

關鍵字。

39.在C++中,雖然友元提供了類之間數(shù)據進行訪問的?種方式,但它破壞了面向對象程序設

計的_______特性。

40.執(zhí)行下列代碼

cout<<showpoint<<123.0;程序的輸出結果是。

三、改錯題(本大題共5小題,每小題4分,共20分)

下面的每個程序都有一處錯誤,請用下橫線標出錯誤所在行并給出修改意見。

41.#include

usingnamespacestd;

intmain(){

intnum;max=10;num=1

while(num<max)num++;

cout<X"Num="?num;

return0;

)

42.#include

usingnamespacestd;

classA{

voidshow(){

cout<<"Hello!";

}

);

intmain(){

Aa;a.show();

return0;

)

43.#include

usingnamespacestd;

intmain()(

constintnum=20;

intscores[num];

for(inti=l;i<=num;i++){

scores[i]=i;

}

return0;

)

44.#include

usingnamespacestd;

classCMax{

private:

intxx;intyy;

public:

CMax(intx,inty)

{xx=x;yy=y;}

voidsetValue(intx,inty)

{xx=x;yy=y;}

intmax(){

returnxx>yy?xx:yy;

)

};

voidmain(){

CMaxm();

m.setValue(20,30);

cout<<"Max="<}

45.^include

usingnamespacestd;

classA{

public:

charname[255];

private:

char*getName()

{returnname;}

);

classB:publicA{

public:

B(char*n){

strcpy(name,n);

)

};

voidmain(){

Bb(〃Hello!");

cout<<"Name:"<}

四、完成程序題(本大題共5小題,每小題4分,共20分)

46,將下面程序補充完整,使程序輸出結果為:

Begin

Welcome

Show

End

程序如下:

#include

usingnamespacestd;

classA{

public:

cout<<〃Begin"<}

voidshow(){

cout<<"Show"<}

cout<<z,End"<}

);

Aobject;

intmain(){

cout?,zWelcome<object.show();

return0;

)

47.請將下面程序補充完整,使程序可以正常打印9X9乘法口訣。

#include

usingnamespacestd;

classA{

private:

inta;intb;

public:

{a=x;b=y;}

voidset(intx,inty)

{a=x;b=y;}

voiddisplay(){

cout<}

};

intmain(){

Aa(l,1);

for(inti=l;i<=9;i++){

for(intj=l;____;j++){

a.set(j,i);

a.display();

cout<<"";

}

cout<)

return0;

)

48.將下面程序補充完整,使程序可以輸入學生信息并計算平均成績。

#include

#include

usingnamespacestd;

classStudent{

private:

charname[255];

intscore[10];

public:

Student(charn[],ints[]){

for(inti=0;i<10;i++){

score[i]=s[i];

)

)

voidShow(){

intsum=0;

for(inti=0;i<10;i++){

)

cout<<〃名字:“<<name?w,平均成績:〃<}

);

voidmain(){

charname[255];

intscore[10];

cout?ff姓名:";cin?name;

for(inti=0;i<10;i++){

cout<<"成績"<cin〉〉score[i];

}

Students(name,score);

s.Show();

}

49.將下面程序補充完整,使程序可以正常運行,并釋放內存。

#include

classA{

private:

T*data;

intlength;

public:

A(intlen){

length=len;

data二newT[len];

)

?A()(

)

T&operator[](inti){

returndata[i];

}

};

intmain(){

Aobj(2);

obj[0]=l;

obj[l]=2;

cout<cout<return0;

}

50.將下面程序補充完整,使程序運行結果為:

ClassA

ClassB

程序如下:

#include

#include

classA(

public:

virtualvoidGetA()=0;

};

classB:publicA(

private:

charstr[32];

public:

voidGetA(){

cout<<"ClassA"<}

constchar*GetB(){

)

B(char*s){

strcpy(str,s);

}

};

voidmain(){

A*a;

Bb(〃ClassB");

a=;

a->GetA();

cout<return;

)

五、程序分析題(本大題共2小題,每小題5分,共10分)

51.ttinclude

usingnamespacestd;

intmain(){

inti,j;

for(i=l;i<=4;i+=l)

for(j=2;j<=4;j+=j){

if(i+j<5)

cout<<"+f,;

else

cout<<"*";

return0;

52.ttinclude

usingnamespacestd;

classA{

inta;

public:

A(intaa=O){a=aa;}

-A(){cout<<〃DestructorA!”<};

classB:publicA{

intb;

public:

B(intaa=0,intbb=0):A(aa){b=bb;}

?B(){cout<<"DestructorB!?b?endl;}

);

voidmain(){

Bx(5),y(6,7);

)

六、程序設計題(本大題10分)

53.下面Shape類是?個表示形狀的抽象類,Area()為求圖形面積的函數(shù)。請從Shape類派

生梯形類(Trapezoid)、圓形類(Circle),三角形類(Triangle),并給出具體的求面積函

數(shù)。其中,所有派生類計算面積需要用到的參數(shù)由構造函數(shù)給出,梯形面積計算需要上底、

下底和高,三角形面積需要底和高,圓形面積需要半徑。

形狀的抽象類聲明如下:考試大收集整理

classShape(

public:

virtualdoubleArea(

溫馨提示

  • 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

提交評論