1、国家二级 C+机试(操作题)模拟试卷 355及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modilcpp,该程序运行时有错,请改正其中的错误,使程序正确运行,并且使程序输出的结果为: CMyObject,in the construtor CMyObject,in the destrutor 注意:错误的语句在*error*的下面,修改该语句即可。 #include class CMyObj ect *error* *error* CMyObj ectcout ”CMyObject,in the d
2、eStrutor” _二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。完成 fun()函数,其功能是:求出 M行 N列二维数组每行元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。 注意:不能修改程序的其他部分,只能修改 fun()函数。 #iRClude #defime M 2 #defime N 4 void fun(int aMN,int*sum) void msin() int xMN=7,6,5,2,4,2,8,3); int s; fun(x,s); couts_三、综合应用题(总题数:1,分数:2.00)3.
3、使用 VC6打开考生文件夹下的源程序文件 modi3cpp。程序通过继承关系,实现对姓名的控制。 类TestClass1实现对名字访问的接口,TestClass2 实现对名字的设置和输出。 程序输出为: TestClass2Name May 其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)在类TestClassl中定义接口函数 GetName,为纯虚函数。请在注释*1*后添加适当的语句。 (2)函数 GetName20实现获得名字的缓存,但是只获得读允许操作这个缓存,请在注释*2*后添加适当的语句。 (3)实现 TestClass2的构造函数,请在注释*3*后添加适当的语
4、句。 (4)完成 TestClass2的构造函数,实现对名字的处理。请在注释*4*后添加适当的语句。 注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。 #include class TestClass1 public: *1* ; class TestClass2:public TestClass1 public: void GetName() CoutGetName(); cout_国家二级 C+机试(操作题)模拟试卷 355答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件
5、 modilcpp,该程序运行时有错,请改正其中的错误,使程序正确运行,并且使程序输出的结果为: CMyObject,in the construtor CMyObject,in the destrutor 注意:错误的语句在*error*的下面,修改该语句即可。 #include class CMyObj ect *error* *error* CMyObj ectcout ”CMyObject,in the deStrutor” _正确答案:(正确答案:(1)添加语句:public: (2)CMyObj ect()coutendl;)解析:解析:程序中定义了类 CMyObject,含有一个
6、构造函数和一个析构函数,在构造函数和析构函数中分别输出一段字符。二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。完成 fun()函数,其功能是:求出 M行 N列二维数组每行元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。 注意:不能修改程序的其他部分,只能修改 fun()函数。 #iRClude #defime M 2 #defime N 4 void fun(int aMN,int*sum) void msin() int xMN=7,6,5,2,4,2,8,3); int s; fun(x,s); couts_正确答
7、案:(正确答案:int i,j,k,s=0; for(i=0;iM; i+) 外循环 k=0; for(j=1;jN;j+) if(a1kaij)k=:; 求得每一行的最小值 s+=aik; 最小值求和 *sum=s; 返回求和值)解析:解析:(1)该程序功能是求二维数组每行元素中的最小值,并计算它们的和值。本题解题思路基本可以分为两重循环,外重循环为对二维数组的所有行进行循环,内重循环为对每一行内进行列循环,求出每一行中的最小值。最后求出这些最小值的和。 (2)从己给部分源程序的 main主函数开始入手,核心函数 void fun(int aMN,int*sum)中的 a参数为二维数组,su
8、m 为要求得的和。三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3cpp。程序通过继承关系,实现对姓名的控制。 类TestClass1实现对名字访问的接口,TestClass2 实现对名字的设置和输出。 程序输出为: TestClass2Name May 其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)在类TestClassl中定义接口函数 GetName,为纯虚函数。请在注释*1*后添加适当的语句。 (2)函数 GetName20实现获得名字的缓存,但是只获得读允许操作这个缓存,请在注释*2*后添加适当的语句。 (3)
9、实现 TestClass2的构造函数,请在注释*3*后添加适当的语句。 (4)完成 TestClass2的构造函数,实现对名字的处理。请在注释*4*后添加适当的语句。 注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。 #include class TestClass1 public: *1* ; class TestClass2:public TestClass1 public: void GetName() CoutGetName(); cout_正确答案:(正确答案:(1)添加语句:virtual void GetName()=0; (2)添加语句:const char*GetName2() (3)添加语句:TestClass2(char*str) (4)添加语句:m stri=0;)解析:解析:在 VC环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。从已定源程序的 main主函数开始入手,可以看出程序通过调用类 TestClass和接口函数Gemame实现各种输出操作。