1、国家二级( C+)机试模拟试卷 30及答案与解析 一、程序改错题( 30分) 0 使用 VC6打开考生文件夹下的工程 RevProj11。此工程包含一个源程序文件RevMain11.cpp,但在源程序文件中有错误。请改正程序中的错误,使它能得到正确结果。 注意,不得删行或增行,也不得更改程序的结构。 源程序文件 RevMainll.cpp中的程序清单如下: /RevMainll.cpp #include iostream using namespace std; class point private: const int color; int x; int y; public: point(
2、int x, int y, int c) this- x=x; this- y=y; color=c; void show() cout “x=“ x “, y=“ y “, color=“ color end1; ; int main() const point p(10, 10, 100); p.show(); return 0; 二、简单应用题( 40分) 0 请编写一个函数 void fun(int a , int n),其中 a为数组, n为数组 a的长度。函数 fun()的功能是冒泡排序法将数组 a元素按从小到大的顺序排列,实现数组 a的升序排列。 注意:部分源程序已存在文件 PR
3、OC12.cpp中。 请勿修改主函数和其 他函数中的任何内容,仅在函数 fun()的花括号中填写若干语句。 文件 PROC12.cpp的内容如下: /PROC12. cpp #include iostream using namespace std; #define MAX 100 void fun(int a,int n); int main () int aMAX,n,i; cout “Please enter the array size n:n“; do cin n; if (n 100) cout “array size flowover! ReEnter a number(0-10
4、0)n“; while (n 100); cout “Enter the array data:n“; for (i=0; i n; i+) cin a ii; fun(a,n); for (i=0; i n; i+) cout a i “ “; cout end1; return 0; void fun(int a ,int n) / * * * * * * * * 三、综合应用题( 30分) 0 使用 VC6打开考生文件夹下的工程 MyProj10。此工程包含一个源程序文件MyMain10.cpp。程序中定义了两个类 Base和 Derived,但类的定义并不完整。 请按要求完成下列操作,
5、将类的定义补充完成: 类 Derived是基类 Base公有派生来的。请在注释 “/* *1* *”之后添加适当的语句。 完成构造函数 Derived(int i)定义,采用初始化列表的方式使基类 Base私有成员a初始化为 i+1,类 Derived的私有成员 b初始化为 i。请在注释 “/* *2* *”之后添加适当的语句。 完成类 Derived的成员函数 show()的类体外的定义。函数 show()中要显式调用基类的 show()函数,然后要输出私有成员 b的值。请在注释 “/* *3*”之后添加适当的语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。 源程序文件
6、MyMain10.cpp清单如下: /MyMain10.cpp #include iostream using namespace std; class Base public: Base(int x) a=x void show() cout a; private: int a; ; /* * *1* * * public: /* * * 2 * * * void show(); private: int b; ; void Derived : show() /* * * 3 * * * int main() Derived d(1), *pb; pb=&d; pb- show(); return 0; 国家二级( C+)机试模拟试卷 30答案与解析 一、程序改错题( 30分) 二、简单应用题( 40分) 三、综合应用题( 30分)