荟萃馆

位置:首页 > 计算机 > 计算机二级

2016年12月计算机二级C++上机改错题训练

计算机二级对于很多考生来说还是比较有难度的,那么怎样顺利通过二级考试呢?这就需要大家平时多练习和找方法了。以下是本站小编整理的2016年12月计算机二级C++上机改错题训练,希望对大家有帮助!

2016年12月计算机二级C++上机改错题训练

  改错题一:

使用VC6打开考生文件夹下的工程kt8_1,此工程包含一个源程序文件kt8_,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:

f1functionofderive

f2functionofbase

f4functionofbase

源程序文件kt8_清单如下:

#include

classbase

{ public:

/**********found**********/

voidf1(){cout<<"f1functionofbase"<

virtualvoidf2(){cout<<"f2functionofbase"<

virtualvoidf3(){cout<<"f3functionofbase"<

voidf4(){cout<<"f4functionofbase"<<>

/**********found**********/

classderive::publicbase

{ voidf1(){cout<<"f1functionofderive"<

voidf2(intx){cout<<"f2functionofderive"<

voidf4(){cout<<"f4functionofderive"<<>

voidmain()

{ base*p;

deriveobj2;

/**********found**********/

p=obj2;

p->f1();

p->f2();

p->f4(); }

  【参考答案

(1)将void f1(){ cout<<"f1 function of base"<

改为:virtual void f1(){ cout<<"f1 function of base"<

(2)将class derive::public base

改为:class derive:public base

(3)将p=obj2;

改为:p=&obj2;

  【试题解析】

(1)主要考查对虚函数的深刻理解,虚函数是动态联编的基础,也是实现多态性的重要方法,它可以根据不同的情况动态的选择执行哪一个函数。在派生类中实现虚函数应该满足与基类的`同名函数完全相同,并且使用关键字virtual修饰,本题中由输出结果中的f1 function of derive可知,必须将基类base的成员函数f1()定义为虚函数;

(2)主要考查对派生类定义格式的掌握,应该使用“:”后面是继承列表,而“::”是作用域符;

(3)主要考查类对象的定义与使用,p是一个指针类型的变量,给它的赋值应该是一个地址,即使用取地址操作符&。

  改错题二:

使用VC6打开考生文件夹下的工程kt9_1,此工程包含一个源程序文件kt9_,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:

4,5

20

源程序文件清单如下:

#include

classA

{ protected:

intn,m;

public:

voidset(inta,intb){m=a;n=b;}

voidshow(){cout<

/**********found**********/ }

classB:publicA

{ ints;

public:

voidset(){s=m*n;}

voidshows(){cout<

voidmain()

{

Bb;

/**********found**********/

();

();

(); /**********found**********/

();

}

  【参考答案】

(1)在“}”后添加分号

(2)将();改为:b.A::set(4,5);

(3)将();改为:s();

  【试题解析】

(1)主要考查对类定义格式的掌握,类的结尾应该使用";";

(2)主要考查对基类与派生类函数调用关系的掌握,根据所要求的输出结果,应该调用的函数为类A的set,而不是类B自身的set函数,应该避免调用的二义性;

(3)主要考查对继承与派生的理解,由所要求输出结果可知正确:s()。