1、国家二级 C+机试(操作题)模拟试卷 305及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modi1cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为: m=-10 n=-10 p=0 q=-10 z=A 注意:错误的语句在“error“的下面,修改该语句即可。#includeiostreamhVoid main() double m=10 ; float n=10; bool p=1; int q=10 ; char z=a; m=一 m; *error* n=n; *error*
2、p=-p; *error* q=q; z=z 一 32; cout“m=“mendl; cout“n=“nendl; cout“p=“pendl; cout“q=“qendl; cout“z=“zendl: return;(分数:2.00)_二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。完成函数 fun(char*s,int a),其功能是把s中出现的数字转换成数字存储在 a中,然后返回转换的个数。 例如:s=“1234abcdef567“: 则:a中存储着 1234567 返回:7 注意:不能修改程序的其他部分,只能修改 fun(
3、)函数。 #include int fun(char*s,int a) int main() int a1024; int len=fun(“1234abcdef567“, a); for(int i=0;iai ; couti_三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3cpp。请完成以下部分,实现在屏幕上输出为: TestClass3 TestClass2 这个程序需要修改的部分,请按照以下部分实现。 (1)类 TestClass0不能被实例化,请定义一个纯虚函数 print,在注释*1*水后添加适当的语句。 (2)类TestClas
4、s1私有虚继承类 TestClass0,请在注释*2*后添加适当的语句。 (3)类TestClass2公有继承类 TestClass0,请在注释*3*后添加适当的语句。 (4)类TestClass3公有继承类 TestClass2与 TestClass1,请在注释*4*后添加适当的语句。注意:仅在函数指定位置添加语句,请勿改动主函数 main与其他函数中的任何内容。#includeiostreamhClass TestClass0 *1*;*2*Class Testelass1:public: void print() cout“TestClass1“endl; ;*3*Class TestC
5、lass2:public: void print() cout“TestClass2“endl; ;*4*Class TestClass3:public: void print() cout“TestClass3“endl; ; void main() TestClass3 c3; TestClass2 c2; c3print(); c2print(); return;(分数:2.00)_国家二级 C+机试(操作题)模拟试卷 305答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modi1cpp,但该程序
6、运行时有错,请改正程序中的错误,使程序输出的结果为: m=-10 n=-10 p=0 q=-10 z=A 注意:错误的语句在“error“的下面,修改该语句即可。#includeiostreamhVoid main() double m=10 ; float n=10; bool p=1; int q=10 ; char z=a; m=一 m; *error* n=n; *error* p=-p; *error* q=q; z=z 一 32; cout“m=“mendl; cout“n=“nendl; cout“p=“pendl; cout“q=“qendl; cout“z=“zendl: r
7、eturn;(分数:2.00)_正确答案:(正确答案:(1)n=-n; (2)p=!p; (3)q=-q;)解析:解析:(1)程序中定义了多个变量,并做了一些基本的运算处理。 (2)由题目要求的运行结果可知,第 1个标识下和第 3个标识下是对变量 n和 q取反,求一个正数的相反数可以通过算数运算符“-”得到,第 1个标识下和第 3个标识下应分别改为“n=-n;”和“q=-q;”,即只需要通过负号运算就可以实现。 (3)从题目要求输出的结果来分析,第 2标识下是对逻辑变量 P取反,对一个逻辑变量求反应该用取反运算符“!”,第 2个标识下应改为“p=!p;”。二、简单应用题(总题数:1,分数:2.
8、00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。完成函数 fun(char*s,int a),其功能是把s中出现的数字转换成数字存储在 a中,然后返回转换的个数。 例如:s=“1234abcdef567“: 则:a中存储着 1234567 返回:7 注意:不能修改程序的其他部分,只能修改 fun()函数。 #include int fun(char*s,int a) int main() int a1024; int len=fun(“1234abcdef567“, a); for(int i=0;iai ; couti_正确答案:(正确答案:int j=0; for(i
9、nt i=0;si!=0; i+) 字符串内循环 if(Si=0si=9) 判断字符是否为 09 的字符 aj+=si一0; 如果为 09 的字符,转换为整型 return j; 返回数字个数)解析:解析:(1)i 变量用来记录转换的个数,首先初始化为 0。 (2)然后利用 for循环对每一个当前字符进行判断是否为数字字符。 (3)如果为数字字符,就将其减去字符0,即实现字符和整型的转换。并且,将 j的变量值加 1。三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3cpp。请完成以下部分,实现在屏幕上输出为: TestClass3 TestCl
10、ass2 这个程序需要修改的部分,请按照以下部分实现。 (1)类 TestClass0不能被实例化,请定义一个纯虚函数 print,在注释*1*水后添加适当的语句。 (2)类TestClass1私有虚继承类 TestClass0,请在注释*2*后添加适当的语句。 (3)类TestClass2公有继承类 TestClass0,请在注释*3*后添加适当的语句。 (4)类TestClass3公有继承类 TestClass2与 TestClass1,请在注释*4*后添加适当的语句。注意:仅在函数指定位置添加语句,请勿改动主函数 main与其他函数中的任何内容。#includeiostreamhClas
11、s TestClass0 *1*;*2*Class Testelass1:public: void print() cout“TestClass1“endl; ;*3*Class TestClass2:public: void print() cout“TestClass2“endl; ;*4*Class TestClass3:public: void print() cout“TestClass3“endl; ; void main() TestClass3 c3; TestClass2 c2; c3print(); c2print(); return;(分数:2.00)_正确答案:(正确答
12、案:(1)添加语句:virtual void print()=0; (2)将“class TestClass1:”补充完整为: Class TestClass1:virtual private TestClass0 (3)将“class TestClass2:”补充完整为: Class TestClass2:public TestClass0 (4)将“class TestClass3:”补充完整为: Class TestClass3:public TestClass2,public TestClass1)解析:解析:(1)题目 l要求“请定义一个纯虚函数 print”。在 C+中,虚函数在基
13、类中用 virtual声明成员函数为虚函数。纯虚函数是在声明虚函数时被“初始化”为 0的函数,即“virtual void print0=0;”。 (2)题目 2要求“类 TestClass1私有虚继承类 TestClass0”。在 C+中声明一个派生类时将基类的继承方式指定为 private的,称为私有继承。同(1),声明 TestClass1虚继承类“:virtual TestClass0”,题目要求为私有,即“class TestClass1:virtual private TestClass0”。 (3)题目 3要求“类 TestClass2公有继承类 TestClass0。”同(2),公有继承是在定义一个派生类时将基类的继承方式指定为 public的,称为公用继承。所以这里补全“class TestClass2:public TestClass0”。 (4)题目 4要求“类 TestClass3公有继承类 TestClass2与 TestClass1。”同(3),所以这里补全“class TestClass3“public TestClass2,public TestClass1”。