2009-2010學(xué)年第一學(xué)期C++期末復(fù)習(xí)題網(wǎng)上的_第1頁
2009-2010學(xué)年第一學(xué)期C++期末復(fù)習(xí)題網(wǎng)上的_第2頁
2009-2010學(xué)年第一學(xué)期C++期末復(fù)習(xí)題網(wǎng)上的_第3頁
2009-2010學(xué)年第一學(xué)期C++期末復(fù)習(xí)題網(wǎng)上的_第4頁
2009-2010學(xué)年第一學(xué)期C++期末復(fù)習(xí)題網(wǎng)上的_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1.下列語句中錯誤的是(D)

A.int*p=newint(10);

B.int*p=newint[10];

C.

int*p=newint;

D.int*p=newint[40](0)

2.假設(shè)已經(jīng)有定義char*constname=”chen”;下面的語句中正確的是(A)

A.name[3]=’q’;

B.name=”lin”;

C.name=newchar[5]

D.name=newchar(‘q’);

3.下面的類型聲明中正確的是(D)

A.int&a[4]

B.int&*p;

C.int&&q;

D.intI,*p=&I;

4.在聲明類時,下面的說法正確的是(C)

A.可以在類的聲明中給數(shù)據(jù)成員賦值

B.數(shù)據(jù)成員的數(shù)據(jù)類型可以是register

C.private、public、protected可以按任意順序出現(xiàn)

D.沒有用private、public、protected定義的數(shù)據(jù)成員是公有成員

5.構(gòu)造函數(shù)是在(B)時被執(zhí)行的。

A.程序編譯

B.創(chuàng)建對象

C.創(chuàng)建類

D.程序裝入內(nèi)存

6.在下面有關(guān)友元函數(shù)的描述中,正確的說法是(A)

A.友元函數(shù)是獨立于當(dāng)前類的外部函數(shù)

B.一個友元函數(shù)不能同時定義為兩個類的有友元函數(shù)

C.友元函數(shù)必須在類的外部定義

D.在外部定義友元函數(shù)時,必須加關(guān)鍵字friend

7.使用派生類的主要作用是(A)

A.提高代碼的可重用性

B.提高程序的運行效率

C.加強類的封裝性

D.實現(xiàn)數(shù)據(jù)的隱藏

8.關(guān)于虛函數(shù),正確的描述是(A)

A.構(gòu)造函數(shù)不能是虛函數(shù)B.析構(gòu)函數(shù)不能是虛函數(shù)C.虛函數(shù)可以是友元函數(shù)D.虛函數(shù)可以是靜態(tài)成員函數(shù)

9.如果在基類中將成員函數(shù)show聲明為不帶返回值得純虛函數(shù),正確的寫法是(C)

A.virtualshow()=0;

B.virtualvoidshow()

C.virtualvoidshow()=0;

D.voidshow()=0virtual;

10.使用myFile.open(“sales.dat”,ios::app)語句打開文件sales.dat后,則(A)

A.該文件只能用于輸出

B.該文件只能用于輸入

C.該文件既能用于輸出,又能用于輸入

D.若該文件存在,則清除該文件的內(nèi)容

二、分析下列程序中的錯誤,并說明原因(前2題每題6分,第三題8分,共20分)

1.#include"iostream.h"

classstudent

{

charname[10];

intage;

floataver;

voidprintStu(){}

};

voidmain()

{

studentp1,p2,p3;

p1.age=16;

//…

}

2.#include"iostream.h"

classstack

{

public:

stack(intsz);

private:

char*p;

intsize;

};

stack::stack(intsz)

{

p=newchar[size=sz];

}

voidmain()

{

stackstt;

//...

}

3.#include"iostream.h"

classCTest

{

public:

constinty2;

CTest(inti1,inti2):y1(i1),y2(i2)

{

y1=10;

x=y1;

}

intreadme()const;

//...

private:

intx;

constinty1;

};

intCTest::readme()const

{

inti;

i=x;

x++;

returnx;

}

voidmain()

{

CTestc(2,8);

inti=c.y2;

i=c.y1;

}

三、寫出下列程序的運行結(jié)果(前2題每題6分,第三題8分,共20分)

1.#include"iostream.h"

classtoy

{

public:

toy(intq,intp)

{quan=q;price=p;}

intget_quan()

{returnquan;}

intget_price()

{returnprice;}

private:

intquan,price;

};

intmain()

{

toyop[2][2]={toy(10,20),toy(30,48),toy(50,68),toy(70,80)};

inti;

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

{

cout<<op[i][0].get_quan()<<",";

cout<<op[i][0].get_price()<<"\n";

cout<<op[i][1].get_quan()<<",";

cout<<op[i][1].get_price()<<"\n";

}

cout<<"\n";

return0;

}

2.#include"iostream.h"

classStock

{

public:

voidprint()

{cout<<"Stockclass.\n";}

};

classDer1_Stock:publicStock

{

public:

voidprint()

{cout<<"Deri1_Stockclass.\n";}

};

classDer2_Stock:publicStock

{

public:

voidprint()

{cout<<"Deri2_Stockclass.\n";}

};

voidmain()

{

Stocks1;

Stock*ptr;

Der1_Stockd1;

Der2_Stockd2;

ptr=&s1;

ptr->print();

ptr=&d1;

ptr->print();

ptr=&d2;

ptr->print();

}

3.#include"iostream.h"

classA

{

public:

A(inti):xi(i){}

A(){xi=0;}

friendAoperator++(Aa);

friendAoperator--(A&a);

voidprint();

private:

intxi;

};

Aoperator++(Aa)

{

++a.xi;

returna;

}

Aoperator--(A&a)

{

--a.xi;

returna;

}

voidA::print()

{cout<<xi<<endl;}

voidmain()

{

Ai(7);

++i;

i.print();

--i;

i.print();

}

1.答案:p1.age=16;有錯(3分),因為age是私有數(shù)據(jù)成員,不能直接訪問(3分)

2.答案:stackstt;有錯,(3分)類中沒有定義無參構(gòu)造函數(shù)(3分)

3.答案:錯誤1:y1=10;有錯(2分),y1是常成員,不能修改(1分)

錯誤2:x++;有錯(2分),readme函數(shù)是常成員函數(shù),不能修改對象的數(shù)據(jù)成員(1分)

錯誤3:i=c.y1;有錯(1分),y1是私有變量,不能直接存取(1分)

1.答案:10,20;30,48;50,6870,80

2.答案:Stockclass.

Stockclass.

Stockclass.

3.答案:7

6

B卷

一、選擇題(每題2分,共20分,答案填寫在題后的表格內(nèi))

1.假設(shè)已經(jīng)有定義constchar*constname=”chen”;下面的語句中正確的是(D)

A.name[3]=’a’;

B.name=”lin”;

C.name=newchar[5]

D.cout<<name[3];

2.假設(shè)已經(jīng)有定義const

char*name=”chen”;下面的語句中錯誤的是(A)

A.name[3]=’q’;

B.name=”lin”;

C.name=newchar[5]

D.name=newchar(‘q’);

3.在下面有關(guān)對構(gòu)造函數(shù)的描述中,正確的是(B)

A.構(gòu)造函數(shù)可以帶有返回值

B.構(gòu)造函數(shù)的名字與類名完全相同

C.構(gòu)造函數(shù)必須帶有參數(shù)

D.構(gòu)造函數(shù)必須定義,不能缺省

4.在下面有關(guān)析構(gòu)函數(shù)特征的描述中,正確的是(C)

A.一個類可以定義多個析構(gòu)函數(shù)B.析構(gòu)函數(shù)名與類名完全相同C.析構(gòu)函數(shù)不能指定返回類型

D.析構(gòu)函數(shù)可以有一個或多個參數(shù)

5.在下面有關(guān)靜態(tài)成員函數(shù)的描述中,正確的是(B)

A.在靜態(tài)成員函數(shù)中可以使用this指針

B.在建立對象前,就可以為靜態(tài)數(shù)據(jù)成員賦值

C.靜態(tài)成員函數(shù)在類外定義時,要用static前綴

D.靜態(tài)成員函數(shù)只能在類外定義

6.友元的作用之一是(A)

A.提高程序的運行效率

B.加強類的封裝性

C.實現(xiàn)數(shù)據(jù)的隱藏性

D.增加成員函數(shù)的種類

7.假設(shè)已經(jīng)定義好了一個類student,現(xiàn)在要定義類derived,它是從student私有派生的,定義類derived的正確寫法是(C)

A.classderived::studentprivate

B.classderived:studentpublic

C.classderived:privatestudent{//…

}

D.classderived::publicstudent{//…

}

8.要實現(xiàn)動態(tài)聯(lián)編,派生類中的虛函數(shù)(D)

A.返回的類型可以與虛函數(shù)的原型不同B.參數(shù)個數(shù)可以與虛函數(shù)的原型不同C.參數(shù)類型可以與虛函數(shù)的原型不同D.以上都不對

9.有關(guān)運算符重載正確的描述是(D)

A.C++語言允許在重載運算符時改變運算符的操作個數(shù)

B.C++語言允許在重載運算符時改變運算符的優(yōu)先級

C.C++語言允許在重載運算符時改變運算符的結(jié)合性

D.C++語言允許在重載運算符時改變運算符的原來的功能

10.假設(shè)定義了函數(shù)模板:

template<classT>

Tmax(Tx,Ty)

{return(x>y)?x:y;}

并定義了inti=6;charc=’a’;錯誤的調(diào)用語句是(D)

A.max(i,i)

B.max(c,c)

C.max((int)c,i)

D.max(i,c)

二、分析下列程序中的錯誤,并說明原因(前2題每題6分,第三題8分,共20分)

1.#include"iostream.h"

classpoint

{public:

intx,y;

private:

point(){x=1;y=2;}};

voidmain()

{pointcpoint;

cpoint.x=2;}

2.#include"iostream.h"

template<classT>

classStack

{public:

Stack(intsz)

{v=p=newT[size=sz];}

~Stack()

{delete[]v;}

voidpush(Tx)

{*p++=x;}

Tpop()

{return*--p;}

intlenth()const

{return(p-v);}

private:

T*v,*p;

intsize;};

voidmain()

{Stack

obj(5);

obj.push(10);}

3.#include"iostream.h"

classstudent

{intsno;

intage;

voidprintStu();

voidsetSno(intd);};

voidprintStu()

{cout<<”\nStudentNo.is“<<sno<<”,”;cout<<”ageis”<<age<<”.”<<endl;}

voidsetSno(intd)

{sno=d;}

voidsetAge(inta)

{age=a;}

voidmain()

{studentlin;

lin.setSno(20021);

lin.setAge(20);

lin.printStu();}

三、寫出下列程序的運行結(jié)果(前2題每題6分,第三題8分,共20分)

1.#include"iostream.h"

classb1

{public:

b1(intii)

{i=ii;}

voiddisplay()

{cout<<i<<endl;}

protected:

inti;};

classb2

{public:

b2(intjj)

{j=jj;}

voiddisplay()

{cout<<j<<endl;}

protected:

intj;};

classb3:publicb1,publicb2

{public:

b3(intii,intjj,intkk):b1(ii),b2(jj)

{k=kk;}

voidsetall(intii,intjj,intkk)

{i=ii;j=jj;k=kk;}

voiddisplay()

{cout<<i<<endl;

cout<<j<<endl;

cout<<k<<endl;}

private:

intk;};

voidmain()

{b1o1(40);

o1.display();

b2o2(50);

o2.display();

b3o3(10,20,30);

o3.display();

o3.setall(50,60,70);

o3.display();}

2.#include"iostream.h"

classStock

{public:

virtualvoidprint()

{cout<<"Stockclass.\n";}};

classDer1_Stock:publicStock

{public:

voidprint()

{cout<<"Deri1_Stockclass.\n";}};

classDer2_Stock:publicStock

{public:

voidprint()

{cout<<"Deri2_Stockclass.\n";}};

voidmain()

{Stocks1;

Stock*ptr;

Der1_Stockd1;

Der2_Stockd2;

ptr=&s1;

ptr->print();

ptr=&d1;

ptr->print();

ptr=&d2;

ptr->print();}

3.#include<iostream.h>

constintsize=10;

template<classType>

//聲明一個類模板

classstack

{public:

voidinit(){tos=0;}

voidpush(Typech);

//參數(shù)取Type類型

Typepop();

//返回類型取Type類型

private:

Typestck[size];

//數(shù)組的類型為類型參數(shù)Type,即可取任意類型

inttos;};

template<classType>

voidstack<Type>::push(Typeob)

{if(tos==size){cout<<"stackisfull";return;}

stck[tos]=ob;tos++;}

template<classType>

Typestack<Type>::pop()

{if(tos==0)

{cout<<"stackisempty";

return0;}

tos--;

returnstck[tos];}

intmain()

{

//定義字符堆棧

stack<char>s1,s2;

//創(chuàng)建兩個模板參數(shù)為char型的對象

inti;

s1.init();

s2.init();

s1.push('a');s2.push('x');

s1.push('b');s2.push('y');

s1.push('c');s2.push('z');

for(i=0;i<3;i++)cout<<"pops1:"<<s1.pop()<<endl;

for(i=0;i<3;i++)cout<<"pops2:"<<s2.pop()<<endl;

return0;}

二、分析下列程序中的錯誤,并說明原因(前2題每題6分,第三題8分,共20分)

1.答案:pointcpoint;是錯誤的(3分),因為構(gòu)造函數(shù)是私有成員(3分)

2.答案:Stack

obj(5);有錯(3分),因為Stack是類模板,應(yīng)將模板實例化,才可定義對象(3分)

3.答案:錯誤1:printStu、setSno兩個成員函數(shù)不是公有成員,不允許在類外訪問(4分)

錯誤2:成員函數(shù)在類外定義,應(yīng)加上類名“student::”(2分)

錯誤3:setAge函數(shù)應(yīng)在類中說明(2分)

三、寫出下列程序的運行結(jié)果(前2題每題6分,第三題8分,共20分)

1.答案:40

50

10

20

30

506070

2.答案:Stockclass.

Deri1_Stockclass.

Deri2_Stockclass.

3.答案:pops1:c

pops1:b

pops1:a

pops2:z

pops2:y

pops2:xA

一、單項選擇題:(每小題2分,共20分)

1、假設(shè)已經(jīng)有定義constchar*name=”chen”;下列語句中錯誤的是_____________

A.name[3]=’q’

B.name=”lin”

C.name=newchar[5]

D.name=newchar(‘q’)

2、在下列關(guān)鍵字中,用于說明類中公有成員的是____________

A.public

B.private

C.protected

D.friend

3、下列哪項不是面向?qū)ο蟪绦蛟O(shè)計的主要特征_______________。

A.封裝

B.繼承

D.多態(tài)

D.結(jié)構(gòu)

4、構(gòu)造函數(shù)是在__________時被執(zhí)行的。

A.程序編譯

B.創(chuàng)建對象C.創(chuàng)建類

D.程序裝入內(nèi)存

5、在下面有關(guān)析構(gòu)函數(shù)的描述中,正確的是____________

A.一個類中可以定義多個析構(gòu)函數(shù)

B.析構(gòu)函數(shù)的名字和類名完全相同

C.析構(gòu)函數(shù)不能指定返回類型

D.析構(gòu)函數(shù)可以有一個或多個參數(shù)

6、使用派生類的主要原因是_______________

A.提高代碼的可充用性

B.提高程序的運行效率

C.加強類的封裝性

D.實現(xiàn)數(shù)據(jù)的隱藏

7、下列的各函數(shù)中,___________不是類的成員函數(shù).

A.構(gòu)造函數(shù)

B.析構(gòu)函數(shù)

C.友元函數(shù)

D.拷貝構(gòu)造函數(shù)

8、關(guān)于虛函數(shù),正確的描述是_______________

A.構(gòu)造函數(shù)不能是虛函數(shù)

B.析構(gòu)函數(shù)不能是虛函數(shù)

C.虛函數(shù)可以是友元函數(shù)

D.虛函數(shù)可以是靜態(tài)成員函數(shù)

9、友元的作用之一是____________

A.提高程序的運用效率

B.加強類的封裝性

C.實現(xiàn)數(shù)據(jù)的隱藏性

D.增加成員函數(shù)的種類

10、在下面有關(guān)靜態(tài)成員函數(shù)的描述中,正確的是________________

A.在靜態(tài)成員函數(shù)中可以使用this指針

B.在建立對象前,就可以為靜態(tài)數(shù)據(jù)成員賦值

C.靜態(tài)成員函數(shù)在類外定義時,要用static前綴

D.靜態(tài)成員函數(shù)只能在類外定義

評卷人

二、判斷題:(每題1分,共10分)

(

)1、使用關(guān)鍵字class定義的類中缺省的訪問權(quán)限是私有(private)的。

(

)2、構(gòu)造函數(shù)和析構(gòu)函數(shù)都不能重載。

(

)3、說明或定義對象時,類名前不需加關(guān)鍵字class。

(

)4、可以在類的構(gòu)造函數(shù)中對靜態(tài)數(shù)據(jù)成員進行初始化。

(

)5、protected和private區(qū)別在于protected成員可以被派生類訪問,而private成員則不能被派生類訪問。

(

)6、在C++中,封裝是通過類實現(xiàn)的。

(

)7、無論何時編譯器都為類構(gòu)造一個無參數(shù)的缺省的構(gòu)造函數(shù)。

(

)8、無論什么方式的繼承,基類的私有成員都不能被派生類訪問。

(

)9、在c++中,只有在類對象定義之后才能給數(shù)據(jù)成員賦初值。

(

)10、創(chuàng)建派生類對象時,先調(diào)用基類的構(gòu)造函數(shù),再調(diào)用派生類的構(gòu)造函數(shù)。

評卷人1、受保護成員

2、同類對象的引用

3、封裝

4、公有的

5、封裝,繼承

6、基類

7、作用域分隔符限定,構(gòu)造函數(shù),析構(gòu)函數(shù)

三、填空題:(每空1分,共10分)

1、在C++中,類的成員訪問權(quán)限分別是:公有成員,私有成員和_________________。

2、拷貝構(gòu)造函數(shù)使用_______________作為參數(shù)初始化創(chuàng)建中的對象。

3、在C++中,雖然友元提供了類之間數(shù)據(jù)進行訪問的一種方式,但它破壞了面向?qū)ο蟪绦蛟O(shè)計的______________特性。

4、在公有繼承的情況下,基類數(shù)據(jù)成員在派生類中的訪問權(quán)限__________________。

5、在面向?qū)ο蟮某绦蛟O(shè)計中,通過________實現(xiàn)數(shù)據(jù)隱藏;通過________實現(xiàn)代碼的復(fù)用。

6、在C++中,構(gòu)造派生類對象時,總是先從_________的初始化開始的。

7、在基類和派生類中,派生類可以定義其基類中不具備的數(shù)據(jù)和操作。對兩個有相同名字的數(shù)據(jù)成員進行訪問時,如果沒有___________,對此數(shù)據(jù)成員的訪問將出現(xiàn)歧義;而________、_________和operator=是不能被派生類繼承的。

評卷人

四、寫出程序運行結(jié)果(每題5分,共30分)

1、#include<iostream.h>

2、#include<iostream.h>

int&f(int&i)

inti=15;

{i+=10;returni;}

voidmain()

void

main()

{inti;

{intk=0;

i=100;

int&m=f(k);

::i=i+1;

cout<<k<<endl;

cout<<::i<<endl;

m=20;

}

cout<<k<<endl;

4、#include<iostream.h>

}

#include<stdlib.h>

3、#include<iostream.h>

classtimer{

classdate{

public:timer(){seconds=0;}

public:voidsetdate(inty,intm,intd);

timer(char*t){seconds=atoi(t);}

voidshowdate();

timer(intt){seconds=t;}

private:intyear,month,day;};

timer(intmin,intsec){seconds=min*60+sec;}

voiddate::setdate((inty,intm,intd)

intgettime(){returnseconds;}

{year=y;month=d;day=d;}

private:seconds;};

voiddate::showdate()

voidmain()

{cout<<year<<”.”<<month<<”.”<<day<<endl;}

{timera,b(10),c(“20”),d(1,10);

voidmain()

cout<<”seconds1=”<<a.gettime()<<endl;

{datedate1,date2;

cout<<”seconds2=”<<b.gettime()<<endl;

date1.setdate(2000,4,28);

cout<<”seconds3=”<<c.gettime()<<endl;

date1.showdate();

cout<<”seconds4=”<<d.gettime()<<endl;}

date2.setdate(2006,10,25);

6、#include<iostream.h>

date2.showdate();}

classbase{

5、#include<iostream.h>

public:base(intsa){a=sa;

classbase

cout<<”constructingbase”<<endl;}

{intn;

private:inta;};

public:base(inta)

classbase1:virtualpublicbase{

{cout<<"constructingbaseclass"<<endl;

public:base1(intsa,intsb):base(sa)

n=a;

{b=sb;

cout<<"n="<<n<<endl;}

cout<<”constructingbase1”<<endl;}

~base(){cout<<"destructingbaseclass"<<endl;}};

private:intb;};

classsubs:publicbase

classbase2:virtualpublicbase{

{basebobj;

public:base2(intsa,intsc)::base(sa)

intm;

{c=sc;

public:subs(inta,intb,intc):base(a),bobj(c)

cout<<”constructingbase2”<<endl;}

{

private:intc;};

cout<<"constructingsubcass"<<endl;

classderived:publicbase1,publicbase2{

m=b;

public:derived(intsa,intsb,intsc,intsd):

cout<<"m="<<m<<endl;

base(sa),base1(sa,sb),base2(sa,sc)

}

{d=sd;

~subs(){cout<<"destructingsubclass"<<endl;}

cout<<”constructingderived”<<endl;}

};

private:intd;};

voidmain(){subss(1,2,3);}

main(){derivedobj(2,4,6,8);return0;}

一、單項選擇題:(每小題2分,共20分)

AADBC

ACAAB

二、判斷題:(每題1分,共10分)

對錯對錯對

對錯對對對

三、填空題:(每空1分,共10分)

1、受保護成員

2、同類對象的引用

3、封裝

4、公有的

5、封裝,繼承

6、基類

7、作用域分隔符限定,構(gòu)造函數(shù),析構(gòu)函數(shù)

四、寫出程序運行結(jié)果(每題5分,共30分)

1、10

20

2、101

溫馨提示

  • 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論