C++_全国计算机二级真题(含上机题、答案).docx
《C++_全国计算机二级真题(含上机题、答案).docx》由会员分享,可在线阅读,更多相关《C++_全国计算机二级真题(含上机题、答案).docx(208页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、VC+全国计算机二级题库第一套请使用VC6打开考生文件夹下的工程projl,该工程含有一个源程序文件projl. cpp。其中每个注释ERROR *found*之后的,行有语句存在错误。请修改这些错误,使程序的输出结果为:12345678910注意:只需修改注释/ERROR *found*”的下行语句,不要改动程序中的其它内容。/projl.cpp#include using namespace std;class MyClass public:MyClass(int len)array = new intlen;arraySize = len;for(int i = 0; i arraySi
2、ze; i+) arrayi = i+1;MyClass。(/ / error*found*delete array;)void Print() constfor(int i = 0; i arraySize; i+)11 error*found*cout arrayi ;cout endl;private:int *array;int arraySize;int main() ERROR *found* MyClass obj(10);obj.Print();return 0;)请使用VC6打开考生文件夹下的工程proj2,该工程含有一个源程序文件proj2. cppo其中定义了类Bag和用
3、于测试该类的主函 数main。类Bag是一个袋子类,用来存放带有数字标号的小球(如台球中的球,在类中用个整数值表示个小球),其中运 算符成员函数=用来判断两个袋子对象是否相同(即小球的个数相同,每种小球数目也相同,但与它们的存储顺序无关); 成员函数int InBag(int ball)用来返回小球ball在当前袋子内出现的次数,返回0表示该小球不存在。为类实现这两个函数, 其用法可参见主函数main。运算符函数。perator =中首先判断两个袋子内的小球个数是否相同,再调用InBag函数来判断每种小球在两个袋子内是 否具有相同的岀现次数。注意:只需在指定位置编写适当代码,不要改动程序中的其
4、他内容,也不能删除或移动 /* found* * / proj2.cpp#include using namespace std;const int MAXNUM = 100;class Bag private:int num;int bagMAXNUM;public:Bag(int m, int n=0); /Z 构造函数bool operator = (Bag &b); /Z 重载运算符int lnBag(int ball); /Z某小球在袋子内的出现次数,返回表示不存在);Bag:Bag(int m, int n)(if(n MAXNUM) cerr Too many membersn;
5、exit(-l);for(int i 二 ; i n; i+)bagi = mi;num 二 n;bool Bag:operator = (Bag &b) /Z 实现运算符函数(if (num != b.num) /Z元素个数不同return false;for (int i 二。;I num; i+)if (lnBag(bagi)!=b.lnBag(bagi) / TODO:加入条件,判断当前袋子中每个元素在当前袋子和袋子 b中是否出现次数不同*found*return false; /TODO:加入一条语句 return true;)int Bag:lnBag(int ball)int c
6、ount 二 ;for (int i = 0; i num; i+)if (bagi=ball)/TODO:加入条件,判断小球ball是否与当前袋子中某一元素相同count+; /TODO:加入一条语句 return count;int main()(int dataMAXNUM, n, i;cin n;for (i = 0; i n; i+)cin datai;Bag bl(data, n); /Z创建袋子对象blcin n;for (i = 0; i n; i+)cin datai;Bag b2(data, n); /Z创建袋子对象b2if( bl= b2)/Z测试bl和b2是否相同cou
7、t Bag bl is same with Bag b2n;elsecout Bag bl is not same with Bag b2n;return 0;请使用VC6打开考生目录下的工程文件proj3。此工程包含一个源程序文件proj3. cpp,其中定义了用于表示二维向量的类 MyVector;程序应当显示:(6,8)但程序中有缺失部分,请按下面的提示,把下划线标出的三处缺失部分补充完整:(1)在*1* *found*的下方是构造函数的定义,它用参数提供的坐标对x和y进行初始化。(2)在*2* * found*的方是减法运算符函数定义中的一条语句。两个二维向量相减生成另个二维向量:它的
8、X坐标等于两个向量X的坐标之差,它的Y坐标等于两个向量Y坐标之差。(3)在*3* *found*的下方的语句的功能是使变量v3获得新值,它等于向量vl与向量v2之 和。注意:只需在指定位置编写适当的代码,不要改动程序中的其它内容,也不能删除或移动 *found*。/ proj3. cpp#includeusing std:ostream;using std:cout;using std:endl;class MyVector表示二维向量的类double x;/X坐标值double y;Y坐标值public:MyVector (double i=0. 0 , double j=0. 0)i构造函
9、数MyVector operator+ ( MyVector j):重载运算符+friend MyVector operator-( MyVector i, MyVector j); 重载运算符friend ostream& operator ( ostream& os, MyVector v); /重载运算符;/*1* *found*MyVector:MyVector(double i , double j): x(i),y(j) )MyVector MyVector:operator+( MyVector j) return MyVector(x+j. x, y+j. y);MyVecto
10、r operator-( MyVector i, MyVector j)/*2* *fourid*return MyVector (i. x-j. x, i. y-j. y);ostreamfc operator ( ostream& os, MyVector v) os ( v. x , v. y ):输出向量 v 的坐标return os;int mainOMyVector vl(2,3), v2 (4,5), v3;/*3* *found*v3=vl+v2;coutv3endl;return 0;第二套请使用VC6打开考生文件夹下的工程projl,该工程含有一个源程序文件pro, cpp
11、。其中位于每个注释ERROR*found*之后的,行语句存在错误。请修正这些错误,使程序的输出结果为:Constructor called of 10The value is 10Descructor cal led of 10注意:只需要修改注释ERROR *found*的一行语句,不要改动程序中的其它内容。/ projl. cppttinclude using namespace std;class MyClass public:MyClass(int i)(value = i;cout 1 *Constructor cal led or value end1;)/ ERROR *foun
12、d* void Print() const cout *The value is value endl; / ERROR *found*MyClass () cout Destructor called of value endl; private:/ ERROR *found* int value;1;int main()(const MyClass obj(10);obj. Print ();return 0;凡用过C语言标准库函数strcpy(char*sl,char*s2)的程序员都知道使用该函数时有一个安全隐患,即当指针si所指向的空间 不能容纳字符串s2的内容时,将发生内存错误。类
13、String的Strcpy成员函数能进行简单的动态内存管理,其内存管理策略为:(1)若已有空间能容纳下新字符串,则直接进行字符串拷贝:(2)若已有空间不够时,它将重新申请块内存空间(能容纳新字符串),并将新字符串内容拷贝到新申请的空间中, 释放原字符空间。请使用VC6打开考生文件夹下的工程proj2,该工程含有一个源程序文件proj2.cpPo其中定义了类String和用于测试该类 的主函数main,并且成员函数Strcpy的部分实现代码已在该文件中给出,请在标有注释*found*行的 下一行添加适当的代码,将这个函数补充完整,以实现其功能。注意:只需在指定位置编写适当代码,不要改动程序中的其
14、它内容,也不能删除或移动*/* found* / proj2. cpp#include using namespace std;class String private:int size;/Z缓冲区大小char *buf;/Z 缓冲区public:String(int bufsize);void Strcpy (char *s) ;/ 将字符串s复制到buf中void Print() const;String。 if (buf != NULL) delete buf; ;String:String(int bufsize) (si ze = bufsize;buf = new chartsiz
15、e;*buf 二、;void String:Strcpy(char *s)char *p,*q;int len = strlen(s);if (len+1 size) size = len+1;p = q = new chartsize; /* found*while(*(q+)=*(s+); / TODO:添加代码将字符串s拷贝到字符指针口中delete buf;buf = p;)else /*found*for(p=buf ;*p=*s;p+, s+) ; / TODO:添加代码将字符串s拷贝到buf中 )void String:Print() const(cout size t buf
16、endl;int main()(char s100;String str(32);cin. getl ine(s, 99);str. Strcpy (s);str. Print ();return 0;)请使用VC6打开考生目录下的工程文件proj3。此工程包含一个源程序文件proj3. cpp,其中定义了用于表示平面坐标系中 的点的类myPoinl和表示.三角形的类MyTriangle;程序运行后应当显示:6. 828432但程序中的缺失部分,请按面的提示,把卜划线标出的三处缺失部分补充完整:(1)在/*1* *found*的下方是构造函数的定义,它参数提供的三个顶点对point 1、poi
17、nt2和 point3进行初始化。(2)在*2* *found*的方是成员函数perimeter的定义,该函数返回三角形的周氏。(3)在*3* *found*的方是成员函数area的定义中的一条语句。函数area返冋三角形的面 积。方法是:若a、b、c为三角形的三个边长,并令s=(a+b+c)/2,则三角形的面积A为A=sqrt(s*(s-a)*(s-b)*(s-c)(其中 sqrl表示开二次方)注意:只需在指定位置编写适当代码,不要改动程序中的其它内容,也不能删除或移动/* found* / proj3. cpp#include#includeusing namespace std;clas
18、s 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 cout ( x , y );class MyTriangleMyPointMyPointMyPointpointl;point2;point3;表示三角形的类三角形的第一个顶点三角形的第二个顶点三角形的第三个顶点public:MyTriangle(MyPoin
19、t pl, MyPoint p2,MyPoint p3);double perimeter()const;返回三角形的周长double area()const;返回三角形的面积;/*1* *found*MyTriangle:MyTriangle(MyPoint pl, MyPoint p2, MyPoint p3):point1(pl), point2(p2), point3(p3) double di stance (MyPoint pl, MyPoint p2)返回两点之间的距离(return sqrt (pl. getX0-p2. getX()*(pl. getX()-p2. getX(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全国计算机 二级 上机 答案
限制150内