C++上机练习题Word文档下载推荐.docx
《C++上机练习题Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C++上机练习题Word文档下载推荐.docx(11页珍藏版)》请在冰豆网上搜索。
array=newint[len];
arraySize=len;
for(inti=0;
i<
arraySize;
i++)
array[i]=i+1;
}
~MyClass()
{
//ERROR**********found**********
delete[]array;
voidPrint()const
cout<
<
array[i]<
'
;
endl;
private:
int*array;
intarraySize;
};
intmain()
{
MyClassobj(10);
obj.Print();
return0;
}
请使用VC6打开考生文件夹下的工程proj2,该工程含有一个源程序文件proj2.cpp。
其中定义了类Bag和用于测试该类的主函数main。
类Bag是一个袋子类,用来存放带有数字标号的小球(如台球中的球,在类中用一个整数值表示一个小球),其中运算符成员函数==用来判断两个袋子对象是否相同(即小球的个数相同,每种小球数目也相同,但与它们的存储顺序无关);
成员函数intInBag(intball)用来返回小球ball在当前袋子内出现的次数,返回0表示该小球不存在。
为类实现这两个函数,其用法可参见主函数main。
运算符函数operator==中首先判断两个袋子内的小球个数是否相同,再调用InBag函数来判断每种小球在两个袋子内是否具有相同的出现次数。
注意:
只需在指定位置编写适当代码,不要改动程序中的其他内容,也不能删除或移动"
//**********found******************"
。
//proj2.cpp
constintMAXNUM=100;
classBag{
intnum;
intbag[MAXNUM];
Bag(intm[],intn=0);
//构造函数
booloperator==(Bag&
b);
//重载运算符==
intInBag(intball);
//某一小球在袋子内的出现次数,返回0表示不存在
Bag:
:
Bag(intm[],intn)
if(n>
MAXNUM){
cerr<
"
Toomanymembers\n"
exit(-1);
n;
bag[i]=m[i];
num=n;
boolBag:
operator==(Bag&
b)//实现运算符函数==
if(num!
=b.num)//元素个数不同
returnfalse;
for(inti=0;
num;
//**********found**********
if(InBag(bag[i])!
=b.InBag(bag[i]))//TODO:
加入条件,判断当前袋子中每个元素在当前袋子和袋子b中是否出现次数不同
//TODO:
加入一条语句
returntrue;
intBag:
InBag(intball)
intcount=0;
if(bag[i]==ball)//TODO:
加入条件,判断小球ball是否与当前袋子中某一元素相同
count++;
//TODO:
returncount;
intdata[MAXNUM],n,i;
cin>
>
for(i=0;
data[i];
Bagb1(data,n);
//创建袋子对象b1
Bagb2(data,n);
//创建袋子对象b2
if(b1==b2)//测试b1和b2是否相同
Bagb1issamewithBagb2\n"
else
Bagb1isnotsamewithBagb2\n"
请使用VC6打开考生目录下的工程文件proj3。
此工程包含一个源程序文件proj3.cpp,其中定义了用于表示二维向量的类MyVector;
程序应当显示:
(6,8)
但程序中有缺失部分,请按下面的提示,把下划线标出的三处缺失部分补充完整:
(1)在//**1***************found***********的下方是构造函数的定义,它用参数提供的坐标对x和y进行初始化。
(2)在//**2****************found***********的下方是减法运算符函数定义中的一条语句。
两个二维向量相减生成另一个二维向量:
它的X坐标等于两个向量X的坐标之差,它的Y坐标等于两个向量Y坐标之差。
(3)在//**3*****************found***********的下方的语句的功能是使变量v3获得新值,它等于向量v1与向量v2之和。
只需在指定位置编写适当的代码,不要改动程序中的其它内容,也不能删除或移动"
*************found***************"
//proj3.cpp
#include<
usingstd:
ostream;
cout;
endl;
classMyVector{//表示二维向量的类
doublex;
//X坐标值
doubley;
//Y坐标值
MyVector(doublei=0.0,doublej=0.0);
//构造函数
MyVectoroperator+(MyVectorj);
//重载运算符+
friendMyVectoroperator-(MyVectori,MyVectorj);
//重载运算符-
friendostream&
operator<
(ostream&
os,MyVectorv);
//重载运算符<
//**1************found**********
MyVector:
MyVector(doublei,doublej):
x(i),y(j){}
MyVectorMyVector:
operator+(MyVectorj){
returnMyVector(x+j.x,y+j.y);
MyVectoroperator-(MyVectori,MyVectorj)
{//**2************found**********
returnMyVector(i.x-j.x,i.y-j.y);
ostream&
os,MyVectorv){
os<
('
<
v.x<
'
v.y<
)'
;
//输出向量v的坐标
returnos;
{
MyVectorv1(2,3),v2(4,5),v3;
//**3************found**********
v3=v1+v2;
cout<
v3<
第二套
其中位于每个注释"
//ERROR************found***************"
之后的一行语句存在错误。
请修正这些错误,使程序的输出结果为:
Constructorcalledof10
Thevalueis10
Descructorcalledof10
只需要修改注释"
//ERROR*******found***************"
MyClass(inti)
value=i;
Constructorcalledof"
value<
{cout<
Thevalueis"
Destructorcalledof"
intvalue;
constMyClassobj(10);
凡用过C语言标准库函数strcpy(char*s1,char*s2)的程序员都知道使用该函数时有一个安全隐患,即当指针s1所指向的空间不能容纳字符串s2的内容时,将发生内存错误。
类String的Strcpy成员函数能进行简单的动态内存管理,其内存管理策略为:
(1)若已有空间能容纳下新字符串,则直接进行字符串拷贝;
(2)若已有空间不够时,它将重新申请一块内存空间(能容纳下新字符串),并将新字符串内容拷贝到新申请的空间中,释放原字符空间。
请使用V