应用题  
    使用VC++2010打开考生文件夹下“proj2”文件夹中的工程proj2.sln。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。
    (1)对文件以追加的方式打开文件。请在注释//********1********后添加适当的语句。
    (2)定义m、n为类TestClass的公有int型数据成员,请在注释//********2********后添加适当的语句。
    (3)定义p为类TestClass的数据成员指针,并指向类TestClass数据成员m,请在注释//********3********后添加适当的语句。
    (4)定义p指向类TestClass数据成员n,请在注释//********4********后添加适当的语句。
    注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。
    #include<iostream.h>
    #include<fstream>
    #include<iomanip>
    #include<cmath>
    using namespace std;
    void WriteFile(int x)
    {
    ofstream out1;
    //********1********
    out1.open('modi3.txt',);
    out1<<x<<'  ';
    out1.close();
    }
    void ClearFiie()
    {
    ofstream out1;
    out1.open('modi3.txt');
    out1.close();
    }
    class TestClass
    {
    public:
    void disp()
    {
    cout<<'m='<<m<<endl;
    WriteFile(m);
    cout<<'n='<<n<<endl:
    WriteFile(n);
    }
    //********2********     };
    void main()
    {
    //********3********     ClearFile();
    TestClass a;
    a.*p=30;
    //********4********
    a.*p=45;
    a.disp();
    }
 
【正确答案】(1)将“out1.open('modi3.txt',);”补充完整为:out1.open('modi3.txt',ios_base::app); (2)添加语句:int m,n; (3)添加语句:int TestClass::*p=&(TestClass::m); (4)添加语句:p=&(TestClass::n);
【答案解析】在VC环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。从已定源程序的main主函数开始入手,可以看出程序通过调用类TestClass和函数ClearFile()实现各种输出操作。 (1)题目1要求“对文件以追加的方式打开文件”。文件输出输入方式的设置值,以ios::app方式是以输出方式打开文件,写入的数据添加在文件末尾,即第1个标识下语句补全为“out1.open('modi3.txt'.ios_base::app);”。 (2)题目2要求“定义m、n为类TestClass的公有int型数据成员”。只需在程序中的TestClass类中的public区域添加m、n的定义即可。即在第2个标识下添加“int m、n;”。 (3)题目3要求“定义p为类TestClass的数据成员指针,并指向类TestClass数据成员m”。程序中类TestClass数据成员m为:TestClass::m,定义p为类TestClass的数据成员指针语句为:TestClass::*p,将其指向前面的数据成员m,即为“int TestClass::*p=&(TestClass::m);”。 (4)题目4要求“定义p指向类TestClass数据成员n”。类TestClass数据成员n语句为TestClass::n,用p指向类TestClass数据成员n,添加的语句即“p=&(TestClass::n);”。