1、国家二级 C+机试(操作题)模拟试卷 401及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modil cpp,该程序运行时有错误,请改正程序中的错误。 本题的功能是:从键盘输入字符串 s,然后输出字符串 s中的字符个数。 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在 *error*的下面。 #include int main() *error* cout int fun(char*data) void main() char str1024; cout class TestClass0 *1* ; *2* class TestC
2、lass1: public: void print() cout”TestClass1”end1; ; *3* class TestClass2: public: void print() cout“TestClass2“end1; ; *4* Class TestClass3: public: void print() cout”TestClass3”end1; ; void main() TestClass3 c3; TestClass2 c2; c3 print(); c2 print(); return; 国家二级 C+机试(操作题)模拟试卷 401答案与解析 一、基本操作题 1 【正
3、确答案】 (1)std: cout“please input a string: “std: end1; (2)using namespace std; 【试题解析】 (1)第 1个标识下实现在屏幕上输出 “please input a string: ”提示语句。在程序中用到 C+标准库时,要使用 std标准命名空间进行限定。 cout为标准库函数,所以要声明 tout是在命名空间 std中定义的流对象,即第 1个标识下的 “std: cout“please input a string: ”std: end1; ”。 (2)第 2个标识下的 “namespace std; ”语句是使用了标
4、准命名空间 std,正确语句应该是 “usingnamespace std; ”。 二、简单应用题 2 【正确答案】 int MinPos=0; 初始化最小值位置 if(data=NULL) 判断输入字符串是否为空 return-1; char MinData=data0;设置字符串第一个字符为最小值 if(MinData=0) 判断第一个字符是否存在 return-1; for(int i=i; datai! =0; i+) if(datai=MinData) MinData=datai; 逐个判断每个字母是否小于标记字符 MinPos=i; 最小值位置 return MinPos; 【试题
5、解析】 (1)MinPos变量首先指向字符串 data的第一个字符,同时将标志位MinPos初始值赋为 0。 (2)然后利用 for循环对每一个当前字符与 MinPos标记的字符进行比较。 (3)循环中将求得的最小数据 datai赋值给 MinData,并将该数据项数组标志位赋给标志位 MinPos。 三、综合应用题 3 【正确答案】 (1)添加语句: virtual void print()=0; (2)将 “class TestClass1: ”补充完整为: class TestClass1: virtual private TestClass0 (3)将 “class TestClass
6、2: ”补充完整为: class TestClass2: public TestClass0 (4)将 “class TestClass3: ”补充完整为: class TestClass3: public TestClass2, public TestClass1 【试题解析】 (1)题目 1要求 “请定义一个纯虚函数 print”。在 C+中,虚函数在基类中用 virtual声明成员函数为虚函数。纯虚函数是在声明虚函数时被 “初始化 ”为 0的函数,即 “virtual void print()=0; ”。 (2)题目 2要求 “类 TestClass1私有虚继承类 TestClass0”
7、。在 C+中声明一个派生类时将基类的继承方式指定为 private的,称为私有继承。同 (1),声明 TestClass1虚继承类 “: virtual TestClass0”,题目要求为私有,即 “class TestClass1: virtual privteTestClass0”。 (3)题目 3要求 “类 TestClass2公有继承类 TestClass0。 ”同 (2),公有继承是在定义一个派生类时将基类的继承方式指定为 public的,称为公用继承。所以这里补全“class TestClass2: public TestClass0”。 (4)题目 4要求 “类 TestClass3公有继 承类 TestClass2与 TestClass1。 ”同 (3),所以这里补全 “classTestClass3: public TestClass2, public TestClass1”。