问答题 请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程pros3,其中声明了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!=v2v1!=v3v1=v4要求:补充编制的内容写在“//**********333**********”与“//**********666**********”之间,不得修改程序的其他部分。注意:程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。//VatArray.h#include<iostream>usingnamespacestd;classValArray{int*v;intsize;public:ValArray(constint*p,intn):size(n){v=newint[size];for(inti=0;i<size;i++)v[i]=P[i];}~ValArray(){delete[]v;}boolequals(constValArray&other);voidprint(ostream&out)const{out<<'{';for(inti:0;i<size一1;i++)out<<v[i]<<",";out<<v[size—1]<<'}';}};voidwriteToFile(constchar*};//main.cpp#include"ValArray.h"boolValArray::equals(constValArray&other){//********333********//********666********}intmain(){constinta[]={1,2,3,4,5};constintb[]={1,2,3,4};constintC[]={1,2,3,4,6};constintd[]={1,2,3,4,5};ValArrayv1(a,5);ValArrayv2(b,4);ValArrayv3(C,5);ValArrayv4(d,5);cout<<"v1=";v1.print(cout);cout<<end1;cout<<"v2=";v2.print(cout);cout<<end1;cout<<"v3=";v3.print(cout);cout<<end1;cout<<"v4=";v4.print(cout);cout<<end1;cout<<"v1"<<(v1.equals(v2)?"i==":"!=")<<"v2"<<end1;cout<<"v1"<<(v1.equals(v3)?"==":"!=")<<"v3"<<end1;cout<<"v1"<<(v1.equals(v4)?"==":"!=")<<"v4"<<end1;writeToFile("");return0;}
【正确答案】正确答案:if (size != other.size)//判断数组长度 return false; for (int i = 0; i < size; i++)//判断数组元素 if (v[i] != other.v[i]) return false; return true;
【答案解析】解析:主要考查考生对数组的掌握,函数bool ValArray::equals(const ValArray& other)要求判断两个数组是否相等,先判断数组长度,如果长度相同再根据数组元素依次判断。