1、国家二级 C+机试(操作题)模拟试卷 370及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modi l cpp,该程序运行时有错,请改正错误,使得程序正确执行,并且输出以下语句: TestClass1: 0 TestClass2 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在 *error*的下面。 #include struct TestClass1 TestClass1(int i=0) m i=i; void print() cout void fun (int a, int n, int b, int m, int*c)
2、void main() int A=3, 5, 7, 9, 11, 1 8, 21); int B=6, 1 5, 1 9, 2 1, 3 9); int C25, i ; for(i=0; i #include class Rectangle public: int left, right t top , bottom; *1* left=i; right=r; top=t; bottom=b; *2* left=rc left; right=rc right; top=rc top; bottom=rc bottom; float Diagonal() *3* return int Gir
3、th() *4* return ; int main() Rectangle rect(20, 50, 40, 80); Rectangle rect2(rect); coutrect2 Diagonal()endl; coutrect2 Girth()endl; return 0; 国家二级 C+机试(操作题)模拟试卷 370答案与解析 一、基本操作题 1 【正确答案】 (1)public: (2)TeStClass1 obj 1(0);或 TestClass1 obj1; (3)TestClass2 obj2; 【试题解析】 程序要求输出 TestClass1: 0和 TestClass2
4、。从已定源程序的 main主函数开始入手,可以看出程序首先定义 TestClass1和 TestClass2类型的变量,然后通过调用其中的 print成员函数实现输出结果。 二、简单应用题 2 【正确 答案】 Int i, j; for(i=j=0; in &jm; ) *c+=aibj?ai+: bj+; 比较两个数组中元素大小 while(in)*c+=ai+; while(jm)*c+=bj+; 【试题解析】 (1)该程序功能是将两个从小到大有序数组 a和 b,复制合并出一个有序整数序列 c。它的解题思路,因为要合并的数组是有序数组,所以在循环中依次比较两个数组中的元素大小,如果它比另一
5、个数组的元素小,那么将其拷贝到c,并将其向后移动,直到数组结尾。 (2)从已给部分源程序的 main主函数开始入手,核心函数 void fun(int a, int n,int b, int m,int*c)中的 a, b参数为要合并的数组, n和 m为两个数组的大小, c为合并的结果。 三、综合应用题 3 【正确答案】 (1)添加语句: Rectangle(int 1, int r, int t, int b) (2)添加语句: Rectangle(Rectangle&rc) (3)将 “return”补充完整为: return sqrt(rightleft)*(rightleft) + (bottomtop)*(bottomtop); (4)将 “return”补充完整为: return 2*(rightleft)+(bottomtop); 【试题解析】 类 Rectangle是描述了一个矩形,私有成员分别描述矩形的坐标值,构造函数给私有数据成员赋初值。 Rectangle类的 Diagonal()和 Girth()分别计算矩形的对角线长度和周长,可通过矩形的长和宽计算得到。