面向?qū)ο蟪绦蛟O(shè)計(jì)離線作業(yè)答案_第1頁
面向?qū)ο蟪绦蛟O(shè)計(jì)離線作業(yè)答案_第2頁
面向?qū)ο蟪绦蛟O(shè)計(jì)離線作業(yè)答案_第3頁
面向?qū)ο蟪绦蛟O(shè)計(jì)離線作業(yè)答案_第4頁
面向?qū)ο蟪绦蛟O(shè)計(jì)離線作業(yè)答案_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

精選試題

面向?qū)ο蟪绦蛟O(shè)計(jì)離線作業(yè)答案

編制:

審核:

出版:

浙江大學(xué)遠(yuǎn)程教育學(xué)院

《面向?qū)ο蟪绦蛟O(shè)計(jì)》課程作業(yè)答案

第2章

【】測試下面的注釋(它在C++風(fēng)格的單行注釋中套入了類似于C的注釋)是否

有效。

name[3]='a,;B.name="lin";

C.name=newchar[5];D.cout?name[3];

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

A.name[3]='q,;B.name="lin";

C.name=newchar[5];D.name=newchar('q');

【】假設(shè)已經(jīng)有定義“constchar*name="chen";"下面的語句中錯(cuò)誤的是(A)。

A.name[3]='q';B.name="lin";

C.name=newchar[5];D.name=newchar('q');

[]重載函數(shù)在調(diào)用時(shí)選擇的依據(jù)中,(B)是錯(cuò)誤的。

A.函數(shù)名字B.函數(shù)的返回類型

C.參數(shù)個(gè)數(shù)D.參數(shù)的類型

【】在(A)情況下適宜采用內(nèi)聯(lián)函數(shù)。

A.函數(shù)代碼小,頻繁調(diào)用B.函數(shù)代碼多,頻繁調(diào)用

C.函數(shù)體含有遞歸語句D.函數(shù)體含有循環(huán)語句

【】下列描述中,(C)是錯(cuò)誤的。

A.內(nèi)聯(lián)函數(shù)主要解決程序的運(yùn)行效率問題

B.內(nèi)聯(lián)函數(shù)的定義必須出現(xiàn)在內(nèi)聯(lián)函數(shù)第一次被調(diào)用之前

C.內(nèi)聯(lián)函數(shù)中可以包括各種語句

D.對內(nèi)聯(lián)函數(shù)不可以進(jìn)行異常接口聲明

【】在C++中,關(guān)于下列設(shè)置默認(rèn)參數(shù)值的描述中,(B)是正確的。

A.不允許設(shè)置默認(rèn)參數(shù)值

B.在指定了默認(rèn)值的參數(shù)右邊,不能出現(xiàn)沒有指定默認(rèn)值的參數(shù)

C.只能在函數(shù)的定義性聲明中指定參數(shù)的默認(rèn)值

D.設(shè)置默認(rèn)參數(shù)值時(shí),必須全部都設(shè)置

【】下面的類型聲明中正確是(D)。

A.int&a[4];B.int&*p;

&&q;D.inti,*p=&i;

[]下面有關(guān)重載函數(shù)的說法中正確的是(C)。

A.重載函數(shù)必須具有不同的返回值類型

B.重載函數(shù)形參個(gè)數(shù)必須不同

C.重載函數(shù)必須有不同的形參列表

D.重載函數(shù)名可以不同

【】關(guān)于new運(yùn)算符的下列描述中,(D)是錯(cuò)誤的。

A,它可以用來動(dòng)態(tài)創(chuàng)建對象和對象數(shù)組

B.使用它創(chuàng)建的對象或?qū)ο髷?shù)組可以使用運(yùn)算符delete刪除

C.使用它創(chuàng)建對象時(shí)要調(diào)用構(gòu)造函數(shù)

D.使用它創(chuàng)建對象數(shù)組時(shí)必須指定初始值

【】關(guān)于delete運(yùn)算符的下列描述中,(C)是錯(cuò)誤的。

A.它必須用于new返回的指針

B.使用它刪除對象時(shí)要調(diào)用析構(gòu)函數(shù)

C.對一個(gè)指針可以使用多次該運(yùn)算符

D.指針名前只有一對方括號(hào)符號(hào),不管所刪除數(shù)組的維數(shù)

【】寫出下列程序的運(yùn)行結(jié)果。

#include<iostream>

usingnamespacestd;

inti=15;

intmain()

{inti;

i=100;

::i=i+l;

cout?::i?endl;

return0;

答:101

【】寫出下列程序的運(yùn)行結(jié)果。

#include<iostream>

usingnamespacestd;

voidf(int&m,intn)

{inttemp;

temp=m;

m=n;

n=temp;

)

intmain()

{inta=5,b=10;

f(a,b);

cout?a?nn?b?endl;

return0;

)

答:1010

【】分析下面程序的輸出結(jié)果。

#include<iostream>

usingnamespacestd;

int&f(int&i)

{i+=10;

returni;

)

intmain()

{intk=0;

int&m=f(k);

cout?k?endl;

m=20;

cout?k?endl;

return0;

)

答:

10

20

【】舉例說明可以使用const替代#define以消除#define的不安全性。

答:

例如#include<>

#defineA2+4

#defineBA*3

voidmain()

(

cout?B?endl;

)

上面程序的運(yùn)行結(jié)果是14而不是1818。用const替代#define

#define的不安全性。

#include<>

constA=2+4;

constB=A*3;

voidmain()

(

cout?B?endl;

)

運(yùn)行結(jié)果為18o

【】編寫一個(gè)C++風(fēng)格的程序,用動(dòng)態(tài)分配空間的方法計(jì)算Fibonacci數(shù)列的前

20項(xiàng),并存儲(chǔ)到動(dòng)態(tài)分配的空間中。

#include<iostream>

usingnamespacestd;

intmain()

inti;

int*p;

p=newint[20];

p[0]=0;

p[l]=l;

cout?*p?""?*(p+l)?"

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

(

p[i]=p[i-2]+p[i-l];

cout?*(p+i)?"

)

deletep;

return0;

)

【】編寫一個(gè)C++風(fēng)格的程序,建立一個(gè)被稱為sroot()的函數(shù),返回其參數(shù)的二

次方根。重載sroot()3次,讓它返回整數(shù)、長整數(shù)與雙精度數(shù)的二次方

根(計(jì)算二次方根時(shí),可以使用標(biāo)準(zhǔn)庫函數(shù)sqrt())。

#include<>

#include<>

intsroot(intx)

(

return

(int)sqrt(x);

)

floatsroot(floatx)

(

return

(float)sqrt(x);

)

doublesroot(doublex)

return(double)sqrt(x);

voidmain()析構(gòu)函數(shù)名與類名完全相同

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

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

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

A.程序編譯B.創(chuàng)建對象

C.創(chuàng)建類D.程序裝人內(nèi)存

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

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

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

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

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

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

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

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

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

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

【】友元的作用之一是(A)。

A.提高程序的運(yùn)行效率B.加強(qiáng)類的封裝性

C.實(shí)現(xiàn)數(shù)據(jù)的隱藏性D.增加成員函數(shù)的種類

【】以下程序運(yùn)行的結(jié)果是(B)o

#include<iostream>

usingnamespacestd;

classB{

public:

B(){}

B(inti,intj)

{x=i;

y二j;

)

voidprintb()

{cout<<x<<”,"<<y<<endl;

)

private:

intx,y;

);

classA{

public:

A()

()

A(intI,intj);

voidprinta();

private:

Bc;

);

A::A(inti,intj):c(i,j)

()

voidA::printa()

{();

)

intmain()

{Aa(7,8);

0;

return0;

)

A.8,9B.7,8C.5,6D.9,10

[]以下程序的運(yùn)行結(jié)果是(A)o

#include<iostream>

usingnamespacestd;

classA{

public:

voidset(inti,intj)

{x=i;

產(chǎn)j;

)

intget_y()

{returny;

)

private:

intx,y;

);

classbox{

public:

voidset(intl,intw,ints,intp)

{length=l;

width二w;

(s,p);

)

intget_area()

{returnlength*width;

)

private:

intlength,width;

Alabel;

);

intmainQ

{boxb;

(4,6,1,20);

cout?()?endl;

return0;

)

A.24B.4C.20D.6

[]以下程序的運(yùn)行結(jié)果是(B)。

#include<iostream>

usingnamespacestd;

classSample{

public:

Sample(inti,intj)

{x=i;

y二j;

)

voiddisp()

{cout?,,displ,,?endl;

)

voiddisp()const

{cout?ndisp2"?endl;

)

private:

intx,y;

);

intmain()

{constSamplea(l,2);

0;

return0;

)

A.displ2C.displdisp2D.程序編譯出錯(cuò)

【】以下程序的運(yùn)行結(jié)果是(B)o

#include<iostream>

usingnamespacestd;

classR{

public:

R(intrl,intr2)

{Rl=rl;

R2=r2;

)

voidprint();

voidprint()const;

private:

intR1,R2;

);

voidR::print()

{cout?Rl?n,n?R2?endl;

)

voidR::print()const

{cout?R1?",n?R2?endl;

)

intmain()

{Ra(6,8);

constRb(56,88);

0;

return0;

)

A.6,8B.56,88C.0,0D.8,6

【】寫出下面程序的運(yùn)行結(jié)果。

#include<iostream>

usingnamespacestd;

classtoy

{public:

toy(intq,intp)

{quan=q;

price=p;

intget_quan()

{returnquan;

)

intget_price()

{returnprice;

)

private:

intquan,price;

);

intmainQ

{toyop[3][2]={

toy(10,20),toy(30,48),

toy(50,68),toy(70,80),

toy(90,16),toy(ll,120),

);

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

{cout?op[i][0].get_quan()?n,n;

cout?op[i][0].get_price()?n\nn;

cout?op[i][l].get_quan()?",";

cout?op[i][1].get_price()?n\nn;

)

cout?endl;

return0;

10,20

30,48

50,68

70,80

90,16

11,120

【】寫出下面程序的運(yùn)行結(jié)果。

#include<iostream>

usingnamespacestd;

classexample

{public:

example(intn)

{i=n;

cout?"Constructing\nn;

)

?example。

{cout?"DestructingXn";

)

intget_i()

{returni;

)

private:

inti;

);

intsqr_it(exampleo)

{return()*();

)

intmain()

{examplex(10);

cout?()?endl;

cout?sqr_it(x)?endl;

return0;

)

10

100

Destructing

Destructing

【】寫出下面程序的運(yùn)行結(jié)果。

#include<iostream>

usingnamespacestd;

classaClass

{public:

aClass()

{total++;

)

~aClass()

{total—;

)

intgettotal()

{returntotal;

)

private:

staticinttotal;

);

intaClass::total=0;

intmain()

{aClassol,o2,o3;

cout?()?"objectsinexistence\n";

aClass*p;

p=newaClass;

if(!p)

{cout?"Allocationerror\n";

return1;

)

cout?();

cout?"objectsinexistenceafterallocation\n";

deletep;

cout?();

cout?"objectsinexistenceafterdeletion\n";

return0;

)

3objectsinexistence

4objectsinexistenceafterallocation

3objectsinexistenceafterdeletion

【】寫出下面程序的運(yùn)行結(jié)果。

#include<iostream>

usingnamespacestd;

classtest

{public:

test();

~test(){};

private:

inti;

);

test::test()

{i=25;

for(intctr=0;ctr<10;ctr++)

{cout?"Countingat"?ctr?"\n";

)

testanObject;

intmain()

{return0;

)

CountingatO

Countingatl

Countingat2

Countingat3

Countingat4

Countingat5

Countingat6

Countingat7

Countingat8

Countingat9

【】寫出下面程序的運(yùn)行結(jié)果。

#include<iostream>

usingnamespacestd;

classA{

inta,b;

public:

A()

{a=0;

b=0;

cout?"DefaultconstructorcalledAn";

)

A(inti,intj)

{a=i;

b=j;

cout?"Constructor:a=n?a?",b="?b?endl;

)

);

intmain()

{Aa[3];

Ab[3]={A(l,2),A(3,4),A(5,6));

return0;

)

Defaultconstructorcalled.

Defaultconstructorcalled.

Defaultconstructorcalled.

Constructor:a=l,b=2

Constructor:a=3,b=4

Constructor:a=5,b=6

【】寫出下面程序的運(yùn)行結(jié)果。

#include<iostream>

usingnamespacestd;

classTest{

private:

intval;

public:

Test()

{cout?"default.n?endl;

)

Test(intn)

{val=n;

cout?"Con."?endl;

)

Test(constTest&t)

{val=;

cout?"Copycon.n?endl;

)

);

intmain()

{Testtl(6);

Testt2=tl;

Testt3;

t3=tl;

return0;

)

Con.

Copycon.

Default.

【】寫出下面程序的運(yùn)行結(jié)果。

#include<iostream>

usingnamespacestd;

classN{

private:

intA;

staticintB;

public:

N(inta)

{A=a;

B+=a;

)

staticvoidfl(Nm);

);

voidN::fl(Nm)

{cout?nA="??endl;

cout?"B=n?B?endl;

intN::B=0;

intmain()

{NP(5),Q(9);

N::fl(P);

N::fl(Q);

return0;

)

A=5

B=14

A=9

B=14

【】寫出下面程序的運(yùn)行結(jié)果。

#include<iostream>

usingnamespacestd;

classM{

intx,y;

public:

M()

{x=y=0;

)

M(inti,intj)

{x=i;

y=j;

)

voidcopy(M*m);

voidsetxy(inti,intj)

{x=i;

y刁;

)

voidprint()

{cout?x?n,n?y?endl;

)

);

voidM::copy(M*m)

{x=m->x;

y=m->y;

)

voidfun(M

{(12,15);

m2->setxy(22,25);

)

intmain()

{Mp(5,7),q;

(&p);

fun(p,&q);

0;

0;

return0;

)

5,7

22,25

【】寫出下面程序的運(yùn)行結(jié)果。

#include<iostream>

usingnamespacestd;

classM{

intA;

staticintB;

public:

M(inta)

{A=a;

B+=a;

cout<<"Constructing”<<endl;

)

staticvoidfl(Mm);

?M()

{cout?"Destructing\n";

)

);

voidM::fl(Mm)

{cout?"A="??endl;

cout?"B="?B?endl;

)

intM::B=0;

intmain()

{Mp(5),Q(10);

M::fl(p);

M::fl(Q);

return0;

)

Constructing

Constructing

A=5

B=15

Destructing

A=10

B=15

Destructing

Destructing

Destructing

【】指出下列程序中的錯(cuò)誤,并說明為什么。

#include<iostream>

usingnamespacestd;

classStudent{

public:

voidprintStu();

private:

charname[10];

intage;

floataver;

);

intmain()

{Studentpl,p2,p3;

=30;

return0;

}age為private不能付值

【】指出下列程序中的錯(cuò)誤,并說明為什么。

#include<iostream>

usingnamespacestd;

classStudent{

intsno;

intage;

voidprintStu();

voidsetSno(intd);

);

voidprintStu();

{cout?"\nSnois"?sno?",n;

cout?"ageisn?age?n.n?endl;

)

voidsetSno(ints)

{sno=s;

)

voidsetAge(inta)

{age=a;

)

intmain()

{Studentlin;

(20021);

(20);

0;

}!classStudent1不存在?個(gè)叫l(wèi)etAge,的方式

【】指出下列程序中的錯(cuò)誤,并說明為什么。

#include<iostream>

usingnamespacestd;

classPoint{

public:

intx,y;

private:

Piont()

{x=l;y=2;

)

);

intmain()

{Pointcpoint;

=2;

return0;

)

構(gòu)筑函數(shù)錯(cuò)誤

[]下面是一個(gè)計(jì)算器類的定義,請完成該類成員函數(shù)的實(shí)現(xiàn)。

classcounter{

public:

counter(intnumber);

voidincrement();?month?n.n?day?endl;

);

intmain()

{DatetestDay;

(5);

(10);

(2003);

0;

return0;

)

【】建立類cylinder,cylinder的構(gòu)造函數(shù)被傳遞了兩個(gè)double值,分別表示圓柱

體的半徑和高度。用類cylinder計(jì)算圓柱體的體積,并存儲(chǔ)在一個(gè)

double變量中。在類cylinder中包含一個(gè)成員函數(shù)vol,用來顯示每個(gè)

cylinder對象的體積。

#include<iostream>

usingnamespacestd;

#definePI

classCylinder

(

public:

Cylinder(double

radius,doubleheight):radius(radius),height(height),volume(PI*radius*radiu

s*height)

(

total_vol+=volume;

)

doublevol()const;

friendvoidgetParas(double&radius,double&height,double&vol,double&

total_vol,constCylinder&obj);

private:

doubleradius;et_qu()*obj[i].get_price()?endl;

)

)

[]修改習(xí)題,通過對象指針訪問對象數(shù)組,使程序以相反的順序顯示每個(gè)對

象數(shù)組元素的qu*price值。

#include<>

classbook

(

intqu,price;

public:

book(intq)

(

qu=q;price=10*q;

)

intget_qu()

{returnqu;}

intget_price()

{returnprice;}

);

voidmain()

(

bookobj[5]={1,2,3,4,5};

book*p;

p=&obj[4];

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

cout?數(shù)組對象”<<i+l<<”的qu*price值

為:"?p->get_qu()*p->get_price()?endl;

p--;

【】構(gòu)建一個(gè)類Stock,含字符數(shù)組stockcode口及整型數(shù)據(jù)成員quan、雙精度

型數(shù)據(jù)成員price。構(gòu)造函數(shù)含3個(gè)參數(shù):字符數(shù)組na[]及q、p。當(dāng)定

義Stock的類對象時(shí),將對象的第1個(gè)字符串參數(shù)賦給數(shù)據(jù)成員

stockcode,第2和第3個(gè)參數(shù)分別賦給quan、price0未設(shè)置第2和第

3個(gè)參數(shù)時(shí),quart的值為1000,price的值為。成員函數(shù)print沒有形

參,需使用this指針,顯示對象數(shù)據(jù)成員的內(nèi)容。假設(shè)類Stock第1

個(gè)對象的三個(gè)參數(shù)分別為:“600001”,3000和,第2個(gè)對象的第1個(gè)

數(shù)據(jù)成員的值是“600001”,第2和第3個(gè)數(shù)據(jù)成員的值取默認(rèn)值。要

求編寫程序分別顯示這兩個(gè)對象數(shù)據(jù)成員的值。

#include<iostream>

fp)0);

fp=student::avg2;

printf("%g\n",(sl.*fp)());

fp=student::avg3;

printf("%g\n",(sl.*fp)());

第四章:

【】使用派中類的主要原因是(A)o

A.提高代碼的可重用性

B.提高程序的運(yùn)行效率

C.加強(qiáng)類的封裝性

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

【】假設(shè)已經(jīng)定義好了一個(gè)類student,現(xiàn)在要定義類derived,它是從student

私有派生的,定義類derived的正確寫法是(c)。

A?clasederived::studentprivate{...};

B.clasederived::studentpublic

C?clasederived::privatestudent}...};

D?clasederived::publicstudent{...};

【】在多繼承構(gòu)造函數(shù)定義中,幾個(gè)基類構(gòu)造函數(shù)用(c)分隔。

A.:B.;C.,D.::

【】設(shè)置虛基類的目的是(b)o

A.簡化程序B.消除二義性C提高運(yùn)行效率D.減少目標(biāo)代碼

【】寫出下面程序的運(yùn)行結(jié)果。

#include<iostream>

usingnamespacestd;

classB1{

public:

Bl(inti)

{bl=i;

cout?"ConstructorBl.u?endl;

voidPrint()

{cout?bl?endl;

private:

intbl;

);

classB2{

public:

B2(inti)

{b2=i;

cout?"ConstructorB2."?endl;

)

voidPrint()

{cout?b2?endl;

)

private:

intb2;

);

classA:publicB2,publicBl{

public:

A(inti,intj,int1);

voidPrint();

private:

inta;

);

A::A(inti,intj,intl):Bl(i),B2(j)

{a=l;

cout?"ConstructorA."?endl;

)

voidA::Print()

{Bl::Print();

B2::Print();cout?a?endl;

intmainQ

{Aaa(3,2,l);

0;

return0;

)

3

2

1

【】寫出下面程序的運(yùn)行結(jié)果。

#include<iostream>

usingnamespacestd;

classMain{

protected:

char*mainfood;

public:

Main(char*name)

{mainfood=name;

)

);

classSub{

protected:

char*subfdod;

public:

Sub(char*name)

{subfood=name;

)

);

classMenu:publicMain,publicSub{

public:

Menu(char*m,char*s):Main(m),Sub(s)

()

voidshow();

);

voidMenu::show()

{cout<<"主食="<<mainfood?endl;

cout<<"副食="<<subfood?endl;

)

intmain()

{Menum(nbreadn,nsteakn);

0;

return0;

)

主食二bread

副食二stea

【】寫出下面程序的運(yùn)行結(jié)果。

#include<iostream>

usingnamespacestd;

classA{

private:

inta;

public:

A()

{a=0;}

A(inti)

{a=i;}

voidPrint()

{cout?a?n,n;

)

);

classB:publicA{

private:

intbl,b2;

public:

B()

{bl=0;b2=0;

)

B(inti)

{bl=i;b2=0;

)

B(inti,intj,intk):A(i),bl(j),b2(k)

()

voidPrint()

{A::Print();

cout?bl?","?b2?endl;

)

);

intmain()

{Bobl,ob2(l),ob3(3,6,9);

0;

0;

0;

return0;

)

0,0,0

0,1,0

3,6,9

【】寫出下面程序的運(yùn)行結(jié)果。

#include<iostream>

usingnamespacestd;

classB1{

intbl;

public:

Bl(inti)

{bl=i;

cout?nconstructorBl."?i?endl;

)

voidprint()

{cout?bl?endl;

)

);

classB2{

intb2;

public:

B2(inti)

{b2=i;

cout?**constructorB2.n?i?endl;

)

voidprint()

{cout?b2?endl;

)

);

classB3{

intb3;

public:

B3(inti)

{b3=i;

cout?"constructorB3.n?i<<endl;

)

intgetb3()

{returnb3;

)

);

classA:publicB2,publicBl{

inta;B3bb;

public:

A(inti,intj,intk,int1):B1⑴,B2(j),bb(k)

{a=l;

cout?"constructorA."?l?endl;

)

voidprint()

{Bl::print();

B2::print();

cout?a?","?()?endl;

)

);

intmain()

{Aaa(l,2,3,4);

0;

return0;

)

ConstructorB2.

Constructor

Constructor

Constructor

1

2

4,3

【】寫出下面程序的運(yùn)行結(jié)果。

#include<iostream>

usingnamespacestd;

classA{

public:

A(inti,intj)

{x=i;

y=j;

)

intsum()

{returnx+y;

)

private:

intx,y;

);

classB:publicA{

public:

B(inti,intj,intk,int1);

intsum()

{returnw+h;

)

private:

intw,h;

);

B::B(inti,intj,intk,intl):A(i,j)

{w=k;

h=l;

)

voidf(A&s)

{cout?()?endl;

)

intmain()

{Bob(l,3,5,7);

f(ob);

return0;

)

【】寫出下面程序的運(yùn)行結(jié)果。

#include<iostream>

usingnamespacestd;

classA{

inta,b;

public:

A(inti,intj)

{a=i;b=j;

)

voidMove(intx,inty)

{a+=x;b+=y;

)

voidShow()

{cout?nC,?a?n;'?b?n),,?endl;

)

);

classB:privateA{

intx,y;

public:

B(inti,intj,intk,intl):A(i,j)

{x=k;y=l;

)

voidShow()

{cout?x?","<<y?endl;

)

voidfun()

{Move(3,5);

)

voidfl()

{A::Show();

)

);

intmain()

{Ae(l,2);

0;

Bd(3,4,5,6);

0;

0;

0;

return0;

)

(1,2)

5,6

(6,9)

【】寫出下面程序的運(yùn)行結(jié)果。

#include<iostream>

usingnamespacestd;

classbasel{

public:

base1()

{cout?"classbasel"?endl;

)

);

classbase2{

public:

base2()

{cout?"classbase2"?endl;

)

);

classlevelkpublicbase2,virtualpublicbasel{

public:

level1()

{cout?"classlevell"?endl;

)

);

classlevel2:publicbase2,virtualpublicbasel{

public:

level2()

{cout?"classlevel2"?endl;

)

);

classtoplevel:publiclevel1,virtualpubliclevel2{

public:

toplevel()

{cout?"classtoplevel"?endl;

)

);

intmain()

{toplevelobj;

return0;

)

classbasel

classbase2

classlevel2

classbase2

classlevel1

classtoplevel

【】已有類Time和Date,要求設(shè)派生類Birthtime,它繼承類Time和

Date,并且增加一個(gè)數(shù)據(jù)成員Childname用于表示小孩的名字,同時(shí)

設(shè)計(jì)主程序顯示一個(gè)小孩的出生時(shí)間和名字。

classTime{

public:

Time(inth,intm,ints)

{hours=h;

minutes=m;

seconds=s;

)

voiddisplay()

{cout<<”出生時(shí)間:"<<hours<<“時(shí)"<<minutes<<“分"<<seconds<〈”秒

n?endl;

)

protected:

inthours,minutes,seconds;

);

classDate{

public:

Date(intm,intd,inty)

{month=m;

day二d;

yearly;

)

voiddisplay()

{cout?"出生年月:"<<year<<"年'>?month?n月"?day?"日

"?endl;

)

protected:

intmonth,day,year;

);

classBirthtime:publicTime,publicDate

(

public:

Birthtime(char*Cn,intyy,intmm,intdd,inthh,intmint,int

ss):Time(hh,mint,ss),Date(mm,dd,yy)

(

strcpy(Childname,Cn);

)

voiddisplay()

(

cout<<“姓名:"<<Childname<<endl;

Date::display();

Time::display();

)

protected:charChildname[20];

)

intmain()

(

Birthtimeyx(“曉鳳”,2010,12,13,14,20,30);

0;

return0;

)

【】編寫一個(gè)學(xué)生和教師數(shù)據(jù)輸人和顯示程序,學(xué)生數(shù)據(jù)有編號(hào)、姓名、班號(hào)

和成績,教師數(shù)據(jù)有編號(hào)、姓名、職稱和部門。要求將編號(hào)、姓名輸

入和顯示設(shè)計(jì)成一個(gè)類person,并作為學(xué)生數(shù)據(jù)操作類student和教師

數(shù)據(jù)操作類teacher的基類。

#include<iostream>

#include<string>

usingnamespacestd;

classperson

private:intno;

stringname;

public:

voidinput()

(

cout?;cin?no?name;

)

voiddisplay()

(

cout?“?no?endl;cout?"?name?endl;

)

);

classstudent:publicperson

(

private:intbh,score;

public:

voidget(){input();

cout?;cin?bh?score;

)

voidshow()

{display();

cout?“班號(hào)"?bh?endl;cout?"成績"?score?endl;

)

);

classteacher:publicperson{private:stringzc,bm;public:voidget()

input();

cout?;cin?zc?bm;

)

voidshow()

(

displayO;

cout?"職稱"?zc?endl;cout?"部門"?bm?endl;

);

intmain()

(

students;

teachert;

();

();

();

();

return0;

第五章:

【】有關(guān)運(yùn)算符重載正確的描述是(D)。

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

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

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

D.C++語言允許在重載運(yùn)算符時(shí)改變運(yùn)算符原來的功能

【】能用友元函數(shù)重載的運(yùn)算符是(A)。

A.+B.=C.[]>

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

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

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

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

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

【】派生類中虛函數(shù)原型的(D)。

A.函數(shù)類型可以與基類中虛函數(shù)的原型不同

B.參數(shù)個(gè)數(shù)可以與基類中虛函數(shù)的原型不同

C.參數(shù)類型可以與基類中虛函數(shù)的原型不同

D.以上都不對

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

A.virtualshow()=0;

B.virtualvoidshow();

C.virtualvoidshow()=0;

D.voidshow()=0virtual;

【】下列關(guān)于純虛函數(shù)與抽象類的描述中,錯(cuò)誤的是(C)。

A.純虛函數(shù)是一種特殊的函數(shù),它允許沒有具體的實(shí)現(xiàn)

B.抽象類是指具有純虛函數(shù)的類

C.一個(gè)基類的說明中有純虛函數(shù),該基類的派生類一定不再是抽象類

D.抽象類只能作為基類來使用,其純虛函數(shù)的實(shí)現(xiàn)由派生類給出

【】下面的程序段中虛函數(shù)被重新定義的方法正確嗎為什么

classbase{

public:

virtualintf(inta)=0;

);

classderived:publicbase{

public:

intf(inta,intb)

{returna*b;

)

};正確

【】寫出下列程序的運(yùn)行結(jié)果。

#include<iostream>

usingnamespacestd;

classA{

public:

A(inti):x(i)

()

A()

{x=0;

)

friendAoperator++(Aa);

friendAoperator—(A&a);

voidprint();

private:

intx;

);

Aoperator++(Aa)

{++;

returna;

)

Aoperator—(A&a)

(;

returna;

)

voidA::print()

{cout?x?endl;

)

intmain()

{Aa(7);

++a;

0;

-a;

0;

return0;

)

7

6

【】寫出下列程序的運(yùn)行結(jié)果。

#include<iostream>

usingnamespacestd;

classWords{

public:

Words(char*s)

{str=newchar[strlen(s)+l];

strcpy(str,s);

len=strlen(s);

)

voiddisp();

charoperator[](intn);;

0;

cout<〈”第1個(gè)字符:”;

cout?word[0]?endl;第1T

第16個(gè)字符:

第26個(gè)字符數(shù)據(jù)下標(biāo)超界

【】寫出下列程序的運(yùn)行結(jié)果。

#include<iostream>

usingnamespacestd;

classLength{

intmeter;

public:

Length(intm)

{m

溫馨提示

  • 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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論