上机部分 一、改错题 使用VC6打开考生文件夹下的工程kt5_1,此工程包含一个源程序文件kt5_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下: (1,2) 5,6 (6,9) 源程序文件kt5_1.cpp清单如下: #include classA{ public: A(inti,intj){a=i;b=j;} /****************found*******************/ voidMove(intx,inty){a+=x;b+=y} voidShow(){cout<<"("< private: inta,b; }; classB:privateA { public: /****************found*******************/ B(inti,intj,intk,intl):(i,j){x=k;y=l;} voidShow(){cout< voidfun(){Move(3,5);} /****************found*******************/ voidf1(){Show();} private: intx,y; }; voidmain() { Ae(1,2); e.Show(); Bd(3,4,5,6); d.fun(); d.Show(); d.f1(); } 【参考答案】 (1)将void Move( int x, int y) {a+=x;b+=y} 改为:void Move( int x, int y) {a+=x;b+=y;} (2)将B(int i,int j,int k,int l):(i,j) {x=k;y=l;} 改为:B(int i,int j,int k,int l):A(i,j) {x=k;y=l;} (3)将void f1(){Show();} 改为:void f1(){A::Show();} 【试题解析】 (1)主要考查对表达式定义规则的掌握,此处缺少一个“;”,任何一个表达式都应该以分号作为结束标志; (2)主要考查对派生类构造函数定义的掌握,参数列表中基类的成员应使用基类构造函数初始化,因此必须向基类传递参数,传递时直接使用基类名; (3)主要考查对基类函数调用方法的掌握,为了调用基类的函数应该使用作用域符“::”以限定访问的位置。
|