1、国家二级 C+机试(操作题)模拟试卷 291及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modi1cpp,该程序运行时有错,请改正其中的错误,使程序正确运行,并且使程序输出的结果为: 30 130 注意:错误的语句在*error*的下面,修改该语句即可。#includeiostreamhint a=10;Class CObjpublic: CObj() a=b=0; Void display() *error* coutabendl; Void funC(int a) *error* a+=a; v
2、oid func2() *error* a+=a: Private: int a , b; ; Void main() CObj obj; objfunc(3); objdisplay(); objfunc2(); objdisplay();(分数:2.00)_二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。请完成函数 fun(char*s1,char*s2),此函数的功能是计算 s1中出现 s2的个数,当不出现时,则返回 0。如: s1 为“1112223333aaaaeeffd“ s2 为“11“则返回 1 s2为“aa“则返回
3、2 注意:请勿改动主函数 main与其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。#includeiostreamh注意只能使用 int类型,不能类型转换int fun(char*s1,char*s2)void main() char s11 0 2 4; char s22 5 6; cout“please input a string:“endl; cingetline(s1,1024); cout“please input otherstring:“endl; cingetline(s2,256); coutfun(s1,s2); coutendl; return;
4、(分数:2.00)_三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3epp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能: (1)定义纯虚类 TestClass0,包含纯虚函数 fun(),请在注释*1*后添加适当的语句。 (2)完成类 TestClass1,以公有继承 TestClass0,请在注释*2*后添加适当的语句。 (3)定义 TestClass0对象指针 P,请在注释*3*后添加适当的语句。 (4)把 TestClass1的对象 obj的指针赋给 TestClass0指针p,请在注释*4*后添加适当的
5、语句。 注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。#includeiostreamhClass TestClass0public: *1*;*2*class TestClass1public: Void fun() cout“fun“endl; ;int main() TestClass1 obj; *3* *4* P-fun(); return 0;(分数:2.00)_国家二级 C+机试(操作题)模拟试卷 291答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 mod
6、i1cpp,该程序运行时有错,请改正其中的错误,使程序正确运行,并且使程序输出的结果为: 30 130 注意:错误的语句在*error*的下面,修改该语句即可。#includeiostreamhint a=10;Class CObjpublic: CObj() a=b=0; Void display() *error* coutabendl; Void funC(int a) *error* a+=a; void func2() *error* a+=a: Private: int a , b; ; Void main() CObj obj; objfunc(3); objdisplay();
7、 objfunc2(); objdisplay();(分数:2.00)_正确答案:(正确答案:(1)coutaba+=a; (3)a+=:a;)解析:解析:(1)成员函数 display()打印变量 a和 b的值,即 cout输出 a和 b的值,cout 流中的数据是用流插入运算符“”顺序加入的,因此“”不正确,因此第 1个标识下应改成 coutaba+=a:”。(3)func2()函数虽然没有参数,但是成员变量 a和全局变量 a重名,第 3个标识下“a+:a”也会有歧义,分不清楚是全局变量加倍还是类成员变量加倍或者其他情况,调用 func2()函数后,输出“130”,说明a为 l 3,b 为
8、 0,因此是成员变量与全局变量 a的和赋给成员变量 a,正确的写法是“a+=:a:”,“:a”表示是全局变量 a。二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。请完成函数 fun(char*s1,char*s2),此函数的功能是计算 s1中出现 s2的个数,当不出现时,则返回 0。如: s1 为“1112223333aaaaeeffd“ s2 为“11“则返回 1 s2为“aa“则返回 2 注意:请勿改动主函数 main与其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。#includeiostreamh注意只能
9、使用 int类型,不能类型转换int fun(char*s1,char*s2)void main() char s11 0 2 4; char s22 5 6; cout“please input a string:“endl; cingetline(s1,1024); cout“please input otherstring:“endl; cingetline(s2,256); coutfun(s1,s2); coutendl; return;(分数:2.00)_正确答案:(正确答案:int size=0; 初始化字符串 统计变量个数 int s1len; int s2len; for(s
10、1len=0;S1s1lerl!=0;s1len +);第一个字符串循环 for(s2len=0;s2S2len!=0;S2len +);第二个字符串循环 for(int i=0;is1len;i+) int j=0; for(;js2len;j+) if(s1i+j!=s2j) 将第二个串中的字符与第一个串中的字符比较 break; if(j=s2len) +size; i+=j; -i; return size;)解析:解析:(1)size 变量用来存放 s1中出现 s2的个数,初始值赋为 0。 (2)然后利用 for循环对 s2中的每一个字符与 s1中的字符进行比较。 (3)如果循环中有
11、符合条件的字符串,就将变量 size个数加 1。三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3epp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能: (1)定义纯虚类 TestClass0,包含纯虚函数 fun(),请在注释*1*后添加适当的语句。 (2)完成类 TestClass1,以公有继承 TestClass0,请在注释*2*后添加适当的语句。 (3)定义 TestClass0对象指针 P,请在注释*3*后添加适当的语句。 (4)把 TestClass1的对象 obj的指针赋给 TestClass0指针p
12、,请在注释*4*后添加适当的语句。 注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。#includeiostreamhClass TestClass0public: *1*;*2*class TestClass1public: Void fun() cout“fun“endl; ;int main() TestClass1 obj; *3* *4* P-fun(); return 0;(分数:2.00)_正确答案:(正确答案:(1)添加语句:virtual void fun()=0; (2)将“class TestClass1”补充完整为:class TestC
13、lass1:public TestClass0 (3)添加语句:TestClass0*p; (4)添加语句:p=obj;)解析:解析:(1)题目 1要求“定义纯虚类 TestClass0”。在 C+中,虚函数在基类用 virtual声明类为虚类。纯虚类是在声明虚类时被“初始化”为 0的函数。所以第 1个标识下应添加“virtual void fun()=0;”。 (2)题目 2要求“完成类 TestClass1,以公有继承 TestClass0”。公有继承是在定义一个派生类时将基类的继承方式指定为 public的,称为公用继承。所以这里补全“class TestClass1:public TestClass0”。 (3)题目 3要求“定义 TestClass0对象指针 P”。定义类的对象指针变量,一般的格式为:类名指针变量,所以这里添加“TestClass0*p;”。 (4)题目 4要求“把 TestClass1的对象 obi的指针赋给 TestClass0指针 p”。将指针指向的对象赋值给另一个指针,其实是将其地址指向另一个指针的地址,所以使用取地址运算符“”,即在第四个符号下添加语句“p=obj;”。