计算机程序设计 问题集锦4.0.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

第四次作业第2题,对球对象排序,是指对10个静态数组和20个动态数组一起排序,还是指10个静态数组排序,和对20个动态数组分别进行排序??

答:分别进行排序即可,你非要合起来一起排序也行。

==============================================================================

2.我有以下两个问题:

(1)是不是构造函数和复制构造函数都需要打印被调用的信息?(可是我觉得这样在构造数组的时候会打印很多遍,有点乱)

(2)如何给对象数组的元素赋值?

我有两个想法:

(1)把x,y,z,r设置成为共有成员,可是这样失去了类的封装的作用。

(2)另外定义一个专门给数组赋值的函数,设置成为Ball类的友元函数。

我觉得应该是第二种做法,对吗?

答:(1)在构造函数和复制构造函数里打印被调用的信息,是我们为了跟踪调试,让你知道这些构造函数确实被调用了,实际程序肯定不打印。

(2)用无名对象Ball(x,y,z,r)给对象数组的元素循环逐个赋值即可,不用这么麻烦。

==============================================================================

3.我在做第四次作业第二题的时候,发现输出结果的中间部分出现了两次析构函数被调用,好像是调用排序函数时用到的,我不是很明白,然后在程序里面添了一个显示构造函数被调用的语句(已删)发现在析构之前构造了两个对象,可是为什么不是调用复制构造函数?而且它显示出来拆掉的对象是确定的吗,跟数组里的元素有关系吗?

程序在附件里,请您帮忙看一下。.

#includeiostream

#includestdlib.h

usingnamespacestd;

constdoublepi=3.1415927;

classBall

{public:

Ball(intnx=0,intny=0,intnz=0,intnr=1){x=nx;y=ny;z=nz;r=nr;}

Ball(Ballb);

~Ball(){cout析构函数被调用(x,y,z)r=rendl;}

voidSet(intnewx,intnewy,intnewz,intnewr)

{x=newx;y=newy;z=newz;r=newr;}

intGetX(){returnx;}

intGetY(){returny;}

intGetZ(){returnz;}

intGetR(){returnr;}

voidPrint(){cout球心:(x,y,z)半径:r;}

doubleVolume(){returnpi*r*r*r*4/3.0;}

private:

intx,y,z,r;

};

Ball::Ball(Ballb)

{ x=b.x;y=b.y;z=b.z;r=b.r;}

voidselect(Balla[],intn)

{ Ballb;

intt,i,j,k;

t=a[0].GetR();

for(i=0;in;i++)

{ k=i;

for(j=i+1;jn;j++)

{ if(a[j].GetR()t)

{k=j;t=a[j].GetR();}

}

if(k!=i){b=a[i];a[i]=a[k];a[k]=b;}

t=a[i+1].GetR();

}

}

voidmain()

{ inti,X=0,Y=0,Z=0,R=0;

doubleV=0;

Balla[10],*b;

b=newBall[20];

srand(0);

for(i=0;i10;i++)

{ a[i].Set(rand(),rand(),rand(),abs(rand()));

a[i].Print();

cout体积:a[i].Volume()endl;

X+=a[i].GetX();Y+=a[i].GetY();Z+=a[i].GetZ();R+=a[i].GetR();V+=a[i].Volume();

}

for(i=0;i20;i++)

{ b[i].Set(rand(),rand(),rand(),abs(rand()));

b[i].Print();

cout体积:b[i].Volume()endl;

X+=b[i].GetX();Y+=b[i].GetY();Z+=b[i].GetZ();R+=b[i].GetR();V+=b[i].Volume();

}

select(a,10);

select(b,20);

for(i=

文档评论(0)

翰林大当家 + 关注
实名认证
服务提供商

文案个性定制,计划书、方案、策划书专业撰写。

1亿VIP精品文档

相关文档