1、国家二级 C+机试(操作题)模拟试卷 209及答案与解析 一、基本操作题 1 请使用菜单命令或直接使用 VC6打开考生文件夹下的工程 proj1。程序中位于每个 ERROR*found*下的语句行有错误,请加以更正,不得修该程序的其他部分。更正后程序的输出应该是:两点之间的距离为: 7 5231 注意:只能修改每爪 ERROR*found*下的那一行,不要改动程序中的其他内容: 1 #include 2 #include 3 using namespace std; 4 class Point 5 private: 6 double x, y; 7 public: 8 Point(double
2、 xx, double yy)x=xx; 9 y=yy; 10 11 ERROR * found* 12 double MyDistance(Point a, Point b); 13 ; 14 double MyDistance(Point a, Point 18 void add(Element ele); 向集合中添加一个元素,保持由小到大的顺序。 19 void remOve(Element ele); 删除集合中指定的元素 20 void ScanFirst()current=0; )将扫描位置定位于首元素 21 *found* 22 void scanNext()_;将扫描位置定位
3、于下一个元素 23 Element get()constreturn ele-mentcurrent; 返回当前被扫描的元素 24 bool isEnded()constreturn cur-rent=counter; 如果已经没有更多的元素可扫描了,返回 true。 25 void show(); 显示集合中所有元素 26 ; 27 void MySet: add(Element ele) 28 int pos=counter; pos用于确定元素应插入的位置 29 while(pos0) 从后往前寻找该位置 30 if(ele nelementpos-1 n)break; 找到应插入的位置
4、,退出循环 31 *found* 32 if(_)return;发现相同元素,终止添加过程。 33 pos-; 34 35 if(counter=size) 如果没有足够空间,扩充空间 (增加 100个元素的容量 ) 36 Element木 tmp=element; tmp指向原来的数组 37 *found* 38 element=_;申请一个新的数组,容量扩大 100个元素的容量 39 for(int i=0; ipos;i-)elementi=elementi-1;后移相关元素,腾出存放新元素的空间 44 elementpos=ele;插入新元素 counter+; 45 46 void
5、MySet: show() 47 scanFirst(); 扫描位置定位于首元素 48 while(!isEnded() 49 cout=0)从后往前寻找该位置 58 if(ele nelementpos n)return;集合中没有该元素,终止删除过程。 59 if(ele n=elementpos n)break; 找到删除的元素,退出循环。 60 pos-; 61 62 if(pos 3 using namespace std; 4 class SortedList有序数据表类 5 int len; 6 double*d; 7 public: 8 SortedList(int len,
6、double data=NULL); 9 SortedList()delete d; 10 int length()constreturn len;)有序数据表长度 (即元素的个数 ) 11 double getElement(int i)constre-turn di; 12 void insert(double data); 13 void show()const;显示有序数据表 14 ; 15 void writeToFile(char*, const Sort- 16 edList ); 1 main cpp 2 #include“SortedList h“ 3 4 SortedLis
7、t: SortedList(int len, 5 double data): len(len) 6 d=rlew doublelen; 7 for(int k=0; ki) 14 double t=dm; 15 dm=di; 16 di=t; 17 18 19 20 void SortedList: insert(double da- 21 ta) 22 *333* 23 24 25 *666* 26 27 void SortedList: show()const显示有序数据表 28 for(int i=0 ;ii; k-)在数组 d中从 k等于 fen到 i做遍历 7 ddk=dk-1;把
8、dk-1赋值给 ddk 8 ddi=data;把 data赋值给 ddi 9 for(int j=0; ji;j+)把数组 d从 0到 i做遍历 10 ddj=dj;把 dj赋值给 ddj 11 deleted; 删 d分配的空间 12 d=new doublelen;给 d分配长度为 len的空间 13 for(int index=0 ; indexlen; +index) 14 遍历数组 dd从 0到 len 15 dindex=ddindex;地 ddindex赋值给 dindex 16 deletedd; dd分配的空间 17 break; 跳出循环 18 【试题解析】 主要考查考生对插入算法的掌握,题目要求 insert函数的功能是将一个数据插入到一个有序表中,使得该数据表仍保持有序。可以知道数据表 d是一组有序的数组,那么就采取先比较再插入的步骤完成即可。 要注意动态数组 d的长度是确定的,要添加元素,就要重新分配空间。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1