使用VC6打开考生文件夹下的源程序文件modil.cpp,请修改程序中的错误,使程序能得出正确的结果: num:0 num:1 num:10 注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在

admin2015-05-30  27

问题 使用VC6打开考生文件夹下的源程序文件modil.cpp,请修改程序中的错误,使程序能得出正确的结果:
    num:0
    num:1  
    num:10
    注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//******error******的下面。
    1    #include
    2    int i=10 ;
    3    C1ass TestClass
    4    {
    5    public:
    6    TestClass(int i)
    7    {
    8    cout<<"num:  "<    9    //********error********
    10    i=i+1;
    11    }
    12    void Print()const
    13    {
    14    cout<<"num:"<    15    }
    16    private:
    17    int i;
    18    };
    19    void main()
    20    {
    21    //********error********
    22    TestClass print ;
    23    int i(0);
    24    print.Print();
    25    //********error********
    26    cout<<"num:"<    27    return;
    28    }

选项

答案(1)this->i=i+1 ;或TestClasS::i=i+1;或(*this).i=i+1; (2)TestClass print(0); (3)cout<<"num:"<<::i<
解析 程序要求输出number的值为0,1,10。从已定源程序的main主函数开始入手,可以看出程序首先通过类TestClass中的TestClass构造函数的调用实现第一次num值的输出;然后通过调用类TestClass中的成员函数Print实现第二次Rum值的输出;最后通过输出函数cout实现第三次num值的输出。  
    [解题思路]
    (1)打开modil.cpp,调试程序,显示错误提示为第二标识下“modil.cpp(221:error C2512:’TestClass’:no appropriatedefault constructor available”,主函数中首先调用的就是第2个标识下的TestClass print函数,构造函数的名字和类的名字是一样的,而程序中给出的“TestClass print;”没有给出参数,所以程序调试时无法确定调用的函数。根据TestClass构造函数“TestClass(int”的定义,应该存在int型参数,并且题目要求第一次输出的值为“0”,所以第2个标识正确的调用函数为“TestClass print(0);”。
    (2)运行,发现第一次的输出正确,但是第二次的输出值为“-858993460”,并不是题目中要求的“1”。在主函数中,可知第二次输出调用的是“print.Print();”,即类TestClass的成员函数“Print()”。成员函数Print的定义“voidPrint()const”中的输出语句为“cout<<"num:"<i=i+l;”或“TestClass::i=i+1;”或“(*this).i=i+l;”。
    (3)主函数中通过“cout<<”num:”<
转载请注明原文地址:https://jikaoti.com/ti/dBE0FFFM
0

最新回复(0)