1、国家二级 C+机试(操作题)模拟试卷 124及答案与解析 一、基本操作题 1 请使用 VC6或使用【答题】菜单打开考生文件夹 projl下的工程 pmjl,此工程包含有一个源程序文件 projl cpp。其中位于每个注释 “ ERROR * found*”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为: (4, 4) 注意:只修改注释 “ ERROR *found*”的下一行语句,不要改动程序中的其他内容。 projl cpp #include using namespace std; class Point public: ERROR*found* Point(double x,
2、 double Y)一 X(x), y (Y) double GetX()constreturn x; ) double GetY()constreturn_y; ) ERROR*found* void Move (double xOff, double yOff)const x+=xOff; _y+=yOff; ) protected: doublex;y; ; int main() Point pt(1 5, 2 5); pt Move(2 5, 1 5); ERROR*found* 以下语句输出 pt成员 x和 y的值 cout #include using namespace std;
3、 class Basel public: *found*下列语句需要声明纯虚函数 Show ; ; class Base2 protected: char*;; Base2(const char*s) _P=new charstrlen(s)+1; *found*下列语句将形参指向的字符串常量复制到该类的字符数组中 ; ? Base2()delete-j); ) , *found*Derived类公有继承 Basel,私有继承 Base2类 class Derived: public: *found*以下构造函数调用 Base2类构造函数 Derived(const char*s): void
4、 Show() coutShow(); delete pb; return 0; 三、综合应用题 3 请使用 VC6或使用【答题】菜单打开考生目录 proj3下的工程文件 proj3,此工程包含一个源程序文件 proj3 epp,其功能是从文本文件 in dat中读取全部整数,将整数序列存放到 intArray类的对象 myAay中,然后对整数序列按非递减排序,最后由函数 writeToFile选择序列中的部分数据输出到文件 out dat中。文件in dat中的整数个数不大于 300个。 要求: 补充编制的内容写在 “ *333*”与 “*666*”两行之间。实现对整数序列按非递减排序,并将
5、排序结果在屏幕上输出。 不得修改程序的其他部分。 注意:程序最后已将结果输出到文件 out dat中。输出函数 writeToFile已经给出并且调用。 proj 3 cpp #include #include #include using namespace std; class intArray private: int*array;整数序列首地址 int length;序列中的整数个数 public: 构造函数,从文件中读取数据用于初始化新对 象。参数是文件名 intArray(char*filename); void sort();对整数序列按非递减排序 一 intArray(); v
6、oid writeToFi le(char*fi lename); ); intArray: intArray(char*filename) ifstream myFile(filename); int len=300; array=new int1en; length=0; while(myFilearray1ength+); length一一; myFile close(); void intArray: sort() *333* *666* intArray: intArray() deletearray; void intArray: writeToFile(char。 filenam
7、e) int step=0; ofstream outFile(filename); for(int i=0; iarrayj) 如果 arragiarrayj,把 arrayi与 ar rayi进行对换 int temp; 定义一个临时变 量 temp temp=arrayi;把 array i值放到变量 temp arrayi=arrayj;把 arrayj值赋给 arrayi arrayj =terap; 把变量 temp存放在值 arrayj中 for(int a: 0; alength; +a) 遍历数组,把数组中的所有元素打印到控制台上 coutarraya”; 【试题解析】 本题主要考查 intArray类,其中涉及构造函数、排序函数和析构函数。常用的排序算法有冒泡排序、选择排序、插入排序、堆排序等。 【解题思路】题目要求对整数序列按非递减排序,要排序就必须要有比较,因此定义两个下标 i和 j,按题目非递减排序要求,当 arrayi比 arrayj大时就交换其值,利用中间变量 temp来实现。 【解题宝典】排序算法有多种,其基本思想是相同的,即先遍历,后比较,再交换。不同之处在于它们遍历数列的顺序不同。考生可选择一至两种算法重点理解。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1