问答题 请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程proj3,其中声明IntSet是一个用于表示正整数集合的类。IntSet的成员函数Intersection的功能是求当前集合与另一个集合的交集。请完成成员函数Intersection。在main函数中给出了一组测试数据,此时程序的输出应该是:求交集前:12358102891l305667求交集后:12358102891130566728要求:补充编制的内容写在“//**********333**********”与“//**********666**********”之间,不得修改程序的其他部分。注意:程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。//Intset.h#include<iostream>usingnamespacestd;constintMax=100;clasSIntSet{public:IntSet()//构造一个空集合{end=-1;}IntSet(inta[],intsize)//构造一个包含数组a中size个元素的集合{if(Size>:Max)end=Max-1;elseend=size-1;for(inti=0;i<=end;i++)element[i]=a[i];}boolIsMemberOf(inta)//判断a是否为集合中的一个元素{for(inti=0;i<=end;i++)if(element[i]==a)returntrue;returnfalse;}intGetEnd(){returnend;}//返回最后一个元素的下标intGetElement(inti){returnelement[i];}//返回下标为i的元素IntSetIntersection(IntSet&set);//求当前集合与集合set的交voidPrint()//输出集合中的所有元素{for(inti=0;i<=end;i++)if((i+1)%20==0)cout<<element[i]<<end1;elsecout<<element[i]<<'';cout<<end1;}private:intelement[Max];intend;};voidwriteToFile(constchar*);}intmain(){inta[]={1,2,3,5,8,i0);intb[]={2,8,9,ii,30,56,67);IntSetsetl(a,6),set2(b,7),set3;cout<<"求交集前:"<<end1;setl.Print(),set2.Print();set3.Print();set3=set1.Intersection(set2);cout<<end1<<"求交集后:"<<end1;set1.Print();set2.Print();set3.Print();writeToFile(””);return0;}
【正确答案】正确答案:for(inti=0;i<=set.GetEnd();i++)//遍对象set数组 if(IsMemberOf(set.GetElement (i)))//判断对象set数组第i个值是不是集合中的值,如果是则把它插入到a中 a[size++]=set.GetElement (i);
【答案解析】解析:主要考查考生对数组的掌握,根据IntSet类的构造函数: IntSet(inta[],intsize) //构造一个包含数组a中size个元素的集合 { if(size>=Max) end=Max一1; else end=size一1; for(inti=0;i<=end;i++) element[i]=a[i]; } 可知数组element用来装载集合,end表示数组长度,因此调用函数IsMemberOf来判断set中的元素是否存在于集合中,如果存在则放入数组a中。