习题二C++练习含有解答Word格式文档下载.docx
- 文档编号:17114095
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:19
- 大小:21.32KB
习题二C++练习含有解答Word格式文档下载.docx
《习题二C++练习含有解答Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《习题二C++练习含有解答Word格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。
7.在一个类中可以对一个操作符进行(D)重载。
A.1种B.2种以下C.3种以下D.多种
8.若类A被说明成类B的友元,则(D)。
A.类A的成员即类B的成员B.类B的成员即类A的成员
C.类A的成员函数不能访问类B的成员D.类B不一定是类A的友元
9.友元的作用是(A)。
A.提高成员的运行效率B.加强类的封装性
C.实现数据的隐藏性D.增加成员函数的种类
10.下列关于静态数据成员的特性描述中错误的是(D)。
A.说明静态数据成员时前边要加staticB.静态数据成员要在类体外进行初始化
C.引用静态数据成员时,要在静态数据成员名前加“类名”和作用域运算符
D.静态数据成员不是所有对象所共用的
11.关于友元的描述中,正确的是(C)。
A.友元函数是成员函数的一种,它可以访问类的私有成员
B.友元函数不能提高程序的运行效率
C.友元函数要在类体内说明
D.友元函数增强了类的封装性和隐藏性
12.用来说明类的友元的是(D)。
A.privateB.protectedC.publicD.friend
13.已知f1和f2是同一个类的两个成员函数,但f1不能调用f2,下列选项中符合要求的是(B)。
A.f1和f2都是静态函数B.f1是静态函数,f2不是静态函数
C.f1不是静态函数,f2是静态函数D.f1和f2都不是静态函数
14.下面对于友元函数描述正确的是(C)。
A.友元函数的实现必须在类的内部定义B.友元函数是类的成员函数
C.友元函数破坏了类的封装性和隐藏性D.友元函数不能访问类的保护成员
15.一个类的友元函数或友元类能够通过成员操作符访问该类的(D)
A.私有成员B.保护成员C.公有成员D.所有成员
16.下面对静态数据成员的描述中,正确的是(D)
A.静态数据成员可以在类体内进行初始化B.静态数据成员不可以被类的对象调用
C.静态数据成员不受private控制符的限制D.静态数据成员可以直接用类名调用
17.C++语言中提供的(B)不是类的成员,但具有类成员的特权。
A.构造函数B.友元函数C.虚函数D.重载函数
18.下列关于静态成员函数的说法中不正确的是(C)
A.静态成员函数不属于对象成员B.对静态成员函数的引用不需要使用对象名
C.静态成员函数中可以直接引用类的非静态成员
D.静态成员函数中可以直接引用类的静态成员
19.下面对友元的错误描述是(D)。
A.关键字friend用于声明友元
B.一个类中的成员函数可以是另一个类的友元函数
C.友元函数访问对象的成员不受访问特性影响
D.友元函数通过this指针访问对象成员
20.下列有关一个类的友元函数的叙述中,正确的(B)
A.允许在类外访问类中除私有成员以外的所有成员
B.允许在类外访问类中的任何成员
C.友元也是该类的成员
D.友元的声明必须被放在该类的公有部分
三、判断题
1、静态数据成员可以通过类名或对象名引用。
2、静态数据成员可以在类内或类外进行初始化。
3、在静态成员函数中可以访问本类中非静态的数据成员。
4、类的静态成员函数的初始化工作要放在类外进行。
5、若A是B的友元类,B是C的友元类,则A是C的友元类。
6、通过运算符重载,可以定义新的运算符。
7、C++中的所有运算符都能被重载。
8、运算符重载不能改变操作数的个数。
9、运算符重载不能改变其优先级与结合性。
10、在运算符重载函数中不能使用缺省的参数值。
答案:
1、√2、×
3、√4、×
5、×
6、×
7、×
8、√9、√10、√
四、程序分析题(写程序运行结果)
1.#include<
iostream.h>
classA
{
intx,y,z;
public:
A(intvx,intvy,intvz){x=vx;
y=vy;
z=vz;
}
A(){x=0;
y=0;
z=0;
Aoperator+(At)
{
Ate;
te.x=x+t.z;
te.y=y+t.y;
te.z=z+t.z;
returnte;
}
Aoperator-(At)
te.x=x-t.z;
te.y=y-t.y;
te.z=z-t.z;
}
Aoperator=(At)
x=t.x;
y=t.y;
z=t.z;
return*this;
voidprint(){cout<
<
x<
"
"
y<
endl;
};
voidmain()
At1(10,10,10),t2(20,20,20),t3;
t3=t1+t2;
t3.print();
t3=t2=t1;
t1.print();
t2.print();
3030
1010
2.#include<
A(intr,intc){row=r;
col=c;
elem=newint[row*col];
int&
operator()(intx,inty){returnelem[col*x+y];
intoperator()(intx,inty)const{returnelem[col*x+y];
~A(){delete[]elem;
private:
int*elem;
introw,col;
Am(5,8);
inti;
for(i=0;
i<
5;
i++)m(i,1)=i+5;
i++)cout<
m(i,1)<
"
;
cout<
5,6,7,8,9,
3.#include<
iostream>
usingnamespacestd;
classgoods
staticinttotalweight;
intweight;
goods(intw){weight=w;
totalweight+=weight;
goods(goods&
gd){weight=gd.weight;
~goods(){totalweight-=weight;
staticintgettotal(){returntotalweight;
intgoods:
totalweight=0;
voidmain()
goodsg1(50);
cout<
goods:
gettotal()<
goodsg2(100);
g2.gettotal()<
50
150
4.#include<
inti,j;
staticintc;
A(inta=0,intb=0){i=a;
j=b;
c++;
~A(){c--;
staticvoidf(){cout<
c="
c<
intA:
c=0;
Aa(4,8),b,d;
Az(3,6),f;
A:
f();
c=5
c=3
5.#include<
classpoint
voidpoi(intpx=10,intpy=10)
{x=px;
y=py;
friendintgetpx(pointa);
friendintgetpy(pointb);
intx,y;
intgetpx(pointa)
{returna.x;
intgetpy(pointa)
{returna.y;
pointp,q;
p.poi();
q.poi(15,15);
getpx(p);
getpy(p)<
getpx(q);
getpy(q)<
}
1010
1515
6.#include<
classB;
intdata;
A*prev;
A(intd,A*n){data=d;
prev=n;
friendclassB;
classB
A*top;
B(){top=0;
voidpush(inti){A*n=newA(i,top);
top=n;
intpop()
A*t=top;
if(top)
{
top=top->
prev;
intc=t->
data;
deletet;
returnc;
return0;
intc[10]={23,34,56,87,67,876,42,657,55,66};
Bs;
for(inti=0;
i<
10;
i++)s.push(c[i]);
for(i=0;
i++)cout<
s.pop()<
66,55,657,42,876,67,87,56,34,23,
7.#include<
classTIME;
classDATE
{
DATE(inta=2004,intm=9,intb=23)
{
year=a;
month=m;
day=b;
}
voidDateTime(TIME&
t);
intyear,month,day;
classTIME
TIME(inth=0,intm=0,ints=0)
hour=h;
minute=m;
second=s;
friendvoidDATE:
DateTime(TIME&
inthour,minute,second;
voidDATE:
t)
Nowis"
year<
'
.'
month<
day<
t.hour<
t.minute<
t.second<
intmain()
DATEb(2004,9,23);
TIMEt(10,20,50);
b.DateTime(t);
return0;
Nowis2004.9.2310:
20:
50.
四、编程题
1.定义一个处理日期的类TDate,它有3个私有数据成员:
Month,Day,Year和若干个公有成员函数,并实现如下要求:
(1)成员函数设置缺省参数;
(2)定义一个友元函数来打印日期。
参考程序:
#include<
classTDate
TDate(intm=0,intd=0,inty=0):
Month(m),Day(d),Year(y)
{}
~TDate(){}
friendvoidShow(TDate);
intMonth,Day,Year;
voidShow(TDated)
d.Year<
年"
d.Month<
月"
d.Day<
日"
TDated1,d2(4,8,2014);
Show(d1);
Show(d2);
2.设计一个类CTimeInfo,要求其满足下述要求。
(1)要求有一个无参数的构造函数,其初始的小时和分钟分别为:
0,0;
(2)要求有一个带参数的构造函数,其参数分别对应小时和分钟;
(3)要求用一个成员函数实现时间的设置;
(4)要求用一个友元函数实现以12小时的方式输出时间;
(5)要求用一个友元函数实现以24小时的方式输出时间;
classCTimeInfo
CTimeInfo():
Hour(0),Minute(0){}
CTimeInfo(inth,intm):
Hour(h),Minute(m)
~CTimeInfo(){}
voidSet(inth,intm)
Hour=h;
Minute=m;
friendvoidShow_12(CTimeInfo);
friendvoidShow_24(CTimeInfo);
intHour,Minute;
voidShow_12(CTimeInfod)
if(d.Hour<
=12)
cout<
am"
d.Hour<
d.Minute<
else
d.Hour-=12;
pm"
voidShow_24(CTimeInfod)
CTimeInfod1,d2(21,8);
Show_12(d1);
Show_12(d2);
Show_24(d2);
3.定义一个Student类,在该类定义中包括:
一个数据成员score(分数)及两个静态数据成员total(总分)和count(学生人数)。
成员函数:
scoretotalcount(floats)用于设置分数、求总分和累计学生人数;
静态成员函数sum用于返回总分;
静态成员函数average用于求平均分。
在main函数中,创建三名学生,并调用上述函数求这三名学生的总分和平均分。
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()<
4.编写程序实现宾馆住宿客人管理。
定义客人类Guest,包含客人编号Num(按先后顺序自动生成)、姓名Name、住宿房号Room、房费fee,并定义静态成员Count,用于记录客人总数;
提供构造函数,显示信息函数Display,以及返回客人总数函数GetCount等。
在主函数中创建3个客人对象进行测试。
string>
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()<
5.生成一个复数类Complex。
复数的实部和虚部分别为double型x和y。
重载运算符加、减、乘、除为类的成员函数,用来计算两个复数的加、减、乘、除运算。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 习题 C+ 练习 含有 解答