1、国家二级 C+机试(操作题)模拟试卷 471及答案与解析 一、基本操作题 1 请使用 VC6或使用【答题】菜单打开考生文件夹 proj1下的工程 proj1,此工程包含一个源程序文件 proj1 cpp。文件中将表示数组元素个数的常量 Size定义为4,并用 int类型对类模板进行了实例化。文件中位于每个注释 “ERROR*found*”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为: 1 2 3 4 注意:模板参数名用 T。只修改注释 “ ERROR*found*”的下一行语句,不要改动程序中的其他内容。 proj1 cpp #include using namespace st
2、d; 将数组元素个数 Size定义为 4 ERROR *found* const int Size; template class MyClass public: MyClass(T*P) for(int i=0; i ERROR *found* void MyClass: Print() for(int i=0; iobj (intArray); obj Print(); cout using namespace std; class CharShape public: CharShape(char ch): ch(ch); virtual void Show()=0; protected:
3、 char ch;组成图形的字符 ; class Triangle: public CharShape public: Triangle(char ch, int r): CharShape(ch), rows(r) void Show(); private: int rows;行数 ; class Rectangle: public Char-Shape public: Rectangle(char ch, int r, int c): CharShape(ch), _rows (r), cols(c) void Show(); private: int rows t cols;行数和列数
4、; void Triangle: Show() 输出字符组成的三角形 for(int i=1; i using namespace std; const int Max=100; class IntSet public: IntSet() 构造一个空集合 end=-1; IntSet(int a, int size)构造一个包含数组 a中 size个元素的集合 if(size=Max) end=Max-1; else end=size-1; for(int i=0; i: Print() (3)MyClassobj(intArray); 【试题解析】 (1)主要考查考生对 const变量的掌握
5、,因为 const变量不能修改,所以在定义的同时必须初始化。 (2)主要考查考生对模板类的成员函数定义的掌握,因为 MyClass类是模板类,所以在定义该函数时要加上模板标识符 “”,即语句 void MyClass:Print()。 (3)主要考查考生对模板类构造函数的调用的理解,从上一条语句 int intArraySize=1, 2, 3, 4;中可以知道 intArray为 int型,因此定义 obj时要使用 ,即 MyClassobj(intArray);。 二、简单应用题 2 【正确答案】 (1)i*2-1 (2)_rows (3)_cols (4)CharShape&cs 【试题解析】 (1)考查 for循环语句,该语句所在的函数的功能是输出字符组成的三角形。从外层循环中可以看出下标 i代表行数,那么下标 j就代表每一行字符的个数,因为要输出的是三角形,所以每一行的个数与该行的行数相关,即 j=Max) end=Max-1; else end=Size-1; for(int i=0 ; i=end; i+) elementi=ai; 可知数组 element用来装载集合, end表示数组长度,因此调用函数 IsMemberOf来判断 set中的元素是否存在于集合中,如果存在则放人数组 a中。