使用VC6打开考生文件夹下的工程test23_1,此工程包含一个源程序文件test23_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下: i iz O 12 22 源程序文件test23_1.c

admin2010-02-08  29

问题 使用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显示出来,因为构造函数在声明对象的时候会被自动的调用。
转载请注明原文地址:https://kaotiyun.com/show/dKID777K
0

最新回复(0)