C++上机练习题.docx
- 文档编号:664103
- 上传时间:2022-10-11
- 格式:DOCX
- 页数:11
- 大小:18.12KB
C++上机练习题.docx
《C++上机练习题.docx》由会员分享,可在线阅读,更多相关《C++上机练习题.docx(11页珍藏版)》请在冰豆网上搜索。
C++上机练习题
第一套
请使用VC6打开考生文件夹下的工程proj1,该工程含有一个源程序文件proj1.cpp。
其中每个注释"//ERROR***********found*************"之后的一行有语句存在错误。
请修改这些错误,使程序的输出结果为:
12345678910
注意:
只需修改注释"//ERROR***********found**********"的下一行语句,不要改动程序中的其它内容。
//proj1.cpp
#include
usingnamespacestd;
classMyClass{
public:
MyClass(intlen)
{
array=newint[len];
arraySize=len;
for(inti=0;i array[i]=i+1; } ~MyClass() { //ERROR**********found********** delete[]array; } voidPrint()const { for(inti=0;i //ERROR**********found********** cout< cout< } private: int*array; intarraySize; }; intmain() { //ERROR**********found********** MyClassobj(10); obj.Print(); return0; } 请使用VC6打开考生文件夹下的工程proj2,该工程含有一个源程序文件proj2.cpp。 其中定义了类Bag和用于测试该类的主函数main。 类Bag是一个袋子类,用来存放带有数字标号的小球(如台球中的球,在类中用一个整数值表示一个小球),其中运算符成员函数==用来判断两个袋子对象是否相同(即小球的个数相同,每种小球数目也相同,但与它们的存储顺序无关);成员函数intInBag(intball)用来返回小球ball在当前袋子内出现的次数,返回0表示该小球不存在。 为类实现这两个函数,其用法可参见主函数main。 运算符函数operator==中首先判断两个袋子内的小球个数是否相同,再调用InBag函数来判断每种小球在两个袋子内是否具有相同的出现次数。 注意: 只需在指定位置编写适当代码,不要改动程序中的其他内容,也不能删除或移动"//**********found******************"。 //proj2.cpp #include usingnamespacestd; constintMAXNUM=100; classBag{ private: intnum; intbag[MAXNUM]; public: Bag(intm[],intn=0);//构造函数 booloperator==(Bag&b);//重载运算符== intInBag(intball);//某一小球在袋子内的出现次数,返回0表示不存在 }; Bag: : Bag(intm[],intn) { if(n>MAXNUM){ cerr<<"Toomanymembers\n"; exit(-1); } for(inti=0;i bag[i]=m[i]; num=n; } boolBag: : operator==(Bag&b)//实现运算符函数== { if(num! =b.num)//元素个数不同 returnfalse; for(inti=0;i //**********found********** if(InBag(bag[i])! =b.InBag(bag[i]))//TODO: 加入条件,判断当前袋子中每个元素在当前袋子和袋子b中是否出现次数不同 //**********found********** returnfalse;//TODO: 加入一条语句 returntrue; } intBag: : InBag(intball) { intcount=0; for(inti=0;i //**********found********** if(bag[i]==ball)//TODO: 加入条件,判断小球ball是否与当前袋子中某一元素相同 //**********found********** count++;//TODO: 加入一条语句 returncount; } intmain() { intdata[MAXNUM],n,i; cin>>n; for(i=0;i cin>>data[i]; Bagb1(data,n);//创建袋子对象b1 cin>>n; for(i=0;i cin>>data[i]; Bagb2(data,n);//创建袋子对象b2 if(b1==b2)//测试b1和b2是否相同 cout<<"Bagb1issamewithBagb2\n"; else cout<<"Bagb1isnotsamewithBagb2\n"; return0; } 请使用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; usingstd: : cout; usingstd: : endl; classMyVector{//表示二维向量的类 doublex;//X坐标值 doubley;//Y坐标值 public: 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&operator<<(ostream&os,MyVectorv){ os<<'('< returnos; } intmain() { MyVectorv1(2,3),v2(4,5),v3; //**3************found********** v3=v1+v2; cout< return0; } 第二套 请使用VC6打开考生文件夹下的工程proj1,该工程含有一个源程序文件proj1.cpp。 其中位于每个注释"//ERROR************found***************"之后的一行语句存在错误。 请修正这些错误,使程序的输出结果为: Constructorcalledof10 Thevalueis10 Descructorcalledof10 注意: 只需要修改注释"//ERROR*******found***************"的下一行语句,不要改动程序中的其它内容。 //proj1.cpp #include usingnamespacestd; classMyClass{ public: MyClass(inti) { value=i; cout<<"Constructorcalledof"< } //ERROR**********found********** voidPrint()const {cout<<"Thevalueis"< //ERROR**********found********** ~MyClass() {cout<<"Destructorcalledof"< private: //ERROR**********found********** intvalue; }; intmain() { constMyClassobj(10); obj.Print(); return0; } 凡用过C语言标准库函数strcpy(char*s1,char*s2)的程序员都知道使用该函数时有一个安全隐患,即当指针s1所指向的空间不能容纳字符串s2的内容时,将发生内存错误。 类String的Strcpy成员函数能进行简单的动态内存管理,其内存管理策略为: (1)若已有空间能容纳下新字符串,则直接进行字符串拷贝; (2)若已有空间不够时,它将重新申请一块内存空间(能容纳下新字符串),并将新字符串内容拷贝到新申请的空间中,释放原字符空间。 请使用V
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 上机 练习题