科目一C(含題目)_第1頁
科目一C(含題目)_第2頁
科目一C(含題目)_第3頁
科目一C(含題目)_第4頁
科目一C(含題目)_第5頁
已閱讀5頁,還剩49頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

科目一:[04737]C++程序設(shè)計(jì)

[-]課程信息

1-10ACDBBDACAC

11-20BACACAAACC

21-27CDDCCBB

1、(A)年正式取名為C++

[A]1983

[B]1986

[C]1978

[D]1999

2、本章節(jié)題目如下:

int類型占用(C)字節(jié)存儲(chǔ)空間。

[A]1

[B]2

[CJ4

[D]8

3、使用if—else語句嵌套最多可以實(shí)現(xiàn)(D)分支

[A]1[B]2[C]4[D]無數(shù)多

4、(B)循環(huán)語句至少會(huì)被執(zhí)行一次.

[A]while

[B]do_while

[C]for

[D]都不是

5、本章節(jié)題目如下:

for循環(huán)的判斷條件是(B)

[A]第個(gè)表達(dá)式

fB]第二個(gè)表達(dá)式

[C]第三個(gè)表達(dá)式

[D]以上都不對(duì)

6、本章節(jié)題目如下:

定義結(jié)構(gòu)體使用的關(guān)鍵字是(D)

IAJvirtual

[B]union

IC]private

[D]struct

7、下列說法錯(cuò)誤的是(A)

[A]函數(shù)可以嵌套定義

[B]函數(shù)可以嵌套調(diào)用

[C]函數(shù)可以沒有參數(shù)

[D]函數(shù)可以有多個(gè)參數(shù)

8、要把一個(gè)函數(shù)定義為內(nèi)聯(lián)函數(shù),應(yīng)該使用關(guān)鍵字(C)

[A]void

I

[B]important

[C]inline

[D]line

9、重載函數(shù)的必須滿足(A)

IAJ形參個(gè)數(shù)或類型不同

[B]返回值不同

[CJ函數(shù)名不同

[D]形參名不同

10、類中(C)修飾的成員可以在類外訪問。

[A]private

[B]protected

[C]public

[DJ以上都不對(duì)

11、構(gòu)造函數(shù)(B)時(shí)候被自動(dòng)調(diào)用。

IAJ對(duì)象銷毀

[B]對(duì)象創(chuàng)建

[C]對(duì)象引用

[D]對(duì)象賦值

12、析構(gòu)函數(shù)(A)時(shí)候被自動(dòng)調(diào)用。

[A]對(duì)象銷毀

[B]對(duì)象創(chuàng)建

[C]對(duì)象引用

[D]對(duì)象賦值

13UML語言是一?種可視化的的面向?qū)ο螅–)語言。

[A]編程

[B]編輯

[C]建模

[D]設(shè)計(jì)

14、函數(shù)內(nèi)部聲明靜態(tài)生存期對(duì)象,要冠以關(guān)鍵字(A)

[A]static

[Blvirtual

[CJclass

[D]public

15靜態(tài)生存期與程序的(C)相同。

[A]編輯期

[B]編譯期

[C]運(yùn)行期

[D]連接期

16友元函數(shù)是在類聲明中由關(guān)鍵字(A)修飾說明的非成員函數(shù)。

[AJfriend

[B]virtual

[CJprivate

[D]public

17包含指令使用的關(guān)鍵字是(A)

2

[A]#include

[B]#define

[C]#if

[D]#undef

18?維數(shù)組的下標(biāo)從(A)開始。

[A]0

[B]1

[C]2

[DI3

19、定義二維數(shù)組inla[3[4],一共定義了(C)個(gè)元素。

fA]3

[B]4

[C]12

[D]24

20、假設(shè)有定義int*p,貝Up=p+I后,p中地址值會(huì)(C)

[B]加2

[C]加4

[D]加8

21、存放字符串“china”需要占用(C)個(gè)字節(jié)內(nèi)存空間。

[A]1

[B]5

LC]6

[D]8

22、下面哪一個(gè)不是類的繼承方式(D)。

[A]public

[BJprotected

[C]private

[D]inline

23、下列說法錯(cuò)誤的是(D)

[A]基類的構(gòu)造函數(shù)不被繼承

[B]聲明構(gòu)造函數(shù)時(shí);只需要對(duì)本類中新增成員進(jìn)行初始化

[C]派生類的構(gòu)造函數(shù)需要給基類的構(gòu)造函數(shù)傳遞參數(shù)

[D]聲明構(gòu)造函數(shù)時(shí),不但需要對(duì)本類中新增成員進(jìn)行初始化,而且要為基類成員初

始化

24定義虛基類需要使用關(guān)鍵字(C)。

IAJprivate

[B]class

LC]virtua1

[D]static

25、函數(shù)重載實(shí)現(xiàn)了面向?qū)ο蟮模–)。

[A]抽象性

[B]封裝性

[C]多態(tài)性

[D]繼承

3

26、B編譯時(shí)

27下列關(guān)于抽象類說法錯(cuò)誤的是(B)。

[AJ抽象類只能作為基類來使用

[B]可以聲明抽象類的對(duì)象

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

[D]析構(gòu)函數(shù)可以是虛函數(shù)

【二】階段作業(yè)

單元測試

cccccDCBBBBBBACAAADB

二、DCCDCCCBACBBCCDBAABB

三、DDABDBDDADBCBABBDCCB

四、ACCABABABADCACDCDCAD

五、BBDABDBCADCAABDDCADD

簡答練習(xí)

練習(xí)題一

[1]若使用標(biāo)準(zhǔn)輸出流把整型變量a的值輸出到屏幕上,實(shí)現(xiàn)此操作的C++語句是。

答:cout?a

[2]C++將數(shù)據(jù)從一個(gè)對(duì)象流向另一個(gè)對(duì)象的流動(dòng)抽象為“流”,從流中獲取數(shù)據(jù)的操作稱

為。

答:提取

[3]執(zhí)行下列代碼

intb=100;

cout?z/hex:”<

程序的輸出結(jié)果是。

答:Hex:64

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

答:編譯時(shí)

[5]C++程序必須有且只有一個(gè)主函數(shù),其函數(shù)名為。

答:main

[6]寫出聲明一個(gè)復(fù)數(shù)對(duì)象的語句,并使該對(duì)象被初始化為2.2+1.3i,此聲明語句是。

答:Complexa(2.2,1.3)

[7]若有函數(shù)定義為:

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

{returnml+m2+m3;}

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

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

答:15

[8]C++中使用關(guān)鍵字說明函數(shù)為內(nèi)聯(lián)函數(shù)。

答:inline

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

可以使用刪除該宏定義。

答:#undefPI

4

[10]類和其它數(shù)據(jù)類型不同的是,組成這種類型的不僅可以有數(shù)據(jù),還可以有對(duì)數(shù)據(jù)進(jìn)

行操作的。

答:函數(shù)

[11]有下列代碼inta=0;doubleb=0;cin?a?b;當(dāng)用鍵盤輸入1.25時(shí),b=。

答:b=0.25a=l

[12]對(duì)于類Point而言,其析構(gòu)函數(shù)的定義原型為o

答:~Point()

[13]對(duì)象成員構(gòu)造函數(shù)的調(diào)用順序取決于這些對(duì)象在類中說明的順序,與它們在成員初始化

列表中給出的順序o

答:無關(guān)

[14]類的簡單成員函數(shù)是指聲明中不含______、volatile、static關(guān)鍵字的函數(shù)。

答:const

[15]與操作對(duì)象的數(shù)據(jù)類型相互獨(dú)立的算法稱為。

答:泛型算法

[16]從一個(gè)或多個(gè)以前定義的類產(chǎn)生新類的過程稱為______o

答:派生

[17]在vector類中向向量尾部插入一個(gè)對(duì)象的方法是。

答:push_back(constT&)

[18]C++中用于動(dòng)態(tài)創(chuàng)建對(duì)象,并返回該對(duì)象的指針的關(guān)鍵字是______o

答:new

[19]C++的流類庫預(yù)定義的與標(biāo)準(zhǔn)輸出設(shè)備相聯(lián)接的流是_______。

答:cout

[20]執(zhí)行下列代碼

cout?123.0;

程序輸出結(jié)果是_____O

答:123

[21]下面有一處錯(cuò)誤,請給出修改意見。

#include

classf{

private:floatx,y;

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

floatmax(){return(x<strong=〃〃>

);

main(){

fa(1.5,3.8);

cout?<endl;<=〃〃>

)

答:將floatmax(){return(x改為floatmax(){return(xy)x:y;}

[22]下面有一處錯(cuò)誤,請給出修改意見。

#include

classtest{

private:intx;

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

5

voidset(inta){x=a;}

voidget(){cout?strong=u">

)

main(){

consttesta(3);

a.set(5);

a.get();

}

答案:a.set(5);a是常對(duì)象,不能被更新

[231下面有?處錯(cuò)誤,請給出修改意見。

#include

classpoint{

private:floatx,y;

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

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

voidgetx(){cout?strong="">

voidgety(){cout?strong=,,n>

};

voidprint(pointa){cout?strong=u">

main(){

pointa;

a.fl(3.0,5.0);

print(a);

)

答:print(pointa){cout?a.x?endl;}print()不是成員函數(shù)不允許直接調(diào)用a.x或?qū)rivatefoat

x,y;改為public:floatx,y;或cour?a.x<<endl;改為a.getx();

[24]下面有一處錯(cuò)誤,請給出修改意見。

#include

6

classf{

private:intx,y;

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

voidprint(){cout?strong=',n>

);

main(){

fa;

a.fl(1.5,1.8);

a.print();

)

答:a.fl(1.5J.8);fl()調(diào)用時(shí)實(shí)參與形參類型不一致

[25]下面有一處錯(cuò)誤,請給出修改意見。

#include

main(){

intx=6;

constint*p=x;

cout?*p?strong=,H'>

)

答:constint*p=x;變量給指針p賦值必須加上&;

[26]完成下面程序,使其輸出10,并在退出運(yùn)行時(shí)正確釋放分配給指針的存儲(chǔ)空間。

#include

usingnamespacestd;

voidmain()

(

int*a,*p;

a=newint(10);

P=;

cout?*p?strong='*">

7

答:a;deletea;

[27]

^include

usingnamespacestd;

classbase

(

private:intx;

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

intget(){returnx;}

voidshowbase(){cout<〈"x=〃<<strong=〃〃>

);

classDerived:publicbase

{private:inty;

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

voidshowderived()

{cout<<,,x=,,?get()<<",y="<<strong-”)

);

voidmainO

(

baseb(3);

Derivedd(6,7);

b.showbase();

d.showderived();

b二d;

b.showbase();

bl.showbase();

base*pb=&bl;

pb->showbase();

8

d.showderivedO;

b.showbase();

)

輸出結(jié)果如下:

x=3

x=6,y=7

x=6

x=6

x=6

x=6,y=7

x=6

答:Derivedbl(6,7)

[28]下面程序的運(yùn)行結(jié)果如下:

B::display()

C::display()

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

#include<iostream>

usingnamespacestd;

classB

!

public:

display()(cout<<〃B::display(),z?endl;}

);

classC:publicB

(

public:

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

);

voidfun(B*p)

(

p->display();

)

voidmain()

9

Bb,*pb;

Cc;

pb=&b;

fun(pb);

pb=&c;

fun(pb);

)

答:virtual_void_

[29]下面程序的運(yùn)行結(jié)果如下:

Thisislinel

Thisisline2

Thisisline3

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

#include

#include

usingnamespacestd;

voidmain()

{

fstreamfin,fout;

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

if(!fout.is_open())

return;

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

fout<<,zThisislinez,<?endl;<strong=〃〃>

fout.closeO;

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

if(!fin.is_open())

return;

charstr[100];

while(!fin.eof())

(

fin.getline(str,100);

cout?strong="〃>

10

}

fin.close();

)

答:<fstream>

!Fin.cof()

[30]

#include<iostream>

usingnamespacestd;

template<classT>

Tfun(Tx)

(

_____y;

y=x*x-T(5);

returny;

)

voidmain()

{

floata=2;

cout<<fun(a);

)

答:T

[31]

給出下面程序的輸出結(jié)果

#include<iostream>

usingnamespacestd;

classSimple

(

intx,y;

public:

Simple(){x=y=0;}

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

voidcopy(Simple&s);

11

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

voidprint(){cout<X〃x=〃<Xx<<〃,y="<<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();

)

答:x=l,y=2x=70,y=80

[32]

給出下面程序的輸出結(jié)果

#include<iostream>

usingnamespacestd;

voidmain()

(

intnum=300;

int&ref=num;

cout?ref;

ref-ref-100;

cout<<〃/z?num;

num=num-50;

12

cout?z,(,?ref?endl;

答:300200150

練習(xí)題二

[1]設(shè)要把一個(gè)文件輸出流對(duì)象myFile與文件“f:\myText.txt相關(guān)聯(lián),所用的C++語句

是:()。

答:ofstreammyFile("f:\\myText.txt)

[2]C++中。stream類的直接基類是()類。

答:ios

[3]運(yùn)算符[]只能用()運(yùn)算符來重載,不能用友元運(yùn)算符來重載。

答:成員

[4]定義虛函數(shù)所用的關(guān)鍵字是()。

答:virtual

[5]vector類中用于返回向量中第1個(gè)對(duì)象的方法是front()。

答:front。

[6]在C++中,利用向量類模板定義一個(gè)具有20個(gè)char的向量E,其元素均被置為字符

't',實(shí)現(xiàn)此操作的語句是()

答:vectorE(20,'t')

[7]類的繼承是指子類繼承基類的()和成員函數(shù)。

答:數(shù)據(jù)成員

[8]不同對(duì)象可以調(diào)用相同名稱的函數(shù),但可導(dǎo)致完全不同的行為的現(xiàn)象稱為()。

答:多態(tài)性

[9]0指令指示編譯器將一個(gè)源文件嵌入到帶該指令的源文件之中。

答:ftinclude

13

[10]設(shè)類A有成員函數(shù)

voidFun(void);

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

答:void(A::*pafn)(void);

[11]設(shè)在程序中使用如下語句申請了一個(gè)對(duì)象數(shù)組:

Point*ptr=newPoint[2];

則在需要釋放ptr指向的動(dòng)態(tài)數(shù)組對(duì)象時(shí),所使用的語句是()

答:delete[]ptr;

[12]在保護(hù)派生中,基類權(quán)限為Private的成員在派生類()中。

答:不可訪問

[13]類A有如下成員函數(shù)

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

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

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

為()。

答:7

[14]對(duì)象傳送的消息一般由3部分組成:接收對(duì)象名、調(diào)用操作名和()。

答:必要的參數(shù)

[15]將指向?qū)ο蟮闹羔樧鳛楹瘮?shù)參數(shù),形參是對(duì)象指針,實(shí)參是對(duì)象的()。

答:地址值

[16]在使用string類的find成員函數(shù)來檢索主串中是否含有指定的子串時(shí),若在主串

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

答:T

[17]在C++中,聲明布爾類型變量所用的關(guān)鍵字是()。

答:bool

[18]執(zhí)行下列代碼

14

inta=29,b=100;

cout〈程序的輸出結(jié)果是:()。

答:-29100

[19]執(zhí)行下列代碼

cout<ahex:"<<hex=〃〃255=〃〃>程序的輸出結(jié)果為()。

答:Hex:ff

[20]C++語言中可以實(shí)現(xiàn)輸出一個(gè)換行符并刷新流功能的操控符是()。

答:endl

[21]ttinclude

voidmain(){

intx=5,y=6;

constint*p=&x;

*p=y;

cout?*p<<p=〃”>}

答:錯(cuò)誤*p=y;修改意見:將constint*p=&x中的const去掉

[22]ffincludeclassf{

private:intx,y;

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

print(){cout?,/?y<<endl;}<p=〃〃>

);

voidmain(){

fa;

a.fl(l,1);

a.print();

)

答:錯(cuò)誤:a.fl(1,1),修改意見:增加一個(gè)fl的函數(shù)重載:voidfl(intI,intj){x=I;

y=j;}

[23]ttincludeclassf{

15

private:intx=0,y=0;

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

voidget(){cout<<,?y<<endl;}<p="”>

};

voidmain(){

fa;

a.fl(1,3);

a.get();

)

答:錯(cuò)誤:private:intx=0,y=0;修改意見:private:intx,y;

[24]^includeclasspoint{private:floatx;

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

voidf(){x=0;}

friendfloatmax(point&a,point&b);

);

floatmax(point&a,pointftb)

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

voidmain(){

pointa,b;

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

cout?p=〃">}

答:錯(cuò)誤:cout〈〈a.max(a,b);修改意見:cout<〈max(a,b);

[25]ttincludetemplate

classf{

private:Tx,y;

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

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

};

voidmain(){

fa;

a.fl(1.5,3.8);'

cout<?endl;〈="

16

答:錯(cuò)誤:fa;改為:f<float>a;

[26]

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

classpoint

(

private:

intm,n;

public:

point(int,int);

point(point&);

);

point::point(inta,intb)

(

m=a;

}

point::point(point&t)

(

nFt.m;

n=t.n;

}

答:n

[27]

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

#include

usingnamespacestd;

constdoublepi=3.14159;

voidmain()

(

doubler;

17

cout<<"r=";

double1=2.0*pi*r;

doubles=pi*r*r;

cout<</,\nThelongis:<<p=〃">

cout?z,Theareais:"?p="〃>

)

答:cin?r

【題型:完成】【100分】

[28]在下劃線處填上缺少的部分。

#include

#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;

returncomplex(r,i);

)

voidmain()

18

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

z=x+y;

cout?w?z.imag?wi,f?endl;<p=〃">

}

得分:100分

答:complex&a

[29]程序的輸出結(jié)果如下:

1,9

50,30

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

源程序如下:

#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<?endl;<="〃p="〃)<<","get(=””〉

cout<get()?/z,";

19

ptr=ptr-l;

cout<get()<<p="〃>

delete1]ptr;

!

答:ptr+1

[30]在下面橫線處填上求兩個(gè)浮點(diǎn)數(shù)之差的cha函數(shù)的原型聲明、調(diào)用方法。

#include

usingnamespacestd;

voidmain()

(

floata,b;

floatcha(float,float);//函數(shù)cha的原型聲明

a=12.5;

b=6.5;

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

cout<<p=〃〃>

)

floatcha(floatx,floaty)

(

floatw;

w=x-y;

returnw;

)

答:cha(a,b)

[31]

給出下面程序的輸Hl結(jié)果。

#include

template

classSample

(

Tn;

20

public:

Sample(Ti)(n=i;}

intoperator==(Sample&);

);

template

intSample::operator==(Sample&s)

|

if(n==s.n)

return1;

else

return0;

}

voidmain()

(

Samples1(2),s2(3);.

cout<<usi與s2的數(shù)據(jù)成員"<<(sl=s2?"相等":"不相等")?p=,z,z>

Samples3(2.5),s4⑵5);

cout?ws3與s4的數(shù)據(jù)成員“<<(s3=s4?"相等":"不相等")?p=〃”>}

答:si和s2的數(shù)據(jù)成員不相等S3和s4的數(shù)據(jù)成員相等

[32]

給出下面程序的輸出結(jié)果。

#include<iostream>

usingnamespacestd;

template<classT>

Tmax(Tml,Tm2)

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

voidmain(){

cout?max(L7)?"\t<<max(2.0,5.0)<<endl;

cout?max(,y',fb'<<"\t"?max(uA","a")?endl;

)

答:75.0

ya

21

練習(xí)題三

[1]在C++中,編譯指令都是以.(符號(hào))開始。

答:#

[2]假定要把a(bǔ)a定義為AB類中的一個(gè)引用整數(shù)型數(shù)據(jù)成員,則定義語句為

答:int&aa

[3]C++支持兩種多態(tài)性,編譯時(shí)的多態(tài)性和.時(shí)的多態(tài)性。

答:運(yùn)行

[4]假定用戶為類AB定義了一個(gè)構(gòu)造函數(shù)“AB(intaa=O):a(aa){}",則定義該類的對(duì)象

時(shí),可以有種不同的定義格式。

答:2

[5]若p指向X,則與x的表示是等價(jià)的。

答:*P

[6]C++的流庫預(yù)定義了4個(gè)流,它們是cin、cout、cerr和。

答:clog

[7]當(dāng)函數(shù)參數(shù)表用保留字表示時(shí),則表示該參數(shù)表為空。

答:void

[8]每個(gè)對(duì)象都是所屬類的一個(gè)o

答:實(shí)例

[9]作為類的成員函數(shù)重載一個(gè)運(yùn)算符時(shí),參數(shù)表中只有一個(gè)參數(shù),說明該運(yùn)算符有

____________個(gè)操作數(shù)。

答:2

[10]重載“<<”操作符時(shí),應(yīng)聲明為—函數(shù)。

答:友元

[11]設(shè)函數(shù)max是由函數(shù)模板實(shí)現(xiàn)的,并且max(3.5,5)和max(10,5)都是正確的函數(shù)

調(diào)用,則該模板具有個(gè)類型參數(shù)。

答:2

[12]在單繼承和多繼承方式中,面向?qū)ο蟮某绦蛟O(shè)計(jì)應(yīng)盡量使用______繼承。

答:單

22

[13]語句序列

ifstreamdatafile;

datafile,open("data,dat");

的功能可用一個(gè)語句實(shí)現(xiàn),這個(gè)語句是______o

答:ifstreamdatafile("data,dat”,ios::in)

[14]將關(guān)鍵字const寫在函數(shù)頭之后,函數(shù)體之前,說明該函數(shù)是一個(gè)const成員函

數(shù)。此時(shí)const不是指定函數(shù)的返回值,而是修飾_____指針。

答:this

[15]一個(gè)抽象類的派生類可以實(shí)例化的必要條件是實(shí)現(xiàn)了所有的______。

答:純虛函數(shù)

[16]在C++中,虛函數(shù)幫助實(shí)現(xiàn)了類的性。

答:多態(tài)

[17]通過C++語言中類的,可以擴(kuò)充和完善已有類以適應(yīng)新的需求。

答:繼承機(jī)制

[18]為了在對(duì)象生存期結(jié)束時(shí)釋放其指針成員所指向的動(dòng)態(tài)存儲(chǔ)空間,通常需要為該

類定義_o

答:析構(gòu)函數(shù)

[19]在聯(lián)合中,所有數(shù)據(jù)成員具有的地址,任一時(shí)刻只有一個(gè)數(shù)據(jù)成員有效。

答:相同

[20]在已經(jīng)定義了整型指針ip后,為了得到一個(gè)包括10個(gè)整數(shù)的數(shù)組并山ip所指向,

應(yīng)使用語句______。

答:ip=newint[10];

[21]下面的類定義有一處錯(cuò)誤,請用下橫線標(biāo)出錯(cuò)誤所在行并改正錯(cuò)誤。

classA{

inta;

public;

A(intaa):a=aa{}

);

答:第4行人6"@@):@=a2{}中“:a=aa”有錯(cuò),應(yīng)該為“:a(aa)”或等價(jià)的寫法。

[22]

下面的程序先把字符串“Lookout!”輸出到一個(gè)文件中,然后再從該文件輸入,并顯示在

屏幕上,顯示效果為Lookout!。程序中有一-處錯(cuò)誤,請用下橫線標(biāo)出錯(cuò)誤所在行,并給出

更改意見。

#include

23

voidmain(){

ofstreamoutf(UD:\\tem.dat",ios::trunc);

outf<<"Lookout!”;

outf.close();

ifsteaminf(UD:\\tem.datv);

chark[20];inf?k;count?p=〃">

inf.close();

)

答:第7行錯(cuò),應(yīng)該為chark;whi1e(inf.get(k))count<

[23]下面的程序有一處錯(cuò)誤,請用下橫線標(biāo)出錯(cuò)誤所在行并改正錯(cuò)誤。

#include

classTest{

public;

staticintx;

};

intx=20;〃對(duì)類成員初始化

voidmain()

{

cout<<p=〃〃>

)

答:程序中第6行錯(cuò)誤,應(yīng)該為:intTest::x=20;

[24]下面的程序類B的定義中有一處錯(cuò)誤,請用下橫線標(biāo)出錯(cuò)誤所在行并說明錯(cuò)誤原

因。

#include

#include

classA{

public:A(constchar*nm){strcpy(name,nm);)

private:charname[80];

};

classB:publicA{

public:B(constchar*nm):A(nm){}

voidPrintName()const;

};

24

voidB::PrintName()const{

cout<<<<name:,>?p=“〃》

)

voidmain(){

Bbl(awangli");

bl.PrintName();

)

答:第12行有錯(cuò),因?yàn)閚ame是由類A私有成員繼承而來,不能被派生類訪問。

[25]用下橫線標(biāo)出下面程序main函數(shù)中的錯(cuò)誤所在行,并說明錯(cuò)誤原因。

#include

classLocation{

private:

intX,Y;

public;

voidinit(intinitX,intinitY);

intsumXY();

);

voidLocation::init(intinitX,intinitY)

(

X=initX;

Y二initY;

}

intLocation::sumXY()

(

returnX+Y;

)

voidmain()

(

LocationAl;

intx,y;

Al.init(5,3);

x=Al.X;y=Al.Y;

25

cout<?,,p=〃〃)?endl;<=,,/,”<<al.sumxy(="〃>

答:第24行語句x=ALX;尸ALY;有錯(cuò),因?yàn)閙ain函數(shù)不能訪問對(duì)象Al的私有成員。

[26]

在下面程序橫線處填上適當(dāng)內(nèi)容,以使該程序執(zhí)行結(jié)果為:

12

88

#include

template

classTany{

public:

?

voidpr(){

if(sizeof(int)==sizeofx)

count?(x>y?x:y)?

else

cout?(x>y?y:x)?p=〃〃>

}

);

voidmain(){

Tanydobj={12.0,88.0);

dobj.pr();

Tanyiobj={12,88);

iobj.pr();

)

答:Tx,y

[27]在下面的橫線處填上適當(dāng)內(nèi)容,使程序完整。

#include<iostream.h>

#include<math.h>

classloc{

private:

floatx,y;

public;

26

loc()

{floatxl,floatyl;

x=xl;

y=yi;

)

floatgetx(){returnx;}

floatgety(){returny;}

②floatdis(loc&,loc&);

};

floatloc::dis(loc&a,loc&b)

(

flostdx=a.x-b.x;

flostdy=a.y-b.y;

returnsqrt(dx*dx+dy*dy);

)

voidmain()

(

locpl(3.5,4.5),p2(5.5,6.5);

floatd=loc::dis(pl,p2);

cout<<^Thedistanceis"?d;

)

答:①floatxl,floatyl②static

[28]

在下面程序中的橫線處填上適當(dāng)內(nèi)容,使程序完整。

#include

classvehicle

{

protected:

intsize;

intspeed;

public;

voidsetSpeed(ints){speed=s;}

virtualintgetSpeedLevel(){returnspeed/10;)

};

27

classcar:publicvehicle

public:

intgetSpeedLeve(){returnspeed/5;)

);

classtruck:publicvehicle

(

public:

intgetspeedLevel(){returnspeed/15;)

};

intmaxSpeedLevel(vehicle&vl,vehicle)

{

if(vl.getSpeedLevel()>v2.getSpeedLevel())

return1;

else

reutrn2;

)

voidmain()

!

turckt;

carc;

t.setSpeed(130);

c.setSpeed(60);

cout?<endl;p=zz,z此結(jié)果輸出為2<=〃〃>

)

答:&v2

【題型:完成】【100分】

[29]

在下面橫線處填上合適內(nèi)容,完成類B的定義。

#include

classA{

public:A(){a=0;}

A(inti){a=i;}

28

voidprint(){cout?v,;}<p=〃〃>

private:inta;

};

classB:publicA{

public:B(){bl=b2=0}

B(inti){bl=i;b2=0;}

B(inti,intj,intk):{bl=j;b2=k;}〃使a的值為i

voidprint(){A::print();cout?w,v<<b2<<endl;}<p="”>

private:intbl,b2;

)

答:A(i)

[30]

根據(jù)注釋在空白處填寫適當(dāng)內(nèi)容。

classLocation(

private:

intX,Y;

public:

voidinit(intinitX,intinitY);

intGetX();

intGetY();

};

voidLocation::init(intinitX,intinitY)

I

X=initX;

Y=initY;

)

intLocation::GetX()

(

reutrnX;

)

intLocation::GetY()

!

reutrnY;

)

29

#include

voidmain()

{

LocationAl;A1.init(20,90);

Location&rAl=A1;〃定義一個(gè)指向Al的引用rAl

〃用rAl在屏幕上輸出對(duì)象Al的數(shù)據(jù)成員X和Y的值

)

答:count?rAl.GetX()?rAl.GetY();

[31]

寫出下面程序的輸H;結(jié)果:

#include

classFunArray(

int*pa;〃指向一個(gè)數(shù)組空間

intsize;〃數(shù)組元素個(gè)數(shù)

public:

EunArray(inta[Lintthesize):pa(a),size(thesize)(}

intSize(){returnsize;}

int&operator[](intindex){returnpa[index-l];}

);

voidmain(){

ints[]={3,7,2,1,5,4);

FunArrayma(s,sizeof(s)/sizeof(int));

ma[3]=9;

for(inti=l;i<=ma.Size();i++)cout<?';<p="">

)

答:3,7,9,1,5,4,

[32]

寫出下面程序的輸Hl結(jié)果:

#include

template

classTclass{

Tx,y;

public:

30

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

Tclass(Ta){y=(T)O,x=a;}

voidpr(){

charc;

c=(y>=(T)0?z

cout?(y>(T)0?y:-y)?/,i"?p=””>

}

);

voidmain(){

TclassadO.5,-5.8);

a.pr();

Tclassb(10);

b.pr();

)

答:10.5-5.8i

10+Oi

練習(xí)題四

[1]假定用戶沒有給一個(gè)名為AB的類定義析構(gòu)函數(shù),則系統(tǒng)自動(dòng)給出的缺省析構(gòu)函數(shù)定義

為。

答:?AB(){}

[2]模板定義中標(biāo)識(shí)類型的參數(shù)必須用關(guān)鍵字修飾。

答:class

[3]表達(dá)式count?hex還可表示為。

答:cout,sctf(ios::hex,ios::basefield)

[4]通過C++語言中的一機(jī)制,可以從現(xiàn)存類中構(gòu)建其子類。

答:繼承

[5]要在調(diào)用虛函數(shù)的時(shí)候強(qiáng)制進(jìn)行靜態(tài)聯(lián)編,可以通過在調(diào)用中對(duì)虛函數(shù)加一

實(shí)現(xiàn)。

答:域名限制

[6]封裝要求?個(gè)對(duì)象應(yīng)具備明確的功能,并具有以便和其它對(duì)象相互作用。

答:接口

[7]在刪除一個(gè)動(dòng)態(tài)對(duì)象時(shí),將自動(dòng)調(diào)用該動(dòng)態(tài)對(duì)象所屬類的_________函數(shù)。

31

答:析構(gòu)

【題型:填空】【100分】

[8]靜態(tài)成員函數(shù)、友元函數(shù)、構(gòu)造函數(shù)和析構(gòu)函數(shù)中,不屬于成員函數(shù)的是。

得分:100分

答:友元函數(shù)

[9]在下面的類定義中,私有成員有o

classLocation{

intX,Y;

protected:

intzeroX,zerxY;

intSetZero(intzeroX,intzeroY);

private:

intlength,height;

public:

voidinit(intinitX,intinitY);

intGetX();

intGetY();

);

答:X,Y,length,height

[10]類的私有成員只能被它的成員函數(shù)和訪問。

答:友元函數(shù)

[11]

此類定義有一處錯(cuò)誤,請指出錯(cuò)誤并改正。

classABC(

inta;

public:

ABC(intaa)a(aa){}

);

答:ABC(intaa)與a(aa){)之間少一個(gè)冒號(hào),應(yīng)改為ABC(tntIla):a(aa){)

[12]

下面程序通過調(diào)用函數(shù)模板實(shí)現(xiàn)計(jì)算兩個(gè)正整數(shù)的最大公約數(shù),把main函數(shù)中錯(cuò)誤找出并

改正過來。

#include

template

32

Tgcd(Tx,Ty){

while(x!=y)

if(x>y)x-=y;

elsey-=x;

returnx;

)

voidmain()

I

inta;

doubled;

cin?a?d;

cout?<endl;<p=〃”>

}

答:main函數(shù)中的gcd(a,d)改為gcd(a,(int)d)(或把doubled;改為int;

或把gcd(a,d)改為gcd<int>(a,d)或把gcd(a,b)改為gcd(a,int(d))=

[13]

指出下面程序中的錯(cuò)誤,并說明出錯(cuò)原因。

#include

classConstFun(

public:

voidConstFun(){}

constintf5()const{return5;)

intObj(){return45;}

intval;

intf8();

);

intConstFun::f8(){returnval;}

voidmain()

I

constConstFuns;

inti=s.f5();

cout<<"Value="?p=〃〃)

)

答:程序中第4行“voidConstFun(){}”錯(cuò)誤,因?yàn)槁暶鳂?gòu)造函數(shù)時(shí)不能

溫馨提示

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

評(píng)論

0/150

提交評(píng)論