应用题   请使用VC6或使用[答题]菜单打开考生文件夹proj3下的工程prog3,其中声明了ValArray类,该类在内部维护一个动态分配的整型数组v。ValArray类的成员函数equals用于判断两个对象是否相等。两个ValArray对象相等,当且仅当两者的元素个数size相等,并且整型数组v的对应元素分别相等。如果两个对象相等,则equals返回true,否则返回false。请编写成员函数equals。在main函数中给出了一组测试数据,此种情况下程序的输出结果应为:
    v1={1,2,3,4,5}
    v2={1,2,3,4}
    v3={1,2,3,4,6}
    v4={1,2,3,4,5}
    v1!=v2
    v1!=v3
    v1==v4
    要求:
    补充编制的内容写在“//********333********”与“//********666********”之间,不得修改程序的其他部分。
    注意:程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。
    //VatArray.h
    #include <iostream>
    using namespace std;
    class ValArray {
    int*  v;
    int size;
    public:
    ValArray  const int*  p,  int n): size(n)
    {
    v = new int[size];
    for (int i=0; i<size; i++)
    v[i]=p[i];
    }
    ~ValArray() { delete [] v; }
    bool equals(const ValArray& other);
    void print(ostream& out) const
    {
    out <<'{';
    for (int i=0; i<size-1; i++)
    out<<v[i]<<', ';
    out<<v[size-1]<<'}';
    }
    };
    void writeToFile(const char * );     //main.cpp
    #include 'ValArray.h'     bool ValArray::equals (const ValArray& other)
    {
    //******** 333********
    //******** 666********
    }     int main()
    {
    const int a[]={1, 2, 3, 4, 5};
    const int b[]={1, 2, 3, 4};
    const int c[]={1, 2, 3, 4, 6};
    const int d[]={1, 2, 3, 4, 5};     ValArray vl (a, 5);
    ValArray v2(b, 4);
    ValArray v3(c, 5);
    ValArray v4 (d, 5);
    cout<<'v1=';
    v1.print(cout);
    cout<<endl;     cout<<'v2 =';
    v2.print(cout);
    cout<<endl;     cout<<'v3=';
    v3.print(cout);
    cout<<endl;     cout<<'v4=';
    v4.print(cout);
    cout<<endl;     cout<<'v1'<<(v1.equals (v2)?'==': '!=') <<'v2' <<endl;
    cout<<'vl'<<(v1.equals (v3)?'==': '!=') <<'v3' <<endl;
    cout<<'v1'<<(v1.equals (v4)?'==':'!=')<<'v4'<<endl;
    writeToFile('');
    return 0;
    }
 
【正确答案】if(size!=other.size) //判断数组长度,如果other对象的长度和this对象的长度不相等 return false; //返回false for(int i=0; i<size; i++) //i从零到size-1遍历,判断对象数组元素是否相同 if(v[i]!=other.v[i]) //如果v[i]不等于other对象的v[i] return false; //返回false return true; //否则返回true
【答案解析】[考点] 本题考查ValArray类,其中涉及构造函数、动态数组、析构函数、const函数和bool函数。 主要考查考生对数组的掌握,函数bool ValArray::equals(const ValArray&other)要求判断两个数组是否相等,先判断数组长度,如果长度相同再根据数组元素依次判断。