1、国家二级 C+机试(操作题)模拟试卷 326及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modi1 cpp,但该程序运行有问题,请改正 main函数中的错误,使程序的输出结果是: nember=1 nember=10 nember=100 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在 *error*的下面。 #include Class TestClass public: TestClass(int i) nember=i; void SetNember(int m) nember=m; int GetNember()cons
2、t return nember; void Print()conSt cout #include #define MAXLEN 1024 char*convert(char*des, char* str) void main() char destMAXLEN; char*str=“AbcDeFhJK“; cout Class TestClass *1* public: TestClass()cout“TestClass class constructor“endl; 一 TestClass()cout”TestClass class constructor“endl; ; *2* char
3、*departmert ; int level; public: TestClass0() cout“TestClass 0 Class constructor“endl; ) *3* cout“TestClass0 Class constructor“endl; ; *4* char*major; float salary; public: TestClass1() cout “TestClaSsl Class COnstructor“ endl; TestClass1() cout “TestClass1 class constructor“ endl; ) ; void main() T
4、estClaSs0 s1; TestClassl t1; 国家二级 C+机试(操作题)模拟试卷 326答案与解析 一、基本操作题 1 【正确答案】 (1)TestClass obj1(1); (2)obj1 SetNember(10); (3)obj2 SetNember(100); 【试题解析】 (1)第 1个标识下, “TestClass obj1; ”语句是声明 TestClass类的对象 obj1,根据 TestClass类构造函数的定义 TestClass(int i),存在整型参数,并且题目要求第一个输出结果为 1,所以补全参数 l,即第 1个标识下的 “TestClass obj
5、1(1); ”。 (2)第 2个标识下的 “obil nember=10: ”应该是调用成员函数 SetNember赋值。在 C+中成员函数的使用形式应该是:对象名成员函数,所以修改为“obj1 SetNember(10); ”。 (3)类是对象的抽象,而对象是类的具体实例。第 3个标识下“TestClass SetNember(100); ”语句中的 TestClass为类,并不是对象,这里应该是使用定义的对象,即 obj2,修改为 “obj2 SetNember(100); ”。 二、简单应用题 2 【正确答案】 int j=0; for(int i=0; stri !=NULL; i +
6、) i f(stri!= isprint (stri)判断是否是可打印的而且非空格字符 desj+=stri; 添加 desj=NULL;最后一个字符为空 return des; 【试题解析】 (1)由审题分析可知,可利用循环来逐个检索 str中的字符,循环变量 i从 0开始,直到 str数组的结束,即 stri=0为循环结束条件。 (2)在循环中用 if语句判断该字符是否是空格或者不可打印字符: if(stri!=isprint(stri),如果满足条件说明不是空格或者不是不可打印字符添加到 des中,不满足则无须添加到 des中。 三、综合应用题 3 【正确答案】 (1)添加语句: cha
7、r*name; int age; (2)添加语句: class TestClass0: public TestClass (3)添加语句: -TestClass0 () (4)添加语句: class TestClassl: public TestClass 【试题解析】 (1)题目 1要求 “TestClass中定义 name为字符串类型, age为整型 ”。根据题目要求,在程序 TestClass类中定义变量 name和 age,即“char*name; int age; ”。 (2)题目 2要求 “设置类 TestClass0的基类为 TestClass类的定义 ”。在 C+中,从已有的类
8、产生一个新的子类,称为类的派生。声明派生类的一般形式为: class派生类名: 继承方式 基类名。根据声明派生类的一般形式,这里补全 “class TestClass0: publicTestClass”。 (3)题目 3要求 “在类 TestClass的派生类 TestClass0的公有成员中定义析构函数TestClass0”。析构函数也是一个特殊的成员函数,它的作用与构造函数相反,它的名字是类名的前面加一个 “ ”符号。题目中要求的类名字为 “TestClass0”即这里补全 “ TestClass0()”。 (4)题目 4要求 “设置类 TestClass1的基类为 TestClass1类的定义 ”同 (2)在第 4个标识下补充 “class TestClass1: public TestClass”。