1、国家二级 C+机试(操作题)模拟试卷 96及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modil cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为: 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 display() coutdisplay(); P一 set(1
2、2); P一 display(); return; 二、简单应用题 2 使用 VC6打开考生文件夹下的源程序文件 modi2 cpp。完成函数 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(“1234abcdef567” a); for(int i=0;
3、 i using namespace std; C1ass TestClass public: *1* cout=0&si=9) 判断字符是否为 0 9的字符 ( aj+=si一 0; 如果为 0 9的字符,转换为整型 return j; 返回数字个数 【试题解析】 (1)该程序功能是把字符串中出 现的数字转换成数字存储在数组中,然后返回转换的个数。其中,字符和整型的 ASCII差为 96,即为 0的 ASCII码值。 (2)从已给部分源程序的 main主函数开始入手,核心函数 fun实现题目中要求的功能,其中 int fun(char*s,int a)中的 S为要转换的字符串, a为存放转换
4、为数字的数组,返回值为转换的个数。 解题思路 (1)i变量用来记录转换的个数,首先初始化为 0。 (2)然后利用 for循环对每一个当前字符进行判断是否为数字字符。 (3)如果为数字字符,就将其减去字符 0,即实现字符和整型 的转换。并且,将 i的变量值加 1。 三、综合应用题 3 【正确答案】 (1)添加语句: operator int() (2)添加语句: operator(char*str) (3)添加语句: int i=int(obj); (4)添加语句: obj“Hello Test”; 【试题解析】 本题的功能是通过重载运算符实现字符串输出。在 VC环境下打开程序,根据题干给出的几
5、条功能要求,对程序中给出注释下的内容逐个补全或修改。从已定源程序的 main主函数开始入手,可以看出程序通过调用类 TestClass的 运算符重载函数实现各种输出操作。 解题思路 (1)题目 1要求 “重载运算符 int”的定义。运算符重载的方法是定义一个重载运算符的函数,其一般格式为:函数类型 operator运算符名称 (形参列表 )对运算符的重载处理 。所以第 1个标识下,重载运算符 int的语句为 “operatorint()”。 (2)题目 2要求 “重载运算符 ”。同 (1),第 2个标识下 “”的重载函数定义为“operator(chaLr*str)”。 (3)题目 3要求 “在主函数 main()中定义变量 i,并调用对象 obj的 int运算符, 给变量赋初值为 10。 ”定义变量 i,即 int i。 “operator。 int()”中的返回值为 10,所以调用对象 obj的 int运算符,给变量赋初值为 10,就是 int(obj),即第三个标识下添加 “int i=int(obj); ”。 (4)题目 4要求 “调用 obj的 “ ”运算符输出 “HelloTest”。重载运算符 “”后,不仅能输出标准类型数据,而且可以输出用户自己定义的类对象。所以直接添加要输出的字符串即可,即 “obj“Hello Test“; ”。