考试吧

计算机等级

考试吧>等级考试>计算机二级考试>C加加>模拟试题>正文
2018年3月计算机二级C++考试冲刺预测题及答案(1)
考试吧 2018-03-23 16:53:50 评论(0)条

  点击查看:2018年3月计算机二级C++考试冲刺预测题及答案汇总

  1[简答题]

  请使用VC6或使用【答题】菜单打开考生文件夹proj1下的工程proj1,此工程中含有一个源程序文件proj1.cpp。其中位于每个注释“//ERROR****found****”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:

  Constructor called.

  The value is 10

  Max number is 20

  Destructor called.

  注意:只能修改注释“//ERROR****found****”的下一行语句,不要改动程序中的其他内容。

2018年3月计算机二级C++考试冲刺预测题及答案(1)

2018年3月计算机二级C++考试冲刺预测题及答案(1)

  参考解析:【参考答案】 (1)MyClass(int i)

  (2)int Max(int x,int y,int z)

  (3)cout<<"The value is"<

  【考点分析】

  本题考查MyClass类、构造函数、析构函数、成员函数和函数重载。函数重载必须要求形参类型不同,或者形参个数不同。

  【解题思路】

  (1)考查构造函数,构造函数前不加void或其他任何类型名,直接使用MyClass(int i)即可。

  (2)主要考查函数重载,在int Max(int x,int y){return x>y?x:y;}中两个形参变量都是int型,而语句int Max(int x,int y,int z=0)的前两个形参也都是int型,第三个形参定义默认值,那么这两个Max函数在调用时它们的参数个数和参数类型都一样,因为函数重载要求形参类型或形参个数不同,所以要把int z=0改为int z,才能构成函数重载。

  (3)主要考查成员函数的调用,因为value是私有成员,所以不能被类外函数直接调用,而且value()的用法也是错误的,可以使用成员函数obj.GetValue()得到value的值。

扫描/长按二维码帮助考试通关
2018年等考报考资讯
2018等考各科通关技巧
2018各科最新预测试卷
2018等考各科备考资料

微信搜索"考试吧"了解更多考试资讯、下载备考资料

  2[简答题]

  请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,此工程中声明的Array是一个表示数组的类。一个Array对象可以包含多个整型元素。Array的成员说明如下:成员函数add用于向数组的末尾添加一个元素;

  成员函数get用于获取数组中指定位置的元素;

  数据成员a表示实际用于存储数据的整型数组;

  数据成员size表示数组的容量,数组中的元素个数最多不能超过size;

  数据成员num表示当前数组中的元素个数。

  SortedArray是Array的派生类,表示有序数组。

  SortedArray重新定义了Array中的add函数,以确保有序数组中的元素始终按照升序排列。请在程序中的横线处填写适当的代码,然后删除横线,以实现上述类定义。此程序的正确输出结果应为:

  10,9,8,7,6,5,4,3,2,1,

  1,2,3,4,5,6,7,8,9,10,

  注意:只在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。

2018年3月计算机二级C++考试冲刺预测题及答案(1)

2018年3月计算机二级C++考试冲刺预测题及答案(1)

  参考解析:【参考答案】 (1)a[num]=e;

  (2)Array(s)

  (3)a[j]=a[j-1]

  (4)a[i] =e

  【考点分析】

  本题考查数组类Array及Array的派生类SortedArray,其知识点涉及构造函数、析构函数、虚函数和动态数组。一般考到函数时,首先要看函数名,通过函数名称能大概知道该函数的功能,比如Array类中的virtual void add(int e)函数,看到这个函数我们能得到如下信息。

  (1)有关键字virtual,说明该函数是虚函数,在 Array类的派生类里肯定会有对add函数的定义。

  (2)有关键字void,说明此函数没有返回值。

  (3)add的意思是添加,它的形参是int e,那么我们大概可以猜到该函数的功能是把整型数值e添加到数组a中。

  【解题思路】

  (1)考查的是虚函数virtual void add(int e)的定义,即添an-个整型数e到a[num]中。

  (2)主要考查的是Array类的派生类SortedArray类的构造函数的定义,定义之前要对基础类初始化。

  (3)因为SortedArray类是排序类,所以数组a中的元素要从小到大排序。在if(e

  (4)主要考查虚函数virtual void add(int e)在派生类SortedArray类中的定义,把插入的数据放在数组a的第i+1个位置,即a[i]=e;。

扫描/长按二维码帮助考试通关
2018年等考报考资讯
2018等考各科通关技巧
2018各科最新预测试卷
2018等考各科备考资料

微信搜索"考试吧"了解更多考试资讯、下载备考资料

  综合应用题

  3[简答题]

  使用VC6打开考生文件夹proj3下的工程proj3,其中定义了一个字符串变量类StringVar。类成员的说明在程序注释中。请在// ******** 333 ******** 和// ******** 666 ******** 之间填写StringVar成员函数和友元函数的实现代码。在main函数中给出了一组测试数据,运行时输入:

  Hello Kitty

  此情况下程序的输出应该是:

  Hello Kitty

  Borg

  Borg

  注意:只需在// ******** 333 ******** 和// ******** 666 ******** 之间填入所编写的若干语句,不要改动程序中的其他内容。

2018年3月计算机二级C++考试冲刺预测题及答案(1)

2018年3月计算机二级C++考试冲刺预测题及答案(1)

  参考解析:【参考答案】

2018年3月计算机二级C++考试冲刺预测题及答案(1)

2018年3月计算机二级C++考试冲刺预测题及答案(1)

  【考点分析】

  本题考查构造函数和析构函数的定义、类的成员函数、重载流运算符>>和插入运算符<<和预定义流对象。

  【解题思路】

  由StringVar.h这个头文件可知:头文件中定义了StringVar类,它包含的成员信息如下:

  两个数据成员:char * 类型的value,指向字符串的首地址;int类型的max_length,表示字符串的最大长度。两个构造函数:接收int类型的构造函数和接收const char a[]的构造函数。一个复制构造函数:用参数strobj对象的成员值给当前对象的成员赋值;

  析构函数:使用delete[]释放value指向的地址空间;length()成员函数:返回成员value指向的字符串长度;input_line()成员函数:使用输入流参数输入一个字符串,保存到value指向的内存空间;getValue()成员函数:常成员函数,返回value的值。

  另外类定义体外部还声明一个重载“<<”运算符函数,将StringVar对象中value指向的字符串输出,并返回输出流outs的引用

  StringVar.h中,已经给出的定义有:析构函数、length()函数和getValue()函数,所以需要我们完成的函数定义有:构造函数、复制构造函数、input_line()函数和重载的“<<”运算符函数

  ①StringVar(int size);

  题意指出,size为字符串长度(字符个数)初始值,字符串内容初始化为空串,所以需要使用size设置成员max_length,为value申请size个字符的存储空间,并把value的第一个字符设置为'\0'表示空串,这样保证析构函数的delete[]也是正确的。

  ②StringVar(const char a[]);

  题意指出,使用参数数组a的内容初始化对象的成员,即将数组a中的内容,存放到value指向的内存空间,由于value是使用new分配的(保证析构函数的delete[]是正确的),所以不能简单的把数组a的首地址赋给value,需要将数组a的内容复制到value指向的内存空间中,另外成员max_length,初值最小必须是value指向的内存空间长度,即value指向的字符串长度+1(题意中max_length表示字符个数的最大值,所以需要包含字符串结束符'\0')(此构造函数的形参必须传入的是字符串,如果是字符数组,必须传入数组的长度,以防数组a的最后一个字符不是结束符'\0',此时strlen()函数获取的长度,就不是字符数组a的字符个数)

  ③StringVar(coast StringVar& strobj);

  复制构造函数需要将形参strobj的成员赋给当前调用该复制构造函数的对象成员,在赋值value时,同样需要为value分配足够的内存空间。

  ④input_line(istream& ins);

  input_line()函数需要使用形参ins输入流,输入一个字符串存放到value中,题意要求可以输入空格,所以我们不能直接用输入流ins和输入运算符,因为输入运算符会丢弃空白符、空格符和制表符,可以使用输入流ins的成员函数:get()和while循环,逐个输入字符存放到value下标i的字符中,直到输入的字符为换行符或value存满(i=max_length)为止,当这两个条件满足其一,那么就应该停止输入,另外需要注意:value指向的字符串结尾,必须包含空字符'\0',所以下标max_length-1必须是空字符,循环输入时,i取值最大为max_length-2。

  ⑤ostream& operator << (ostream&outs,coast StringVar the_string);

  输出运算符重载函数,题意要求将the—strin9通过输出流outs输出,由于the_string是StringVar对象,所以输出的应该是对象的成员value指向的字符串,根据返回值可知,函数必须返回输入流ostream的引用;另外由于第一形参是输入流outs,所以无法通过StringVar对象来调用,该函数不是类的成员函数,函数定义时,不能限定StringVar作用域,由于该函数不是类的成员函数,所以使用输出流outs输出value指向的字符串时,不能直接使用私有成员value,而是应该使用getValue()公有成员函数,返回value的值,再输出。

扫描/长按二维码帮助考试通关
2018年等考报考资讯
2018等考各科通关技巧
2018各科最新预测试卷
2018等考各科备考资料

微信搜索"考试吧"了解更多考试资讯、下载备考资料

展开全文
评论(0条) 发表
Copyright © 2004-
考试吧(m.566.com)北京美满明天科技有限公司
社会统一信用代码:91110108MA01WU311X
帮助中心