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