1、计算机二级(C+)上机考试 6 及答案解析(总分:-3.00,做题时间:90 分钟)1.改错题 使用 VC6 打开考生文件夹下的工程 test15_1,此工程包含一个源程序文件 test15_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果如下: My object has member 7 源程序文件 test15_1.cpp 清单如下: #include class MyClass public: MyClass(int mem)member=mem; MyClass() int GetAge() const return member; private: int m
2、ember; ; /* found */ void main() int mem=7; /* found */ MyClass myObj=MakeObject(mem); cout“My object has member “GetAge()_2.简单应用题 编写一个函数 int charnum(char fn10),该函数以只读方式打开文件 fn,,通过统计,返回文件中字符的个数,请使用 while 循环实现计数功能。 注意:部分源程序已存在文件 test7_2.cpp中。 请勿修改主函数 main 和其他函数中的任何内容,仅在函数 charnum 的花括号中填写若干语句。 文件 test
3、7_2.cpp 的内容如下: #include #include #include int charnum(char fn10); void main() int num; num=charnum(“abc.txt“); cout“num=“num_3.综合应用题 使用 VC6 打开考生文件夹下的工程 test13_3。此工程包含一个 test13_3.cpp,其中定义了类 Vector,但类的定义并不完整。请按要求完成下列操作,将程序补充完整。 (1)完成构造函数的定义,把数据成员 size 初始化为参数 s 的值,数据成员 buffer 指向动态申请的 int 型 size 大小的空间。请
4、在注释“/ * 1 * “之后添加适当的语句。 (2)完成拷贝构造函数的定义,注意解决多次删除的问题。请在注释“/ * 2 * “之后添加适当的语句。 (3)完成成员函数 elem 的定义,该函数返回buffer 的第 ndx 个元素的值,注意如果 ndx 超界,请输出“error in index“。请在注释“/ * 3 * “之后添加适当的语句。 (4)完成析构函数的定义,要求先将字符 d 打印在屏幕上,再释放 buffer 指向的空间。请在注释“/ * 4 * “之后添加适当的语句。 输出结果如下: 1234567891012345678910dd 注意:除在指定的位置添加语句外,请不要
5、改动程序中的其他语句。 源程序文件 test13_3 清单如下: #include #include class Vector public: Vector(int s=100); Vector(Vector int void display(); void set(); Vector(); protected: int size; int *buffer; ; Vector:Vector(int s) / * 1 * Vector:Vector(Vector i“error in index“elem(j)_计算机二级(C+)上机考试 6 答案解析(总分:-3.00,做题时间:90 分钟)1
6、.改错题 使用 VC6 打开考生文件夹下的工程 test15_1,此工程包含一个源程序文件 test15_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果如下: My object has member 7 源程序文件 test15_1.cpp 清单如下: #include class MyClass public: MyClass(int mem)member=mem; MyClass() int GetAge() const return member; private: int member; ; /* found */ void main() int mem=7;
7、 /* found */ MyClass myObj=MakeObject(mem); cout“My object has member “GetAge()_正确答案:((1)添加函数定义 MyClass *MakeObject(int mem); (2)错误:MyClass myObj=MakeObject(mem); 正确:MyClass *myObj=MakeObject(mem); (3)错误:delete; 正确:delete myObj; )解析:(1)主要考查考生对于函数定义规则的理解,在使用前先定义,这是规定; (2)主要考查考生对于指针的掌握,因为函数返回值为指针,所以返回
8、值必须赋值给一个指针类型的变量; (3)主要考查考生是否会使用 delete 释放空间,使用 delete 删除一个指针时,只需要直接把指针变量的名称写在后面。2.简单应用题 编写一个函数 int charnum(char fn10),该函数以只读方式打开文件 fn,,通过统计,返回文件中字符的个数,请使用 while 循环实现计数功能。 注意:部分源程序已存在文件 test7_2.cpp中。 请勿修改主函数 main 和其他函数中的任何内容,仅在函数 charnum 的花括号中填写若干语句。 文件 test7_2.cpp 的内容如下: #include #include #include i
9、nt charnum(char fn10); void main() int num; num=charnum(“abc.txt“); cout“num=“num_正确答案:(int charnum(char fn10) fstream file; file.open(fn,ios:in); if(!file) cout“abc.txt cant open“解析:本题主要考查考生对文件相关操作的熟练程度。首先先定义文件流类的变量,然后使用该对象的open 方法打开一个文件,接着使用 while 循环和 getch 方法每次读入一个字符并统计字符个数,最后使用 close 方法关闭文件,返回 i
10、 值。 3.综合应用题 使用 VC6 打开考生文件夹下的工程 test13_3。此工程包含一个 test13_3.cpp,其中定义了类 Vector,但类的定义并不完整。请按要求完成下列操作,将程序补充完整。 (1)完成构造函数的定义,把数据成员 size 初始化为参数 s 的值,数据成员 buffer 指向动态申请的 int 型 size 大小的空间。请在注释“/ * 1 * “之后添加适当的语句。 (2)完成拷贝构造函数的定义,注意解决多次删除的问题。请在注释“/ * 2 * “之后添加适当的语句。 (3)完成成员函数 elem 的定义,该函数返回buffer 的第 ndx 个元素的值,注
11、意如果 ndx 超界,请输出“error in index“。请在注释“/ * 3 * “之后添加适当的语句。 (4)完成析构函数的定义,要求先将字符 d 打印在屏幕上,再释放 buffer 指向的空间。请在注释“/ * 4 * “之后添加适当的语句。 输出结果如下: 1234567891012345678910dd 注意:除在指定的位置添加语句外,请不要改动程序中的其他语句。 源程序文件 test13_3 清单如下: #include #include class Vector public: Vector(int s=100); Vector(Vector int void display
12、(); void set(); Vector(); protected: int size; int *buffer; ; Vector:Vector(int s) / * 1 * Vector:Vector(Vector i“error in index“elem(j)_正确答案:((1) size=s; buffer=new intsize; (2) size=v.size; buffer=new intsize; (3) if (ndx=size) (4) cout“d“解析:本题主要考查考生对于类的构造函数与成员函数定义的掌握,注意(2)中赋值的应用,为了防止重复删除,不能直接将指针赋值,必须使用动态申请 new 建立一块新的空间,并且将原来对象的成员全部复制到新的空间中;(4)中对动态一维数组空间删除的时候,应该使用 delete 关键字,并且不管原数组大小是多少,一律只写一对中括号“加上变量名。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1