问题 填空题

使用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;}

答案

参考答案:

解析:(1)错误:缺少缺省的构造函数 正确:innerclass(){cout<<"i"<<endl;} (2)错误:void write(){print("%d\n",x);} 正确:void write(){printf("%d\n",x);} (3)错误:缺少赋值语句 正确:y=a; (1)主要考查考生对于派生类调用基类构造函数的应用,此处必须定义缺省的构造函数(g调用); (2)主要考查考生对于格式化输出的掌握,应该使用函数printf,其中的%d表示是输出整型: (3)主要考查考生对于构造函数作用的掌握,只有在此处赋值才能将22显示出来,因为构造函数在声明对象的时候会被自动的调用。

选择题
单项选择题