二级C++上机题库.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《二级C++上机题库.pdf》由会员分享,可在线阅读,更多相关《二级C++上机题库.pdf(272页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、全国计算机二级C+上 机(内部)专用盗用必究!第一套请使用VC6打开考生文件夹下的工程p ro jl,该工程含有一个源程序文件projl.cpp。其中每个注释 ERROR*f ound*“之后的一行有语句存在错误。请修改这些错误,使程序的输出结果为:1 2 3 4 5 6 7 8 9 10/proj l.cpp#include using namespace std;class MyClass public:MyClass(int len)(array=new intlen;arraySize=len;f or(int i=0;i arraySize;i+)arrayf il=i+1;-MyC
2、lass()(H ERROR*f ound*delete array;/delete array;)void Print()const(f or(int i=0;i arraySize;i+)II ER R*f ound*cin arrayi 一;/cout aiTayiJ ;cout endl;)private:int*array;int arraySize;);int main()(FR R()R*f ound*MyClass obj;/MyClass obj(10);obj.Print();return 0;)请使用VC6打开考生文件夹下的工程proj2,该工程含有一个源程序文件proj
3、2.cpp。其中定义了类Bag和用于测试该类的主函数main。类 Bag是一个袋子类,用来存放带有数字标号的小球(如台球中的球,在类中用一个整数值表示一个小球),其中运算符成员函数=用来判断两个袋子对象是否相同(即小球的个数相同,每种小球数目也相同,但与它们的存储顺序无关);成员函数int InBag(int ball)用来返回小球ball在当前袋子内出现的次数,返 回 0表示该小球不存在。为类实现这两个函数,其用法可参见主函数main。运算符函数operator=中首先判断两个袋子内的小球个数是否相同,再调用InBag函数来判断每种小球在两个袋子内是否具有相同的出现次数/proj2.cpp#
4、include using namespace std;const int MAXNUM=100;class Bag private:int num;int bagMAXNUM;public:Bag(int m,int n=0);/构造函数bool operator=(Bag&b);/重载运算符二二int InBag(int ball);/某一小球在袋子内的出现次数,返回0 表示不存在);Bag:Bag(int m,int n)(if(n MAXNUM)cerr ”Too many members。”;exit(-l);)f or(int i=0;i n;i+)bagi=mi;num=n;)b
5、ool Bag:operator=(Bag&b)/实现运算符函数=if (num!=b.num)/元素个数不同return f alse;f or(int i=0;i num;i+)i f(I n B a g(b a g i l)!=b.I n B a g(b a g i )/TODO:加入条件,判断当前袋子中每个元素在当前袋子和袋子b 中是否出现次数不同/*f ou nd*return false;/TODO:力 口 入 一条语句return true;)int Bag:InBag(int ball)(int count=0;f or(int i=0;i num;i+)/*字 x*f oun
6、d*年i f(bag i =bal l)/TODO:加入条件,判断小球ball是否与当前袋子中某一元素相同/*f ou nd*,*count+;/TODO:加入一条语句return count;)int main()(int dataMAXNUM,n,i;cin n;f or(i=0;i n;i+)cin datai;Bag b 1 (data,n);/创建袋子对象blcin n;f or(i=0;i n;i+)cin datai;Bag b2(data,n);/创建袋子对象b2if(bl=b2)/测试b l和 b2是否相同cout Bag bl is same with Bag b2n;el
7、secout Bag bl is not same with Bag b2n;return 0;)请使用VC6打开考生目录下的工程文件proj3。此工程包含一个源程序文件proj3.cpp,其中定义了用于表示二维向量的类MyVector;程序应当显示:(6,8)但程序中有缺失部分,请按下面的提示,把下划线标出的三处缺失部分补充完整:(1)在*1*f ound*的下方是构造函数的定义,它用参数提供的坐标对x 和 y 进行初始化。(2)在*2*f ound*的下方是减法运算符函数定义中的一条语句。两个二维向量相减生成另一个二维向量:它的X 坐标等于两个向量X 的坐标之差,它的Y 坐标等于两个向量Y
8、 坐标之差。(3)在*3*f ound*的下方的语句的功能是使变量v3获得新值,它等于向量v l与向量v2之和。/proj3.cpp#includeusing std:ostream;using std:cout;using std:endl;class MyVectordouble x;double y;public:表示二维向量的类/X 坐标值/Y 坐标值MyVector(double i=0.0,double j=0.0);MyVector operator+(MyVector j);f riend MyVector operator-(MyVector i,MyVector j);构造
9、函数重载运算符+重载运算符f riend ostream&operator(ostream&os,MyVector v);重载运算符v v);/*亭*x*d*_MyVector:MyVector(double i,double j):x(i),y(j)MyVector MyVector:operator+(MyVector j)return MyVector(x+j.x,y+j.y);MyVector operator-(MyVector i,MyVector j)/*2*亭 *return My V e c t o r(i.x-j.x,i.y-j.y);ostream&operator(os
10、tream&os,MyVector v)os v.x v.y ),;输出向量 v 的坐标return os;int main()(MyVector v 1(2,3),v2(4,5),v3;/*3*f ound*v3=_vl+v2;coutv3endl;return 0;)第二套请使用VC6打开考生文件夹下的工程p ro jl,该工程含有一个源程序文件projl.cpp。其中位于每个注释“ERROR*f bund*”之后的一行语句存在错误。请修正这些错误,使程序的输出结果为:Constructor called of 10The value is 10Descructor called of 1
11、0/proj l.cpp#include using namespace std;class MyClass public:MyClass(int i)(value=i;cout Constructor called of value endl;)II ER R c)R *f ound*void Print()/void Print()const cout The value is value endl;II EIROR*f ound*void-MyClass()MyClass()cout Destructor called o fn value endl;private:II EIROR*f
12、 ound*int value=0;/int value;);int main()(const MyClass obj(l 0);obj.Print();return 0;)凡用过C 语言标准库函数strcpy(char*sl,char*s2)的程序员都知道使用该函数时有一个安全隐患,即当指针s i 所指向的空间不能容纳字符串s2 的内容时,将发生内存错误。类 String的 Strcpy成员函数能进行简单的动态内存管理,其内存管理策略为:(1)若已有空间能容纳下新字符串,则直接进行字符串拷贝;(2)若已有空间不够时,它将重新申请一块内存空间(能容纳下新字符串),并将新字符串内容拷贝到新申请的
13、空间中,释放原字符空间。请使用VC6打开考生文件夹下的工程proj2,该工程含有一个源程序文件proj2.cpp。其中定义了类String和用于测试该类的主函数m a in,并且成员函数Strcpy的部分实现代码已在该文件中给出,请在标有注释*f ound*”行的下一行添加适当的代码,将这个函数补充完整,以实现其功能。/proj2.cpp#include using namespace std;class String private:int size;char*buf;public:String(int buf size);void Strcpy(char*s);void Print()co
14、nst;/缓冲区大小/缓冲区/将字符串s复制到buf中String()if (buf !=NULL)delete buf;);String:String(int buf size)(size=buf size;buf =new charsize;*buf=0,;void String:Strcpy(char*s)char*p,*q;int len=strlen(s);if (len+l size)size=len+l;p=q=new charsize;/*f ound*while(.指针q中*(q+)=*(s+).);/TO D O:添加代码将字符串s拷贝到字符delete buf;buf =
15、p;)else/*f ound*f or(p=buf;.buf中*p=*s;p+,s+);/TODO:添加代码将字符串s拷贝到void String:Print()constcout size *t buf endl;)int main()(chars100;String str(32);cin.getline(s,99);str.Strcpy(s);str.Print();return 0;)请使用VC6打开考生目录下的工程文件proj3。此工程包含一个源程序文件proj3.cpp,其中定义了用于表示平面坐标系中的点的类myPoint和表示三角形的类MyTriangle;程序运行后应当显示:
16、6.828432但程序中的缺失部分,请按下面的提示,把下划线标出的三处缺失部分补充完整:(1)在*1*f ound*的下方是构造函数的定义,它参数提供的三个顶点对point 1、point2和 point3进行初始化。(2)在*2*f ound*的下方是成员函数 perimeter 的定义,该函数返回三角形的周长。(3)在*3*f bund*的下方是成员函数area的定义中的一 条 语句。函数area返回三角形的面积。方法是:若 a、b、c 为三角形的三个边长,并 令 s=(a+b+c)/2,则三角形的面积A 为A=sqrt(s*(s-a)*(s-b)*(sc)(其中 sqrt 表示开二次方)
17、/proj3.cpp#include#includeusing namespace std;class MyPoint 表示平面坐标系中的点的类double x;double y;public:MyPoint(double x,double y)this-x=x;this-y=y;double getX()const return x;double getY()const return y;void show()const coutvv(vvxv,vvyv););class MyTriangle 表示三角形的类MyPoint point);三角形的第一个顶点MyPoint point2;三角形
18、的第二个顶点MyPoint point3;三角形的第三个顶点public:MyTriangle(MyPoint pl,MyPoint p2,MyPoint p3);double perimeter()const;返回三角形的周长double area()const;返回三角形的面积);/*,*f ound*MyTriangle:MyTriangle(MyPoint pl,My Point p2,MyPoinl p3):pointl(p 1 ),p o i n t 2(p 2),p o i n t 3(p 3)double distance(MyPoint pl,My Point p2)返回两点
19、之间的距离(return sqrt(pl.getX()-p2.getX()*(p 1 .getX()-p2.getX()+(P l.getY()-p2.getY()*(p l.getY()-p2.getY();)*Qund*double My Tr i a n g l e:perimeter()const(return distance(pointl,point2)+distance(point2,point3)+distance(point3,point I);)double MyTriangle:area()const/*3*享*亭*double s=per i met er()/2;/使
20、用 perimeter 函数return sqrt(s*(s-distance(pointl,point2)*(s-distance(point2,point3)*(s-distance(point3,pointl);)int main()(MyTriangle tri(MyPoint(0,2),MyPoint(2,0),MyPoint(0,0);couttri.perimeter()endltri.area()endl;return 0;)第三套请使用VC6打开考生文件夹下的工程p ro jl,该工程含有一个源程序文件projl.cpp。其中位于每个注释 ERROR*f ound*之后的一行
21、语句存在错误。请修正这些错误,使程序的输出结果为:There are 2 object(s)/proj l.cpp#include using namespace std;class MyClass public:ERROR*f ound*MyClass(int i=0)value=I/MyClass(int i=0)rvalue(i)count+;void Print()cout There are”count object(s).1 endl;private:const int value;static int count;);II ERROR*f ound*static int MyCl
22、ass:count=0;I I int MyClass:count=0;int main()(MyClass objl,obj2;H ERROR*f ound*MyClass.Print();/obj 1 ,Print();return 0;)请使用VC6打开考生文件夹下的工程proj2,该工程含有一个源程序文件proj2.cpp。其中定义了模板函数insert(T dataset,int&size,T item)和主函数main。模板函数insert用来将一个数据item插入到一个已排好序(升序)的数据集dataset中,其中类型T 可以为int,double,char等数据类型,size为
23、当前数据集中元素的个数,当插入操作完成后,size值将更新。模板函数insert的部分实现代码已在文件proj2.cpp中给出,请在标有注释/TODO:”的行中添加适当的代码,将运算符函数的operator-补充完整,以实现其功能。/proj2.cpp#include using namespace std;请在该部分插入insert函数模板的实现template void insert(T setdataJ,int&size,T item)(f or(int i=0;i i t e m)/TODO:添加代码,判断查找元素的插入位置f or(int j=i;j size;j+)setdatas
24、ize-j+i=setdatasize-j+i-1 ;/TODO:添加一条语句,将插入位置后的所有元素往后移动一个位置/提示:移动元素应从最后一个元素开始移动setdatai=item;/插入该元素size+;return;/*字,*f ou nd*不*s e t d a t a i =i t e m;/TODO:添加一条语句,将元素加到最后一个位置上size+;return;)int main()(int idata10J=22,35,56,128,iitem,isize=4,dsize=4,i;double ddata10=25.1,33.5,48.9,75.3,ditem;cout Pl
25、ease input one integer number f or inserting:;cin iitem;insert(idata,isize,iitem);f or(i=0;i isize;i+)cout idatai cout endl;cout Please input one double number f or inserting:;cin ditem;insert(ddata,dsize,ditem);f or(i=0;i dsize;i+)cout ddatai *;cout endl;return 0;)请使用VC6打开考生目录下的工程文件proj3。此工程包含一个源程序
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 C+ 上机 题库
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内