- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
作业━━第7章━━动态内存分配
动态内存分配 【学习要点】 1.掌握C++的四个内存区域。 2.掌握堆内存和动态存储分配。 3.掌握new 与 delete 运算符的使用。 4.掌握动态创建对象。 5.掌握对象的浅拷贝、浅赋值。 6.掌握对象的深拷贝、深赋值。 ------------------------------------------------------------------------------------------------------------------------------------------------ 【例题分析】 1.为指针变量p赋初值,下列语句中不正确的是______。 A.int *p = 0; B.float *p = ( float* )50; C.int *p = new 50; D.float *p = new float[ 50 ]; 【答案】C 【解析】答案A给指针p 赋0值(空指针)是正确的;答案B将整数50的单元类型强制转换为实型指针也是可以的;答案D将指针p 指向在堆区上申请的具有50个元素的实型数组也是可以的;答案C错误,因为 new 运算符的运算对象不能是常数。 2.编写程序: 有数组a,其中存放20个数据为:{ 1, 2, 2, 2, 2, 3, 3, 4, 4, 5, 6, 6, 7, 8, 8, 8, 8, 9, 10, 10 },已按升序排列。试定义一个类ARRAY,实现将数组中相同的元素删除成只剩一个,即删除重复的数据。删除重复的数据后,数组a中的内容为:{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }。要求: ①私有成员数据: ●int *a; //存放数据的动态数组容器的起始地址 ●int n; //动态数组容器中已存放数据的个数 ②公有成员函数: ●ARRAY ( int x[ ] , int size ); //用数组x[size] 来初始化ARRAY类的对象 ●~ARRAY ( ); //析构函数 ●void deleteSame ( ); //将数组中重复的元素删除成只剩一个 ●void show ( ); //按每行4个数据的格式输出 ③编写main()函数对ARRAY类进行测试。 【答案】编写程序如下: #includeiostream.h class ARRAY { int *a; int n; public: ARRAY ( int x[ ] , int size ) { a = new int [ size ]; n = size ; for ( int i=0; in; i++ ) a[ i ] = x[ i ]; } ~ARRAY ( ) { delete [ ] a; } void deleteSame ( ) { for ( int i=0, j=0; jn; j++ ) { while ( a[ i ] == a[ j ] jn ) j++; if ( jn ) { a[ ++i ] = a[ j ]; } } n = ++i ; } void show ( ) { for ( int i=0; in; i++ ) { cout a[ i ] \t; if ( (i+1)%4==0 ) cout endl; } cout endl; } }; void main( ) { int a[ 20 ] = { 1, 2, 2, 2, 2, 3, 3, 4, 4, 5, 6, 6, 7, 8, 8, 8, 8, 9, 10, 10 }; ARRAY arr( a, 20 ); arr.deleteSame( ); arr.show( ); } 3.编写程序: 有一个线性数列,共有size个元素,要求从指定下标m开始的n个元素进行降序排列。例如,原数列的10个元素排列为:{ 2,8,4,0,3,9,5,7,9,8 },若要求从第3个元素开始的5个数据降序排列,则得到的新数列为:{ 2,8,4,9,7,5,3,0,9,8 }。试定义一个List类,实现上述功能。要求: ①私有成员数据: ●int *arr; //存放动态数组容器空间的起始地址 ●int size; //动态数组容器中已存放元素的个数 ②公有成员函数: ●List ( int a[ ] , int len );
文档评论(0)