习题2Word文档格式.docx

上传人:b****3 文档编号:16594390 上传时间:2022-11-24 格式:DOCX 页数:18 大小:20.86KB
下载 相关 举报
习题2Word文档格式.docx_第1页
第1页 / 共18页
习题2Word文档格式.docx_第2页
第2页 / 共18页
习题2Word文档格式.docx_第3页
第3页 / 共18页
习题2Word文档格式.docx_第4页
第4页 / 共18页
习题2Word文档格式.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

习题2Word文档格式.docx

《习题2Word文档格式.docx》由会员分享,可在线阅读,更多相关《习题2Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。

习题2Word文档格式.docx

=

7、下列关于运算符重载的说法错误的是(B)。

A.运算符重载保持固有的结合性和优先级

B.可以对C++中的所有运算符进行重载

C.运算符重载不能改变操作数的个数

D.在运算符函数中不能使用缺省的参数值

8、为了区别单目运算符的前置和后置运算,在后置运算符进行重载时,额外添加一个参数,其类型是(D)。

A.voidB.charC.floatD.int

9、已知类A有一个带double型参数的构造函数,且将运算符“+”重载为该类友元函数,若如下语句

Ax(2.5),y(3.6),z(0);

z=x+y;

能够正常运行,运算符重载函数operator+应在类中声明为(D)。

A.friendAoperator+(double,double);

B.friendAoperator+(double,A&

);

C.friendAoperator+(A&

double);

D.friendAoperator+(A&

A&

10、C++中对单目运算符进行重载的函数需要传入参数的个数为(A)。

A.0B.1C.2D.3

11、下列友元关系的描述中正确的是(D)。

A.可以传递

B.是类与类的关系

C.是一个类的成员函数与另一个类的关系

D.友元可以访问该类的所有成员,包括私有成员

12、友元运算符obj1>

ojb2被C++编译器解释为(A)。

A.operator>

(obj1,obj2)B.>

(obj1,obj2)

C.obj2.operator>

(obj1)D.obj1.operator>

(obj2)

13、下面对静态数据成员的特征中,说法错误的是(B)。

A.静态数据成员要在类体外进行初始化

B.静态数据成员不是所有对象所共用的

C.说应用静态成员时,要在静态数据成员名前加<

类名>

和作用域运算符

D.明静态数据成员时前边要加修饰符static

三、判断题

1、静态数据成员可以通过类名或对象名引用。

2、静态数据成员可以在类内或类外进行初始化。

3、在静态成员函数中可以访问本类中非静态的数据成员。

4、类的静态成员函数的初始化工作要放在类外进行。

5、若A是B的友元类,B是C的友元类,则A是C的友元类。

6、通过运算符重载,可以定义新的运算符。

7、C++中的所有运算符都能被重载。

8、运算符重载不能改变操作数的个数。

9、运算符重载不能改变其优先级与结合性。

10、在运算符重载函数中不能使用缺省的参数值。

四、分析题

1、

#include<

iostream.h>

classT

{

public:

T(intx){a=x;

b+=x;

};

Staticvoiddisplay(Tc)

{cout<

<

”a=”<

c.a<

’\t’<

”b=”<

c.b<

enld;

}

private:

inta;

staticintb;

};

intT:

b=5;

voidmain()

TA(3),B(5);

T:

display(A);

display(B);

}

2、

classpoint

{

point(floatx,floaty)

{a=x;

b=y;

cout<

”dian(“<

a<

”,”<

b<

”)”;

friendfloatd(point&

A,point&

B)

{returnsqrt((A.a-B.a)*(A.a-B.a)+(A.b-B.b)*(A.b-B.b));

private:

flaota,b;

};

voidmain()

{

pointp1(2,3);

cout<

”dao”;

pointp2(4,5);

”dejulishi:

”<

d(p1,p2)<

}

3、

classA

A(){a=5;

printa(){cout<

”A:

a=”<

endl;

inta;

friendclassB;

classB

voiddisplay1(At)

{t.a++;

cout<

”diaplay1:

t.a<

voiddisplay2(At){t.a--;

”display2:

Aobj1;

Bobj2;

obj1.printa();

obj2.display1(obj1);

obj2.display2(obj2);

4、

#include<

classpoint

{

point(inti,intj){x=i;

y=j;

voidprint(){cout<

'

('

x<

'

y<

)'

voidoperator+=(pointp)

x+=p.x;

y+=p.y;

voidoperator-=(pointp)

x-=p.x;

y-=p.y;

private:

intx,y;

voidmain()

pointp1(5,7),p2(4,3);

p1.print();

p2.print();

p1+=p2;

p2-=p1;

5、

#include<

classVector

Vector(inti=0,intj=0){x=i;

y=j;

voidDisplay(){cout<

"

("

"

)"

friendVectoroperator+(Vectorv1,Vectorv2);

intx,y;

Vectoroperator+(Vectorv1,Vectorv2)

Vectortv;

tv.x=v1.x+v2.x;

tv.y=v1.y+v2.y;

returntv;

intmain()

Vectorv1(1,2),v2(3,4),v3;

v3=v1+v2;

v3="

;

v3.Display();

return0;

6、

classPoint

floatx,y;

Point(floatg_x=0,floatg_y=0){x=g_x,y=g_y;

voidshow(){cout<

Pointoperator+(Pointp1)

{

returnPoint(x+p1.x,y+p1.y);

Pointp1(3,5),p2(2,4);

Pointp=p1+p2;

p.show();

五、编程题

1、定义一个Student类,在该类定义中包括:

一个数据成员score(分数)及两个静态数据成员total(总分)和count(学生人数)。

成员函数:

scoretotalcount(floats)用于设置分数、求总分和累计学生人数;

静态成员函数sum用于返回总分;

静态成员函数average用于求平均分。

在main函数中,创建三名学生,并调用上述函数求这三名学生的总分和平均分。

2、编写程序实现宾馆住宿客人管理。

定义客人类Guest,包含客人编号Num(按先后顺序自动生成)、姓名Name、住宿房号Room、房费fee,并定义静态成员Count,用于记录客人总数;

提供构造函数,显示信息函数Display,以及返回客人总数函数GetCount等。

在主函数中创建3个客人对象进行测试。

3、定义一个点类Point,包括X和Y两个坐标,通过友元函数计算两点的距离。

4、生成一个复数类Complex。

复数的实部和虚部分别为double型x和y。

重载运算符加、减、乘、除为类的成员函数,用来计算两个复数的加、减、乘、除运算。

5、在date类(包括年,月,日)中重载“+=”,计算一个整数和一个date类对象之和,并且返回date类对象。

例如在1997年2月20日,求出经过100天以后日期。

6、生成时间类Time。

类的每个成员包含私有数据成员h、m、s,分别表示当前时刻的小时、分钟和秒。

提供成员函数displayT(),显示当前时刻,重载“++”,“—”为Time类的成员函数,分别表示将当前时刻推后和提前一个小时。

时间的表示采用24小时制。

习题答案

1、AB:

bb

2、friendvoidF();

3、对象名,类名

4、提高程序的运行效率

5、成员函数,外部函数

6、静态

7、赋值运算符=,地址运算符&

8、sizeof()运算符,成员运算符(.),指向成员的指针运算符(*),作用域运算符(:

),条件运算符(?

9、成员函数,友元函数

10、整型(int)

11、参数传递

12、静态

13、:

14、友元函数

15、不可传递的

1、C2、D3、D4、C5、D6、A7、B8、D9、D10、A

11、D12、A13、B

1、√2、×

3、√4、×

5、×

6、×

7、×

8、√9、√10、√

a=3b=13

a=5b=13

点(3,4)到点(4,5)的距离是:

2.82843

A:

a=5

display1:

a=6

display2:

a=4

(5,7)

(4,3)

(9,10)

(-5,-7)

v3=(4,6)

(5,9)

classStudent

voidscoretotalcount(floats)

score=s;

total+=score;

count++;

staticfloatsum(){returntotal;

staticfloataverage(){returntotal/count;

floatscore;

staticfloattotal;

staticintcount;

floatStudent:

total=0;

intStudent:

count=0;

Students1,s2,s3;

s1.scoretotalcount(70);

s2.scoretotalcount(80);

s3.scoretotalcount(90);

total:

Student:

sum()<

average:

average()<

iostream>

string>

usingnamespacestd;

classGuest

Guest(stringn,stringr,doublef)

Num=++Count;

Name=n;

Room=r;

fee=f;

voiddisplay()

Num<

"

Name<

Room<

fee<

staticintGetCount()

returnCount;

intNum;

stringName;

stringRoom;

doublefee;

staticintCount;

intGuest:

Count=0;

Guestg1("

zhang"

101"

200);

Guestg2("

li"

201"

300);

Guestg3("

wang"

301"

500);

g1.display();

g2.display();

g3.display();

Total="

Guest:

GetCount()<

math.h>

Point(doublexi,doubleyi){X=xi;

Y=yi;

doubleGetX(){returnX;

doubleGetY(){returnY;

frienddoubleDistance(Point&

a,Point&

b);

doubleX,Y;

};

doubleDistance(Point&

b)

doubledx=a.X-b.X;

doubledy=a.Y-b.Y;

returnsqrt(dx*dx+dy*dy);

Pointp1(3.0,5.0),p2(4.0,6.0);

doubled=Distance(p1,p2);

cout<

Thisdistanceis"

<

d<

endl;

4、

classcomplex

doublex,y;

complex(doublexx=0,doubleyy=0)

x=xx;

y=yy;

voiddisplay()

i)"

complexoperator+(complex&

c1);

complexoperator-(complex&

complexoperator*(complex&

complexoperator/(complex&

complexcomplex:

operator+(complex&

c1)

complexc;

c.x=x+c1.x;

c.y=y+c1.y;

returnc;

operator-(complex&

c.x=x-c1.x;

c.y=y-c1.y;

operator*(complex&

c.x=x*c1.x-y*c1.y;

c.y=x*c1.y+y*c1.x;

operator/(complex&

c.x=x*c1.x+y*c1.y;

c.y=y*c1.x-x*c1.y;

complexc1(3,4),c2(4,-5),c3,c4,c5,c6;

c3=c1+c2;

c4=c1-c2;

c5=c1*c2;

c6=c1/c2;

c1="

c1.display();

c2="

c2.display();

c1+c2="

c3.display();

c1-c2="

c4.display();

c1*c2="

c5.display();

c1/c2="

c6.display();

5、

staticintday[12]={31,28,31,30,31,30,31,31,30,31,30,31};

classdate

date(){yy=0;

mm=0;

dd=0;

date(inty,intm,intd){yy=y;

mm=m;

dd=d;

voiddisplay(){cout<

yy<

mm<

dd<

frienddateoperator+=(datec,inti);

intyy,mm,dd;

dateoperator+=(datec,inti)

inta,b=c.mm;

a=i+c.dd;

while(a>

day[b-1])

a=a-day[b-1];

if(c.mm<

12)

c.mm++;

else

{

c.yy++;

c.mm=1;

b=c.mm;

b++;

c.dd=a;

datedate1(1997,2,20),date2;

date1:

date1.display();

date2=date1+=100;

date1+=100:

date2.display();

6、

classTime

inth,m,s;

Time(){h=0;

m=0;

s=0;

Time(inth1,intm1,ints1){h=h1;

m=m1;

s=s1;

Timeoperator++();

Timeoperator--();

h<

m<

s<

TimeTime:

operator++()

if(++h>

24)

h=h-24;

m=m;

s=s;

return*this;

operator--()

if(--h<

=0)

h=h+24;

Timetime1(2,20,35),time2;

time1:

time1.display();

time2=time1;

++time1;

++time1:

--time2;

--time1:

time2.display();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 中职中专

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1