1、二级 C+分类模拟 105 及答案解析(总分:100.00,做题时间:90 分钟)一、程序改错题(总题数:1,分数:30.00)1.使用 VC6 打开 下的源程序文件 modi.cpp,该程序运行时有错,请改正其中错误,使得程序正常运行,并使程序输出的结果为: c Tbst 注意:不要改动 main 函数,不能增行或删行,也不能更改程序的结构,错误的语句在/*error*的下面。 #includeiostream.h void main() /*error* char c =“c“; cout c endl; /*error* char b=1024; /*error* b += 1024;
2、if( b = 2048) cout “Test“ (分数:30.00)_二、程序填空题(总题数:1,分数:30.00)2.使用 VC6 打开 下的源程序文件 modi2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数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
3、 分别对应 s1 中的字符 C 和 A,函数调用 fun(s,s1,s2)将字符串 S 的内容变为”ZBXZBX”。 注意:不能修改程序的其他部分,只能修改 fun()函数。 #include iostream void fun(char*s,char*s1,char*s2) void main() char S=“ABCABC“; fun(s,“AC“,“ZX“); std:cout s (分数:30.00)_三、程序设计题(总题数:1,分数:40.00)3.使用 VC6 打开 下的源程序文件 modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (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 objects
5、 The point is(1,2,3) There are 3 point objects The point is(0,0,0) There are 3 point objects 注意:除在指定的位置添加语句之外,请不要改动程序的其他部分。 #includeiostream using namespace std; class TestClass public: /*1* X=a; Y=b; Z=c; /*4* void Display() cout “The point is (“ X “, “ Y “, “ Z “) “ endl; cout “There are “ count “
6、 point objects.“ (分数:40.00)_二级 C+分类模拟 105 答案解析(总分:100.00,做题时间:90 分钟)一、程序改错题(总题数:1,分数:30.00)1.使用 VC6 打开 下的源程序文件 modi.cpp,该程序运行时有错,请改正其中错误,使得程序正常运行,并使程序输出的结果为: c Tbst 注意:不要改动 main 函数,不能增行或删行,也不能更改程序的结构,错误的语句在/*error*的下面。 #includeiostream.h void main() /*error* char c =“c“; cout c endl; /*error* char b
7、=1024; /*error* b += 1024; if( b = 2048) cout “Test“ (分数:30.00)_正确答案:()解析:(1)char c=“c“; (2)int b=1024; (3)b+=1024; 答案考生文件夹 解析 本题的功能是输出字符 c 和字符串 Test。因为本题程序中不存在复杂的结构,解题思路,从已定源程序的 main 主函数依次处理错误提示下的语句即可。 (1)打开 modi1.cpp,调试程序,显示错误提示为第一标识下“odi1.cpp(5):error C2440:“initializing“:cannotconvert from “char
8、2“to“char“”。变量 c 的类型为字符型,字符型值应该是用单引号,双引号是字符串型。所以这里修改为“char c=“c“;”。 (2)根据第 3 个标识下的语句知道,b 的值加上 1024,然后判断 b 的值是否为 2048,所以这里 b 的类型应该是整型,而不是字符型,所以修改为“int b=1024;”。 (3)显示第 3 个标识下的语句“b+=1024;”的错误提示 modil.cpp(10):error C2018:unknown character“0xa3“,因为语句中的“;”为中文输入法下的输入,并不是英文下的“;”,所以修改为“b+=1024;”。二、程序填空题(总题数
9、:1,分数:30.00)2.使用 VC6 打开 下的源程序文件 modi2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数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 的内容变
10、为”ZBXZBX”。 注意:不能修改程序的其他部分,只能修改 fun()函数。 #include iostream void fun(char*s,char*s1,char*s2) void main() char S=“ABCABC“; fun(s,“AC“,“ZX“); std:cout s (分数:30.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;/那么
11、用 q 指向的 s2 中的字符替换 答案考生文件夹 解析 (1)该程序功能是将已知字符串 s 中所有在字符串 s1 中也存在的字符,都用字符串 s2 中的对应位置的字符代替。它的解题思路,首先是找到符合替换条件的字符,然后进行替换。 (2)从已给部分源程序的 main 主函数开始入手,核心函数 void tim(char*s,char *s1,chai *s2)中的s1,s2 参数为要替换的字符串,s 为要被替换的字符串。 (1)让指针 p,q 分别指向 s1 和 s2。 (2)然后利用 for 循环对 s 中的每一个当前字符与 p 指向的字符进行比较。 (3)如果(2)中的比较结果相等,那么
12、用 q 指向 s2 中对应的字符替换。三、程序设计题(总题数:1,分数:40.00)3.使用 VC6 打开 下的源程序文件 modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)完成默认构造函数 TestClass 的定义,使得 TestClass 对象的类型为 int,默认值为 a=0,b=0,c=0,请在注释/*1*后添加适当的语句。 (2)定义类的私有成员变量,X、Y、Z 类型为 int,请在注释/*2*后添加适当的语句。 (3)定义类 TestClass 的数据成员 count 声明为静态整数型数据成员,请在注释/*3*后添加适当的语句。 (4)在构
13、造函数中实现用 count 表示类 TestClass 被实现对象的次数。请在注释/*4*后添加适当的语句。 本程序的输出结果为: The point is(1,1,1) There are 3 point objects The point is(1,2,3) There are 3 point objects The point is(0,0,0) There are 3 point objects 注意:除在指定的位置添加语句之外,请不要改动程序的其他部分。 #includeiostream using namespace std; class TestClass public: /*1
14、* X=a; Y=b; Z=c; /*4* void Display() cout “The point is (“ X “, “ Y “, “ Z “) “ endl; cout “There are “ count “ point objects.“ (分数:40.00)_正确答案:()解析:(1)添加语句:TestClass(int a=0,int b=0,int c=0) (2)添加语句:int X,Y,Z; (3)添加语句:static int count; (4)添加语句:count +; 答案考生文件夹 解析 本题的功能是设置点,并将点的坐标值显示在屏幕上。在 VC 环境下打开程
15、序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。从已定源程序的 main 主函数开始入手,可以看出程序通过调用类 TestClass 和成员函数实现各种输出操作。 (1)题目 1 要求“完成默认构造函数 TestClass 的定义”。构造函数是一种特殊的成员函数,它的名字必须与类同名,所以这里的构造函数名字是 TestClass。根据题目中要求,实现构造函数参数的赋值,即这里添加”TestClass(int a=0,intb=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+;”。