全国计算机二级C++上机题库.docx





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

限制150内