使用VC6打开考生文件夹下的工程test23_1,此工程包含一个源程序文件test23_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:
i
iz
O
12
22
源程序文件test23_1.cpp清单如下:
#include<iostream.h>
#include<stdio.h>
class innerclass
int x;
public:
/****************found*******************/
innerclass(int z) x=z; cout<<"iz"<<endl;;
/****************found*******************/
void write( ) print("%d\n",x);
class outerclass
int y;
innerclass g;
innerclass *h;
public:
outerclass(int a);
void write( ) printf("%d\n",y);
void write_inner_g() g.write();
void write_inner_h() h->write();
;
outerclass::outerclass(int a)
/****************found*******************/
h=new innerclass(12);
cout<<"o"<<endl;
int main ( )
outerclass ob(22);
ob.write_inner_h();
ob.write();
return 1;
参考答案:
(A)错误:缺少缺省的构造函数
正确:innerclass(){cout<<"i"<<endl;}
(B)错误:void write(){print("%d\n",x);}
正确:void write(){printf("%d\n",x);}
(C)错误:缺少赋值语句
正确:y=a;
解析:
(1)主要考查考生对于派生类调用基类构造函数的应用,此处必须定义缺省的构造函数(g调用);
(2)主要考查考生对于格式化输出的掌握,应该使用函数printf,其中的%d表示是输出整型:
(3)主要考查考生对于构造函数作用的掌握,只有在此处赋值才能将22显示出来,因为构造函数在声明对象的时候会被自动的调用。