return0;
}
在该程序中,将TPoint类的带有两个参数的构造函数进行修改,在函数体内增添下述语句:
cout<<"Contructoriscalled.\n"
(1)写出程序的输出结果,并解释输出结果。
(2)按下列要求进行调试;
在主函数体内,添加下列说明语句:
Tpointp4,p5
(2);
调试程序会出现什么现象?
为什么?
如何解决?
(提示:
对已有的构造函数进行适当修改)结合运行结果分析如何使用不同的构造函数创建不同的对象。
3.对教材中Li3_11.cpp的主函数做如下修改:
(1)将Heapclass*pa1,*pa2改为Heapclass*pa1,*pa2,*p3;
(2)在语句pa=newheapclass;后增加语句pa3=newHeapclass(5);
(3)将语句if(!
pa1||!
pa2)改为if(!
pa1||!
pa2||!
pa3);
(4)在语句deletepa2;后增加语句deletepa3;
写出程序的输出结果,并解释输出结果。
4.请定义一个矩形类(Rectangle),私有数据成员为矩形的长度(len)和宽度(wid),无参构造函数置len和wid为0,有参构造函数置len和wid为对应形参的值,另外还包括求矩形周长,求矩形面积,取矩形长度和宽度,修改矩形长度和宽度为对应形参的值,输出矩形尺寸等公有成员函数。
要求输出矩形尺寸的格式为”length:
长度,width:
宽度”。
(sy3_3.cpp)
5调试下列程序,写出输出结果,并分析输出结果。
//sy4_1.cpp
#include
usingnamespacestd;
classMy
{
public:
My(intaa)
{
A=aa;
B-=aa;
}
staticvoidfun(Mym);
private:
intA;
staticintB;
};
voidMy:
:
fun(Mym)
{
cout<<"A="<cout<<"B="<}
intMy:
:
B=100;
intmain()
{
MyP(6),Q(8);
My:
:
fun(P);
Q.fun(Q);
return0;
}
6.分析并调试程序,完成下列问题。
//sy4_2.cpp
#include
#include
usingnamespacestd;
classMy
{
public:
My(doublei=0){x=y=i;}
My(doublei,doublej){x=i;y=j;}
My(My&m){x=m.x;y=m.y;}
frienddoubledist(My&a,My&b);
private:
doublex,y;
};
doubledist(My&a,My&b)
{
doubledx=a.x-b.x;
doubledy=a.y-b.y;
returnsqrt(dx*dx+dy*dy);
}
intmain()
{
Mym1,m2(15),m3(13,14);
Mym4(m3);
cout<<"Thedistancel:
"<cout<<"Thedistance2:
"<cout<<"Thedistance3:
"<cout<<"Thedistance4:
"<return0;
}
(1)指出所有的构造函数,它们在本程序中分别起什么作用?
(2)指出设置默认参数的构造函数。
(3)指出友元函数,将友元函数放到私有部分,观察结果是否有变化。
(4)写出输出结果,并分析输出结果。
7.定义一个Student类,在该类的定义中包含一个数据成员score(分数),两个静态数据成员total(总分)和学生人数count;成员函数scoretotalcount(floats)用于设置分数,求总分和累计学生人数;静态成员函数sun()用于返回总分;静态成员函数average()用于求平均值。
在main函数中,输入某班同学的成绩,并调用上述函数求全班学生的总分和平均分(sy4_3)
8.声明Book和Ruler两个类,二者都有weight属性,定义二者的一个友元函数totalWeight(),计算两者的重量和。
(sy4_4.cpp)
三、实验环境
微机及VisualC++6.0。
四、算法描述及实验步骤
1.将cout<2.在该程序中,将TPoint类的带有两个参数的构造函数进行修改,在函数体内增添下述语句:
cout<<”Contructoriscalled.\n”
(1)写出程序的输出结果,并解释输出结果。
(2)按下列要求进行调试;
在主函数体内,添加下列说明语句:
Tpointp4,p5
(2);
观察调试时出现的现象,解释原因并解决
3.写出修改后的程序的结果,并解释输出结果
修改后的程序:
#include
usingnamespacestd;
classHeapclass
{
public:
Heapclass(intx);
Heapclass();
~Heapclass();
private:
inti;
};
Heapclass:
:
Heapclass(intx)
{
i=x;
cout<<"Contstructoriscalled."<
}
Heapclass:
:
Heapclass()
{
cout<<"DefaultContstructoriscalled."<}
Heapclass:
:
~Heapclass()
{
cout<<"Defaultiscalled."<}
intmain()
{
Heapclass*pa1,*pa2,*pa3;
pa1=newHeapclass(4);
pa2=newHeapclass;
pa3=newHeapclass(5);
if(!
pa1||!
pa2||!
pa3)
{
cout<<"OutofMemory!
"<return0;
}
cout<<"Exitmain"<deletepa1;
deletepa2;
deletepa3;
return0;
}
4#include
usingnamespacestd;
classRectangle
{
public:
Rectangle(){len=0;wid=0;}
Rectangle(doubleLen,doubleWid){len=Len;wid=Wid;}
doubleCircumference(){return2*(len+wid);}
doubleArea(){returnlen*wid;}
doublegetl(){returnlen;}
doublegetw(){returnwid;}
voidcharge(doublea,doubleb){len=a;wid=b;}
print(){cout<<"length:
"<"<private:
intlen,wid;
};
intmain()
{
Rectanglep1;
Rectanglep2(4.0,5.0);
cout<<"p1的矩形尺寸:
";
p1.print();
cout<<"p2的矩形尺寸:
";
p2.print();
cout<<"p2周长:
"<cout<<"p2面积:
"<cout<<"p2的长度:
"<cout<<"p2的宽度:
"<p2.charge(5.0,6.0);
cout<<"修改后的矩形的尺寸:
";
p2.print();
return0;
}
5.调试程序所有sy4_1,写出输出结果,分析输出结果。
6.分析调试sy4_2,回答sy4_2的问题。
7.
程序如下:
//sy4_3
#include
usingnamespacestd;
classstudent
{
public:
voidscoretot