1、国家二级 C+机试(操作题)-试卷 154及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modilcpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为: Number=7 Number=12 注意:错误的语句在*error*的下面,修改该语句即可。 #1nclude ClasS CMyClasS public: *error* CMyClass(int i):Number=i error return Number; void set(int i) Number=i; void disp
2、lay() coutset(12); P 一display(); return; (分数:2.00)_二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。完成函数 fun(char*S,int a),其功能是把S中出现的数字转换成数字存储在 a口中,然后返回转换的个数。 例如:s=”1234abcdef567”: 则:a中存储着 1234567 返回:7 注意:不能修改程序的其他部分,只能修改 fun()函数。 #lnclude int fun(char*s,int a) int main() int a1024; int len=fun
3、(“1234abcdef567” a); for(int i=0;iset(12); P 一display(); return; (分数:2.00)_正确答案:(正确答案:(1)CMyClass(int i):Number(i) (2)应删除:return Number; (3)CMyClass*P=new CMyClass(7),)解析:解析:(1)第 1个标识下是声明构造函数,并使用初始化列表完成成员变量的初始化,可知第 1标识下的初始化列表错误,正确的应该是“CMyClass(int i):Number(i)”。 (2)构造函数不能有返回值,不能用 return来返回值,故第 2个标识下
4、应将“return Number;”删除。 (3)类实例在不指定构造函数的情况下,调用的是默认无参数的构造函数,此时成员变量 Number是不确定的,在定义对象时应使用已定义的构造函数,根据输出结果可知 P指向的对象的 Number初始化值为 7,故第 3个标识下应改为“CMyClass*P=new CMyClass(7);”。二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。完成函数 fun(char*S,int a),其功能是把S中出现的数字转换成数字存储在 a口中,然后返回转换的个数。 例如:s=”1234abcdef567”:
5、则:a中存储着 1234567 返回:7 注意:不能修改程序的其他部分,只能修改 fun()函数。 #lnclude 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(int i=0 ; si!=0; i+) 字符串内循环 if(Si=0&si=9) 判断字符是否为 09 的字符 ( aj+=si一0; 如果为 09的字符,转换为整型 return j; 返回数字个数)解析:解析:(1)该程序功能是
6、把字符串中出现的数字转换成数字存储在数组中,然后返回转换的个数。其中,字符和整型的 ASCII差为 96,即为0的 ASCII码值。 (2)从已给部分源程序的 main主函数开始入手,核心函数 fun实现题目中要求的功能,其中 int fun(char*s,int a)中的 S为要转换的字符串,a为存放转换为数字的数组,返回值为转换的个数。 解题思路 (1)i 变量用来记录转换的个数,首先初始化为 0。 (2)然后利用 for循环对每一个当前字符进行判断是否为数字字符。 (3)如果为数字字符,就将其减去字符0,即实现字符和整型的转换。并且,将 i的变量值加 1。三、综合应用题(总题数:1,分数
7、:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)重载运算符 int,请在注释*1*后添加适当的语句。 (2)重载运算符“ using namespace std; C1ass TestClass public: *1* cout”int”(str_正确答案:(正确答案:(1)添加语句:operator int() (2)添加语句:operator解析:解析:本题的功能是通过重载运算符实现字符串输出。在 VC环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。从已定源
8、程序的 main主函数开始入手,可以看出程序通过调用类 TestClass的运算符重载函数实现各种输出操作。 解题思路 (1)题目 1要求“重载运算符 int”的定义。运算符重载的方法是定义一个重载运算符的函数,其一般格式为:函数类型operator运算符名称(形参列表)对运算符的重载处理。所以第 1个标识下,重载运算符 int的语句为“operatorint()”。 (2)题目 2要求“重载运算符”。同(1),第 2个标识下“”的重载函数定义为“operator”后,不仅能输出标准类型数据,而且可以输出用户自己定义的类对象。所以直接添加要输出的字符串即可,即“obj“Hello Test“;”。