1、国家二级 C+机试(操作题)-试卷 20 及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6 打开考生文件夹下的源程序文件 modicpp,该程序运行时有错,请改正其中错误,使得程序正常运行,并使程序输出的结果为:cTest 注意:不要改动 main 函数,不能增行或删行,也不能更改程序的结构,错误的语句在*error*的下面。#includeiostream.hvoid main()*error*char c=“c“;cout4c4endl;*error*char b=1024;*error*b+=1024:if(b=2048)co
2、ut“Test“4endl;return;(分数:2.00)_二、简单应用题(总题数:1,分数:2.00)2.使用 VC6 打开考生文件夹下的源程序文件 modi2cpp。阅读下列函数说明和代码,完成空出部分程序。函数 fun(char*s,char*s1,char*s2)中形参字符串 s1 和 s2 有相同的字符个数,且 s1 中各字符互不相同。该函数实现将己知字符串 s 中所有在字符串 s1 中也存在的字符,都用字符串 s2 中的对应位置的字符代替。例如:设字符串 s、s1 和 s2 分别为:s=“ABCABC“,s1=“AC“,s2=“ZX“则 s2 中的字符 Z 和 X分别对应 s1
3、中的字符 C 和 A,函数调用 fun(s,s1,s2)将字符串 s 的内容变为“ZBXZBX“。注意:不能修改程序的其他部分,只能修改 fun()函数。#includeiostreamvoid fun(char *s,char *s1,char*s2)void main()char s=“ABCABC“;fun(s,“AC“,“ZX“);std:coutsstd:endl;return;(分数:2.00)_三、综合应用题(总题数:1,分数:2.00)3.使用 VC6 打开考生文件夹下的源程序文件 modi3cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。(1)完成默认构
4、造函数 TestClass 的定义,使得 TestClass 对象的类型为 int,默认值为 a=0,b=0,c=0,请在注释*1*后添加适当的语句。(2)定义类的私有成员变量,X、Y、Z 类型为 int,请在注释*2*后添加适当的语句。(3)定义类 TestClass 的数据成员 count 声明为静态整数型数据成员,请在注释*3*后添加适当的语句。(4)在构造函数中实现用 count 表示类 TestClass 被实现对象的次数。请在注释*4*后添加适当的语句。本程序的输出结果为:The point is(1,1,1)There are 3 point objectsThe point i
5、s(1,2,3)There are 3 point objectsThe point is(0,0,0)There are 3 point objects 注意:除在指定的位置添加语句之外,请不要改动程序的其他部分。#includeiostreamusing namespace std;class TestClasspublic:*1*X=a;Y=b;Z=c;*4*void Display()cout“The point is(“X,Y,Z)endl;cout“There are“count“point objects“endl;private:*2*3*;int TestClass:coun
6、t=0;int main()TestClass p1(1,1,1),p2(1,2,3),p3(0,0,0);p1Display();p2Display();p3Display();return0;(分数:2.00)_国家二级 C+机试(操作题)-试卷 20 答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6 打开考生文件夹下的源程序文件 modicpp,该程序运行时有错,请改正其中错误,使得程序正常运行,并使程序输出的结果为:cTest 注意:不要改动 main 函数,不能增行或删行,也不能更改程序的结构,错误的语句在*error*的下
7、面。#includeiostream.hvoid main()*error*char c=“c“;cout4c4endl;*error*char b=1024;*error*b+=1024:if(b=2048)cout“Test“4endl;return;(分数:2.00)_正确答案:(正确答案:(1)char c=c; (2)int b=1024; (3)b+=1024;)解析:解析:(1)打开 modilcpp,调试程序,显示错误提示为第一标识下“odilcpp(5):error C2440:initializing:cannot convert fromchar2tocharY;。变量
8、C 的类型为字符型,字符型值应该是用单引号,双引号是字符串型。所以这里修改为“char c=c;”。 (2)根据第 3 个标识下的语句知道,b 的值加上 1024,然后判断 b 的值是否为 2048,所以这里 b 的类型应该是整型,而不是字符型,所以修改为“int b=1024;”。 (3)显示第 3 个标识下的语句“b+=1024;”的错误提示 modi1cpp(10):error C2018:unknown character0xa3,因为语句中的“;”为中文输入法下的输入,并不是英文下的“;”,所以修改为“b+=1024;”。二、简单应用题(总题数:1,分数:2.00)2.使用 VC6
9、打开考生文件夹下的源程序文件 modi2cpp。阅读下列函数说明和代码,完成空出部分程序。函数 fun(char*s,char*s1,char*s2)中形参字符串 s1 和 s2 有相同的字符个数,且 s1 中各字符互不相同。该函数实现将己知字符串 s 中所有在字符串 s1 中也存在的字符,都用字符串 s2 中的对应位置的字符代替。例如:设字符串 s、s1 和 s2 分别为:s=“ABCABC“,s1=“AC“,s2=“ZX“则 s2 中的字符 Z 和 X分别对应 s1 中的字符 C 和 A,函数调用 fun(s,s1,s2)将字符串 s 的内容变为“ZBXZBX“。注意:不能修改程序的其他部
10、分,只能修改 fun()函数。#includeiostreamvoid fun(char *s,char *s1,char*s2)void main()char s=“ABCABC“;fun(s,“AC“,“ZX“);std:coutsstd:endl;return;(分数:2.00)_正确答案:(正确答案:char *p,*q; for(;*s;s+)在串 s 中找符合条件的字符,然后替换 for(p=s1,q=s2;*p;p+,q+)让指针 p,q 分别指向 s1 和 s2 if(*p=*s)如果 S 中存在 s1中 p 指向的字符 *s=*q;那么用 q 指向的 s2 中的字符替换 )解
11、析:解析:(1)让指针 p,q 分别指向 s1 和 s2。 (2)然后利用 for 循环对 S 中的每一个当前字符与 P 指向的字符进行比较。 (3)如果(2)中的比较结果相等,那么用 q 指向 s2 中对应的字符替换。三、综合应用题(总题数:1,分数:2.00)3.使用 VC6 打开考生文件夹下的源程序文件 modi3cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。(1)完成默认构造函数 TestClass 的定义,使得 TestClass 对象的类型为 int,默认值为 a=0,b=0,c=0,请在注释*1*后添加适当的语句。(2)定义类的私有成员变量,X、Y、Z 类
12、型为 int,请在注释*2*后添加适当的语句。(3)定义类 TestClass 的数据成员 count 声明为静态整数型数据成员,请在注释*3*后添加适当的语句。(4)在构造函数中实现用 count 表示类 TestClass 被实现对象的次数。请在注释*4*后添加适当的语句。本程序的输出结果为:The point is(1,1,1)There are 3 point objectsThe point is(1,2,3)There are 3 point objectsThe point is(0,0,0)There are 3 point objects 注意:除在指定的位置添加语句之外,请
13、不要改动程序的其他部分。#includeiostreamusing namespace std;class TestClasspublic:*1*X=a;Y=b;Z=c;*4*void Display()cout“The point is(“X,Y,Z)endl;cout“There are“count“point objects“endl;private:*2*3*;int TestClass:count=0;int main()TestClass p1(1,1,1),p2(1,2,3),p3(0,0,0);p1Display();p2Display();p3Display();return
14、0;(分数:2.00)_正确答案:(正确答案:(1)添加语句:TestClasS(int a=0,int b=0,int c=0) (2)添加语句:int X,Y,Z; (3)添加语句:static int count; (4)添加语句:count+;)解析:解析:(1)题目 1 要求“完成默认构造函数 TestClass 的定义”。构造函数是一种特殊的成员函数,它的名字必须与类同名,所以这里的构造函数名字是 TestClass。根据题目中要求,实现构造函数参数的赋值,即这里添加“TestClass(int a=0,int b=0,int c=0)”。 (2)题目 2 要求“定义类的私有成员变量,X、Y、Z 类型为 int”。在类 TestClass 中的 private 区域,声明变量 X、Y、Z 为整型就可以了,即在第 2 个标识下添加“int X,Y,Z”。 (3)题目 3 要求“定义类 TestClass 的数据成员 count 声明为静态整数型数据成员”。同(2)在第 3 个标识下声明 count 为静态整型,即添加“static int count;”。 (4)题目 4 要求“在构造函数中实现用 count 表示类 TestClass 被实现对象的次数”。在构造函数TestClass 中添加 count 自加运算语句,即在第 4 个标识下添加“count+:”。