C 实验二 类与对象附答案Word文档下载推荐.docx
- 文档编号:19273449
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:34
- 大小:174.87KB
C 实验二 类与对象附答案Word文档下载推荐.docx
《C 实验二 类与对象附答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C 实验二 类与对象附答案Word文档下载推荐.docx(34页珍藏版)》请在冰豆网上搜索。
(1)
classDate
voidset_date();
voidshow_date();
intyear;
intmonth;
intday;
Dated;
set_date();
show_date();
voidset_date()
cin>
>
d.year;
d.month;
d.day;
voidshow_date()
d.year<
'
/'
d.month<
d.day<
(2)
classA
voidA(inti=0)
m=i;
voidshow()
m<
void~A(){}
intm;
Aa(5);
a.m+=10;
a.show();
(3)
classX
inta=0;
int&
b;
voidsetA(inti)
X(inti)
intX()
a=b=0;
X(inti,intj)
b=j;
voidsetC(intk)
c=c+k;
voidmain()
Xx1;
Xx2
(2);
Xx3(1,2);
x1.setA(3);
3.调试下列程序。
classTPoint
intX,Y;
TPoint(intx,inty)
{
X=x;
Y=y;
Constructoriscalled"
TPoint(TPoint&
p);
~TPoint()
{cout<
Destructoriscalled"
intgetx()
{returnX;
intgety()
{returnY;
TPoint:
:
TPoint(TPoint&
p)
X=p.X;
Y=p.Y;
Copy-initializationConstructoriscalled"
TPointp1(4,9);
TPointp2(p1);
TPointp3=p2;
p3=("
p3.getx()<
"
p3.gety()<
)"
(1)写出程序的输出结果,并解释输出结果。
(2)按下列要求进行调试:
在主函数体内,添加下列说明语句:
TPointp4,p5
(2);
调试程序会出现什么现象?
为什么?
如何解决?
(提示:
对已有的构造函数进行适当修改)结合运行结果分析如何使用不同的构造函数创建不同的对象。
(3)在主函数内使用new创建不同参数动态两个动态对象,输出其坐标,并用delete删除之。
运行程序,分析运行结果。
(4)在程序中定义个全局对象,在主函数最前添加语句:
cout<
Entermain"
4.完善程序,并写出运行结果
根据程序要求,完善程序后输入源程序,编译连接,并写出运行结果。
如果某个自然数除了1和它本身外还有其他因子,则这个自然数就是合数(非素数)。
试定义一个类NUM,从3开始向上试探找出n个连续的自然数,且它们都是合数。
当找到第一组连续的n个合数后,即停止查找。
具体要求如下:
(1)私有成员
intn:
存放满足条件的连续自然数的个数。
int*p:
根据n的值申请一个动态数组用来存放求出的满足条件的n个自然数。
(2)公有成员函数
NUM(intn1):
构造函数,用n1初始化n,根据n的值申请动态数组空间,使p指向该动态数组空间。
intyes(intx):
判断x是否为合数。
如果是,返回1,否则返回0。
voidfun():
从3开始向上试探找出n个连续的自然数,且它们都是合数,并依次存入动态数组。
voidprint():
输出满足条件的n个合数。
~NUM():
析构函数,释放动态数组所占用的存储空间。
(3)在主函数中定义一个NUM类的对象num,求出10个连续的合数。
然后通过对象num调用成员函数求出10个连续的合数,并输出计算结果。
#include<
classNUM
{//定义数据类NUM
intn;
int*p;
NUM(intn1)
n=n1;
p=;
//动态分配存放连续合数的存储空间
intyes(intx)
for(inti=2;
i<
=x/2;
i++)
if(x%i==0)
return1;
return0;
voidfun(void)
intj;
for(inti=3;
1;
{
j=0;
while(&
&
j<
n)
{
p[j]=i;
j++;
i++;
}
if(j==n)
break;
}
voidprint(void)
找到的"
n<
个连续合数为:
for(inti=0;
n;
p[i]<
"
;
~NUM()
;
//释放在构造函数中申请的存储空间
请输入要求的连续合数的个数(例如10):
NUMnum(n);
;
//寻找连续的合数,并存入动态申请的存储空间中
//输出寻找到的合数
5.请定义一个矩形类(Rectangle),私有数据成员为矩形的长度(len)和宽度(wid),缺省构造函数置len和wid为0,有参构造函数置len和wid为对应形参的值,另外还包括求矩形周长、求矩形面积、取矩形长度和宽度、修改矩形长度和宽度为对应形参的值、输出矩形尺寸等公有成员函数。
要求输出矩形尺寸的格式为“length:
长度,width:
宽度”。
编写主函数对定义的类进行测试。
6.声明一个时间类,时间类中有3个私有数据成员(Hour,Minute,Second)和两个公有成员函数(SetTime和PrintTime)。
SetTime根据传递的3个参数为对象设置时间;
PrintTime负责将对象表示的时间显示输出,输出格式为“Hour:
Minute:
Second”。
(1)在主函数中,建立一个时间类的对象,设置时间为9点20分30秒并显示该时间。
(2)使用构造函数代替上面的SetTime成员函数,并在主函数中使用构造函数设置时间为10点40分50秒,并显示该时间。
(3)重载时间类的构造函数(不带参数)使小时、分、秒均为0。
(4)在时间类的析构函数中输出"
Goodbye!
”
(5)定义拷贝构造函数并调用。
7.下面是一个整型链表类intList的声明,请给出该类所有数据成员的类外定义,并在主函数中测试该类。
classintList
protected:
structNode
intdata;
Node*next;
};
Node*L;
intList();
//构造函数
~intList();
//析构函数
boolInsert(inti,intelem);
boolRemove(inti,int&
elem);
//删除链表的第i个位置的元素,删除成功返回true,失败返回false
intFind(intelem);
//在链表中查找值为elem的元素,找到返回该元素在链表中的位置,否则返回0
intLength();
//返回链表长度(元素个数)
voidPrintList();
//输出链表
参考答案(非权威,仅仅是我自己的理解,如有错误,欢迎批评指正!
)
第一题:
Aa(inti=0)
a=i;
cout<
~Aa()
voidprint()
inta;
Aaal
(1),a2
(2);
al.print();
a2.print();
return0;
第二题
voidset_date();
voidshow_date();
intyear;
intmonth;
intday;
d.set_date();
d.show_date();
return0;
voidDate:
set_date()
cin>
year;
month;
day;
show_date()
year<
month<
day<
A(inti=0)
m=i;
voidshow()
~A(){}
friendvoidadd(A&
);
intm;
voidadd(A&
a)
Aa(5);
add(a);
a.show();
inta,b,c;
X(inti)
X()
a=b=0;
X(inti,intj)
b=j;
voidsetC(intk)
c=c+k;
voidsetA(inti)
Xx1;
Xx2
(2);
Xx3(1,2);
x1.setA(3);
第三题
//调用构造函数初始化p1
//显示调用拷贝构造函数初始化p2
//对象之间的赋值,由于之前没有定义p3,因此用另一个同类的对象给其赋值时,会调用拷贝构造函数。
//输出p3在赋值后的x和y
答:
调试程序会程序错误,原因是对于无输入的对象和只要一个输入值的对象没有相应的构造函数,要解决也挺简单,就是在说明部分加上相应的构造函数就可以了。
修改后的程序如下:
intX,Y;
TPoint()
{
X=Y=0;
AConstructoriscalled"
TPoint(inti)
X=i;
Y=0;
BConstructoriscalled"
TPoint(intx,inty)
X=x;
Y=y;
TPoint(TPoint&
~TPoint()
{cout<
intgetx()
{returnX;
intgety()
{returnY;
p1=("
p1.getx()<
p1.gety()<
p2=("
p2.getx()<
p2.gety()<
TPointp4,p5
(2);
p4=("
p4.getx()<
p4.gety()<
p5=("
p5.getx()<
p5.gety()<
cout<
X=p.X;
Y=p.Y;
TPoint*p1=newTPoint(4,9);
p1->
getx()<
gety()<
deletep1;
(4)
intgetx(){returnX;
intgety(){returnY;
voidShowPoint()
X<
Y<
p1->
ShowPoint();
第四题:
intn;
int*p;
NUM(intn1)
{
n=n1;
p=newint[n];
//动态分配存放连续合数的存储空间
}
intyes(intx)
for(inti=2;
if(x%i==0)return1;
return0;
voidfun(void)
intj;
for(inti=3;
{
j=0;
while(yes(i)&
{
p[j]=i;
j++;
i++;
}
if(j==n)break;
}
voidprint(void)
for(inti=0;
~NUM()
if(p)delete[]p;
//释放在构造函数中申请的存储空间
cin>
NUMnum(n);
num.fun();
num.print();
第五题:
classRectangle
intlen,wid;
Rectangle()
len=wid=0;
FirstConstructoriscalled"
Rectangle(inti,intw)
len=i;
wid=w;
SecondConstructoriscalled"
voidSet_Rectangle()
cin>
len;
wid;
intGet_Perimeter(){return2*(len+wid);
intGet_Area(){returnlen*wid;
intget_len(){returnlen;
intget_wid(){returnwid;
~Rectangle(){cout<
inttemp;
Rectanglerect,Default(8,9);
cout<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验二 类与对象附答案 实验 对象 答案