1、国家二级 C+机试(操作题)模拟试卷 133及答案与解析 一、基本操作题 1 请使用 VC6或使用【答题】菜单打开考生文件夹 pmj1下的工程 pmjl。其中有线段类 Line的定义。程序中位于每个 “ ERROR*found*”之后的一行语句有错误,请加以改正。改正后程序的输出结果应该是: End point 1=(1, 8), End point 2=(5, 2), lenth=7 2111。 注意:只修改每个 “ ERROR*found*”下的那一行,不要改动程序中的其他内容。 #include #include USing namespace std; class Line; doub
2、le length(Line); class Line 线段类 double x1, y1;线段端点 1 double x2, y2;线段端点 2 public: ERROR*found* Line(double x1, double y1, double x2, double y2)const this一 x1=x1 ; this一 y1=y1; this一 x2=x2; this一 y2=y2; double getXl()constreturn x1; double getYl()constreturn y1; ) double getX2()constreturn x2; double
3、 getY2()constreturn y2; void show()const cout using namespace std; class VectorBase 向量基类,一个抽象类 int len; public: VectorBase(int len): len(1en) int length()constreturn len; ) 向量长度,即向量中元素的个数 virtual double getElement(int i) const=0;取第 i个元素的值 virtual double sum()const=0; 将所有 元素的和 void show()const显示向量中所有
4、元素 coutshow(); delete V; v=new ZeroVector(6); V一 show(); delete V; return 0; 三、综合应用题 3 请使用 VC6或使用【答题】菜单打开考生文件夹 proj3下的工程 proj3,其中声明了 SortedList类,是一个用于表示有序数据表的类。其成员 函数 insert的功能是将一个数据插入到一个有序表中,使得该数据表仍然保持有序。请编写这个 insert函数。程序的正确输出应为: 插入前: 1, 2, 4, 5, 7, 8, 10 插入 6和 3后: 1, 2, 3, 4, 5, 6, 7, 8, 10 要求: 补充
5、编制的内容写在 “ *333*”与 “ *666*”之间。不得修改程序的其他部分。 注意:程序最后将结果输出到文件 out dat中。输出函数 writeToFile已经编译为obj文件,并且在本程序中调用。 SortedList。 h #include using namespace std; class SortedList有序数据表类 int len; double*d; public: SortedList(int len, double data =NULL); 一 SortedList()deleted; ) int length()constreturn len; ) 有序数据表
6、长度 (即元素的个数 ) double getElement(int i)constreturn di; ) void insert(double data); void show()const;显示有序数据表 ; void writeToFile(char。, const Sort edLiSt ); main cpp #include”SortedList h” SortedLiSt: SortedList(int len, double data): len(1en) d=new double1en; for(int k: 0; ki) double t=dm; dm=di; di=t;
7、 void SortedList: insert (double data) *333* *666* void SortedList: show()const 显示有序数据表 fori; k一一 ) 在数组 d中从 k等于 len到 i做遍历 ddk=dk一 1; 把 dk一 1赋值给 ddk ddi=data; 把 data赋值给 ddi for (int j=0; j i; j+) 把数组 d从 0到 i做遍历 ddj=dj; 把 dj赋值给 ddj deleted; 删 d分配的空间 d: new doublelen; 给 d分配长度为 len的空间 for (int index=0;
8、index len; +index) 遍历数组 dd从 O到 len dindex=ddindex; 地 ddindex赋值给 dindex deletedd; 删 dd分配的空间 break; 跳出循环 【试题解析】 主要考查 SortedList类,其中涉及动态数组、构造函数、析构函数、 const函数和排序算法。插人算法有两个步骤,一是比较,即要插入的元素在哪里;二是插入元素,后面的元素要逐个后移一位,为新加入的元素空出位置。 【解题思路】主要考查考生对插入算法的掌握, 题目要求 insert函数的功能是将一个数据插入到一个有序表中,使得该数据表仍保持有序。可以知道数据表 d是一组有序的数组,那么就采取先比较再插入的步骤完成即可。要注意动态数组 d的长度是确定的,要添加元素,就要重新分配空间。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1