请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,此工程中含有一个源程序文件proj2.cpp。 其中定义了类Bag和用于测试该类的主函数main。类Bag是一个袋子类,用于存放带有数字标号的小球(如台球中用的球,在类中用一个整数值

admin2019-03-05  27

问题 请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,此工程中含有一个源程序文件proj2.cpp。
其中定义了类Bag和用于测试该类的主函数main。类Bag是一个袋子类,用于存放带有数字标号的小球(如台球中用的球,在类中用一个整数值表示一个小球),其运算符成员函数=用来判断两个袋子对象是否相同(即小球个数相同、每种小球数目也相同,但与它们的存储顺序无关);成员函数intInBag(intball)用来返回小球ball在当前袋子内的出现次
数,返回0表示该小球不存在。为类实现这两个函数,其用法可参见主函数main。
运算符函数operator=和成员函数InBag的部分实现代码已有文件proj2.epp中给出,请在标有注释“//TODO:”的行中添加适当的代码,将这两个函数补充完整,以实现其功能。
提示:在运算符函数=中首先判断两个袋子内的小球个数是否相同,再调用InBag函数来判断每种小球在两个袋子内的出现次数是否相同。
注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。
//proj2.cpp
#include
usingnamespacestd;
constintNAXNUH=100;
classBag{
private:
inthum;
intbag[NAXNUH];
public:
Bag(intm[],intn=0);//构造函数
booloperator==(Bag&b);//重载运算符=
intTnBag(int:ball);//某一小球在袋子内的出现次数,返回0表示不存在
};
Bag::Bag(intm[],intn)
{
if(rl>Hg_XNUH){
cerE<<"TOOmanymembers\n";
exit(-1);
}
for(inti=0;ibag=m
num=n;
}
boolBag::operator=(Bag&b)//实现运算符函数=
{
if(hum!=b.hum)//元素个数不同
returnfalse;
for(inti=0;i//**********found**********
if(________)//TODO:加入条件,判断当前袋子中每个元素在当前袋子和袋子b中是否出现次数不同
//**********found**********
________;//TODO:加入一条语句
returntrue;
}
intBag::lnBag(intball)
{
intcount=0;
for(inti=0;i//**********found**********
if(________)//TODO:加入条件,
判断小球ball是否与当前袋子中某一元素相同
//**********found**********
________;//TODO:加入一条语句
returncount;
}
intmain()
{
intdata[NAXNUH],n,i;
cin>>n;
for(i=0;icin>>data
Bagb1(data,n);//创建袋子对象b1
cin>>n;
for(i=0;icin>>data
Bagb2(data,n);//创建袋子对象b2if(b1=b2)//测试b1和b2是否相同
cout<<"Bagb1issamewithBagb2\n";
else
cout<<"Bagb1isnot;samewithBagb2\n";
return0;
}

选项

答案(1)InBag(bag[i]) != b.InBag(bag[i]) (2)return false (3)ball == bag[i] (4)count++

解析 (1)主要考查考生对成员函数的掌握,题目要求,判断当前袋子中每个元素在当前袋子和袋子b中出现次数是否不同,在类的定义中有函数:int InBag(int ball),用于某一小球在袋子内的出现次数,返回0表示不存在,这里可直接调用该函数。
(2)由下一条语句:return true,可知当if条件不成立时返回true,故条件成立时返回false。
(3)题目要求判断小球ball是否与当前袋子中某一元素相同,因此判断条件为ball=bag
(4)count作为计数,存放小球出现的次数,因此当满足条件if (ball == bag)时,变量count加1;。
转载请注明原文地址:https://kaotiyun.com/show/ovAp777K
0

最新回复(0)