1、国家二级 C+机试(操作题)模拟试卷 326及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modi1cpp,但该程序运行有问题,请改正 main函数中的错误,使程序的输出结果是: nember=1 nember=10 nember=100 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在*error*的下面。#includeiostreamhClass TestClasspublic: TestClass(int i) nember=i; void SetNember(
2、int m) nember=m; int GetNember()const return nember; void Print()conSt cout“nember=“nemberendl; private: int nember;void main() *error* TestClass obj1; obj1Print(); TestClass obj2(3); *error* obj1nember=10; *error* TestClassSetNember(100); obj1Print(); obj2Print();(分数:2.00)_二、简单应用题(总题数:1,分数:2.00)2.使
3、用 VC6打开考生文件夹下的源程序文件 modi2cpp。阅读下列函数说明和代码,补充空出的代码。函数 convert(char*des,char*str)实现的功能是,如果字符串 str里面有空格或者不可打印字符,则全部去掉,将转化后的字符串放在字符串 des里,然后返回该字符串。 注意:不能修改程序的其他部分,只能补充 convert()函数。 #include #include #define MAXLEN 1024 char*convert(char*des,char* str) void main() char destMAXLEN; char*str=“AbcDeFhJK“; co
4、ut_三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)在类 TestClass中定义 name为字符串类型,age 为整型,请在注释*1*后添加语句。 (2)设置类 TestClass0的基类为 TestClass类的定义,请在注释*2*后添加语句。 (3)在类 TestClass的派生类 TestClass0的公有成员中定义析构函数 TestClass0,请在*3*后添加。 (4)设置类 TestClass1的基类为 TestClass类的定义,请在*4*后实现。
5、 本程序输出如下结果: TestClass class constructor TestClass0 class constructor TestClass on class constructor TestClass1 class constructor TestClass1 class constructor TestClass class constructor TestClassO class constructor TestClass class constructor 注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。#includeiostreamh
6、Class TestClass *1*public: TestClass()cout“TestClass class constructor“endl; 一 TestClass()cout”TestClass class constructor“endl;*2* char *departmert ; int level;public: TestClass0() cout“TestClass 0 Classconstructor“endl;) *3* cout“TestClass0 Classconstructor“endl;*4* char*major; float salary;public
7、: TestClass1() cout“TestClaSsl Class COnstructor“endl; TestClass1() cout“TestClass1 class constructor“endl;);void main() TestClaSs0 s1; TestClassl t1;(分数:2.00)_国家二级 C+机试(操作题)模拟试卷 326答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modi1cpp,但该程序运行有问题,请改正 main函数中的错误,使程序的输出结果是: nemb
8、er=1 nember=10 nember=100 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在*error*的下面。#includeiostreamhClass TestClasspublic: TestClass(int i) nember=i; void SetNember(int m) nember=m; int GetNember()const return nember; void Print()conSt cout“nember=“nemberendl; private: int nember;void main() *error* TestC
9、lass obj1; obj1Print(); TestClass obj2(3); *error* obj1nember=10; *error* TestClassSetNember(100); obj1Print(); obj2Print();(分数:2.00)_正确答案:(正确答案:(1)TestClass obj1(1); (2)obj1SetNember(10); (3)obj2SetNember(100);)解析:解析:(1)第 1个标识下,“TestClass obj1;”语句是声明 TestClass类的对象 obj1,根据TestClass类构造函数的定义 TestClass
10、(int i),存在整型参数,并且题目要求第一个输出结果为 1,所以补全参数 l,即第 1个标识下的“TestClass obj1(1);”。 (2)第 2个标识下的“obilnember=10:”应该是调用成员函数 SetNember赋值。在 C+中成员函数的使用形式应该是:对象名成员函数,所以修改为“obj1SetNember(10);”。 (3)类是对象的抽象,而对象是类的具体实例。第 3个标识下“TestClassSetNember(100);”语句中的 TestClass为类,并不是对象,这里应该是使用定义的对象,即 obj2,修改为“obj2SetNember(100);”。二、简
11、单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。阅读下列函数说明和代码,补充空出的代码。函数 convert(char*des,char*str)实现的功能是,如果字符串 str里面有空格或者不可打印字符,则全部去掉,将转化后的字符串放在字符串 des里,然后返回该字符串。 注意:不能修改程序的其他部分,只能补充 convert()函数。 #include #include #define MAXLEN 1024 char*convert(char*des,char* str) void main() char destMAXLEN; ch
12、ar*str=“AbcDeFhJK“; cout_正确答案:(正确答案:int j=0; for(int i=0;stri !=NULL;i +) i f(stri!=isprint (stri)判断是否是可打印的而且非空格字符 desj+=stri; 添加 desj=NULL;最后一个字符为空 return des;)解析:解析:(1)由审题分析可知,可利用循环来逐个检索 str中的字符,循环变量 i从 0开始,直到str数组的结束,即 stri=0为循环结束条件。 (2)在循环中用 if语句判断该字符是否是空格或者不可打印字符:if(stri!=isprint(stri),如果满足条件说明
13、不是空格或者不是不可打印字符添加到 des中,不满足则无须添加到 des中。三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)在类 TestClass中定义 name为字符串类型,age 为整型,请在注释*1*后添加语句。 (2)设置类 TestClass0的基类为 TestClass类的定义,请在注释*2*后添加语句。 (3)在类 TestClass的派生类 TestClass0的公有成员中定义析构函数 TestClass0,请在*3*后添加。 (4)设置类 Tes
14、tClass1的基类为 TestClass类的定义,请在*4*后实现。 本程序输出如下结果: TestClass class constructor TestClass0 class constructor TestClass on class constructor TestClass1 class constructor TestClass1 class constructor TestClass class constructor TestClassO class constructor TestClass class constructor 注意:增加代码,或者修改代码的位置已经用符号
15、表示出来。请不要修改其他的程序代码。#includeiostreamhClass TestClass *1*public: TestClass()cout“TestClass class constructor“endl; 一 TestClass()cout”TestClass class constructor“endl;*2* char *departmert ; int level;public: TestClass0() cout“TestClass 0 Classconstructor“endl;) *3* cout“TestClass0 Classconstructor“endl;
16、*4* char*major; float salary;public: TestClass1() cout“TestClaSsl Class COnstructor“endl; TestClass1() cout“TestClass1 class constructor“endl;);void main() TestClaSs0 s1; TestClassl t1;(分数:2.00)_正确答案:(正确答案:(1)添加语句:char*name;int age; (2)添加语句:class TestClass0:public TestClass (3)添加语句:-TestClass0 () (4
17、)添加语句:class TestClassl:public TestClass)解析:解析:(1)题目 1要求“TestClass 中定义 name为字符串类型,age 为整型”。根据题目要求,在程序 TestClass类中定义变量 name和 age,即“char*name;int age;”。 (2)题目 2要求“设置类TestClass0的基类为 TestClass类的定义”。在 C+中,从已有的类产生一个新的子类,称为类的派生。声明派生类的一般形式为:class 派生类名:继承方式基类名。根据声明派生类的一般形式,这里补全“class TestClass0:publicTestClass”。 (3)题目 3要求“在类 TestClass的派生类 TestClass0的公有成员中定义析构函数 TestClass0”。析构函数也是一个特殊的成员函数,它的作用与构造函数相反,它的名字是类名的前面加一个“”符号。题目中要求的类名字为“TestClass0”即这里补全“TestClass0()”。 (4)题目 4要求“设置类 TestClass1的基类为 TestClass1类的定义”同(2)在第4个标识下补充“class TestClass1:public TestClass”。