1、国家二级 C+机试(操作题)模拟试卷 110及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modil cpp,该程序运行时有错,请改正其中的错误,使得程序正常运行,并使程序输出的结果为: init TestClass del TestClass 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在 *error*的下面。 #include C1ass TestClass *error* *error* int TestClass()cout 2 int fun(int a, int n) 3 4 5 ) 6 void main() 7
2、8 int A=1, 2, 3, 4); 9 cout C1ass TestClassl int a ; public: *1* return a=x; void showa() cout0) 2 return a In一 1+fun(a, n一 1); 递归求 n项的和 3 return 0 ; 4数小于等于 0,返回求和值 0 【试题解析】 (1)该程序功能是利用递归实现数组前 n项的和。函数的递归是在调用一个函数的过程中出 现直接或间接调用该函数本身。 (2)从已给部分源程序的 main主函数开始入手,核心函数 hat fun(hat a, int n)中调用该函数本身,利用递归调用实现
3、计算结果,其中参数 a为数组名, n为要求和的项数。 解题思路 (1)如果要计算的项数小于等于 0,那么直接返回 0。 (2)否则调用递归语句 “an 1+fun(a, n 1)”,实现 0到第 n项的和。 三、综合应用题 3 【正确答案】 (1)添加语句: intseta(int x) (2)添加语句: class Testcl ass3: pub ie TestCl assl, privateTestClass2 (3)添加语句: int c; (4)添加语句: seta(x); 【试题解析】 本题的功能是利用类中的成员函数设置数值,并将其输出。在 VC环境下打开程序,根据题干给出的几条功
4、能要求,对程序中给出注释下的内容逐个补全或修改。从已定源程序的 main主函数开始入手,可以看出程序通过调用类TestClass实现各种输出操作。 解题思路 (1)题目 1要求 “完成类 TestClassl的成员函数 seta定义,定义 seta对象 x为 int类型 ”。类的成员函数 是函数的一种,它与一般函数的区别只是,它是一个类的成员,出现在类体中。所以类 TestClassl中的成员函数,就是在 TestClassl中定义题目中要求的参数为 int x的 seta函数,即 “int seta(int x)”。 (2)题目 2要求 “完成类 TestClassl(公有 )和类 Test
5、Class2(私有 )派生类 TestClass3的定义 ”。从已有的类产生一个新的子类,称为类的派生。声明派生类的一般形式为: class派生类名: 继承方式 基类名。根据声明派生类的一般形式,这里补全“classTestClass3: publicTestClassl,privateTcstClass2”。 (3)题目 3要求 “定义类 TestClass3中的私有成员 c为 int”。在类 TestClass3中的private数据成员区域,定义 int c,即在第 3个标识下补全 “int c; ”。 (4)题目 4要求 “完成 setc中对基类的变量 a的赋值 ”。基类为 TestClassl, setc对于该类 a的赋值,是 int seta(int x)函数的赋值,即 “seta(x); ”