【计算机类职业资格】二级C++分类模拟144及答案解析.doc

上传人:syndromehi216 文档编号:1324221 上传时间:2019-10-17 格式:DOC 页数:9 大小:42KB
下载 相关 举报
【计算机类职业资格】二级C++分类模拟144及答案解析.doc_第1页
第1页 / 共9页
【计算机类职业资格】二级C++分类模拟144及答案解析.doc_第2页
第2页 / 共9页
【计算机类职业资格】二级C++分类模拟144及答案解析.doc_第3页
第3页 / 共9页
【计算机类职业资格】二级C++分类模拟144及答案解析.doc_第4页
第4页 / 共9页
【计算机类职业资格】二级C++分类模拟144及答案解析.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

1、二级 C+分类模拟 144 及答案解析(总分:100.00,做题时间:90 分钟)一、程序改错题(总题数:1,分数:30.00)1.使用 VC6 打开 下的源程序文件 modi1.cpp,该程序运行时有错误,请改正其中的错误,使程序正常运行,并且输出以下结果: (4,5) 7,8 (4,8) 注意:错误的语句在/*error*的下面,修改该语句即可。 #includeiostream.h class CObj0 public: CObj0(int i,int j) x=i; y=j; /*error* virtual void move(int a;int b) x+=a; y+=b; voi

2、d print() cout “ (“ x “,“ y “)“ endl; public: int x,y; ; class CObj1: public CObj0 public: /*error* CObj1(int i,int j,int k):(i,j) m=k; n=l; void print() cout m “,“ n endl; void func() move (3,5); void display() /*error* print(); private: int m,n; ; void main() CObj0 obj (4,5); obj.print(); CObj1 ob

3、j1(1,3,7,8); obj1.func(); obj1.print(); obj1.display(); (分数:30.00)_二、程序填空题(总题数:1,分数:40.00)2.使用 VC6 打开 下的源程序文件 modi2.cpp。阅读下列函数说明和代码。函数 sort(int int y=13; int z=-3; sort(x,y,z); cout x “,“ y “,“ z endl; return 0; (分数:40.00)_三、程序设计题(总题数:1,分数:30.00)3.使用 VC6 打开 下的源程序文件 modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的

4、定义补充完整。完成以下功能: (1)定义类 CPoint 的带有两个参数的构造函数,两个变量为 x、y 都为 int 型,且缺省值为 0。请在注释/*1*后添加适当的语句。 (2)完成类 CRectangle 的构造函数,给 point1 和 point2 进行赋值。请在注释/*2*后添加适当的语句。 (3)完成类 CRectangle 的函数 GetArea(),用来计算矩形面积。请在注释/*3*后添加适当的语句。 (4)定义 CRectangle 类,拥有两个私有对象 point1 和 point2,类型为 Point,请在注释/*4*料后添加适当的语句。 注意:除在指定位置添加语句之外,

5、请不要改动程序中的其他内容。 #includeiostream.h #include cmath class CPoint public: /*1* x=i; y=j; int GetX() return x; int GetY() return y; private: int x,y; ; class CRectangle public: /*2* int GetArea() /*3* in theight=point1.GetY() -point2.GetY(); return (width*height)? width*height: -width*height; int GetGirt

6、h() int width=abs(point1.GetX-point2.GetX(); int height=abs(point1.GetY()-point2.GetY(); return (2*(width+height); private: /*4* CPoint point2; ; int main() CRectangle rect(5,2,13,18); cout rect.GetArea() endl; cout rect.GetGirth() endl; return 0; (分数:30.00)_二级 C+分类模拟 144 答案解析(总分:100.00,做题时间:90 分钟)一

7、、程序改错题(总题数:1,分数:30.00)1.使用 VC6 打开 下的源程序文件 modi1.cpp,该程序运行时有错误,请改正其中的错误,使程序正常运行,并且输出以下结果: (4,5) 7,8 (4,8) 注意:错误的语句在/*error*的下面,修改该语句即可。 #includeiostream.h class CObj0 public: CObj0(int i,int j) x=i; y=j; /*error* virtual void move(int a;int b) x+=a; y+=b; void print() cout “ (“ x “,“ y “)“ endl; publ

8、ic: int x,y; ; class CObj1: public CObj0 public: /*error* CObj1(int i,int j,int k):(i,j) m=k; n=l; void print() cout m “,“ n endl; void func() move (3,5); void display() /*error* print(); private: int m,n; ; void main() CObj0 obj (4,5); obj.print(); CObj1 obj1(1,3,7,8); obj1.func(); obj1.print(); ob

9、j1.display(); (分数:30.00)_正确答案:()解析:(1)virtual void move(int a,int b) (2)CObj1(int i,int j,int k,int 1):CObj0(i,j) (3)CObj0:print(); 答案考生文件夹 解析 程序中定义了 CObj0 和 CObj1 两个类,CObj1 公有派生于 CObj0,CObj0 有两个public 成员变量 x 和 y,CObj1 有 2 个 private 成员变量 m 和 n,CObj0 的 print 函数打印 x 和 y 的值,CObj1 的 print 函数打印 m 和 n 的值,

10、display 函数调用基类的 print 函数打印 CObj1 的 x 和 y 的值。 (1)编译程序可知第 1 标识下有错误,此处是声明虚函数,虚函数的声明方式为:virtual类型说明符函数名(参数表),参数表中各参数之间应该用“,”隔开,因此第 1 个标识下应改为“virtual void move(int a,int b)”。 (2)在主函数里“CObj1 obji(1,3,7,8);”,可知构造函数 CObj1()有四个参数,完成变量 m、n、x 和 y的初始化,k 和 1 赋值给 m 和 n,i 和 j 赋值给 x 和 y,x 和 y 的初始化可通过基类构造函数来完成对 x 和y

11、 的初始化,第 2 个标识下应改为 CObj1(int i,intj,int k,int 1):CObj0(i,j)。 (3)由程序运行结果可知标识 3 下调用的是基类的 print()函数,而“print();”是调用的派生类的print()函数,因此此时只能通过类名来直接调用 print()函数,即第 3 个标识下应改为“CObj0:print();”。二、程序填空题(总题数:1,分数:40.00)2.使用 VC6 打开 下的源程序文件 modi2.cpp。阅读下列函数说明和代码。函数 sort(int int y=13; int z=-3; sort(x,y,z); cout x “,“

12、 y “,“ z endl; return 0; (分数:40.00)_正确答案:()解析:int t; if(mn) t=m;m=n;n=t;)/*交换 x,y 的值*/ if(ml) t=m;m=l;l=t;)/*交换 x,z 的值*/ if(nl) t=n;n=l;l=t;/*交换 z,y 的值*/ 答案考生文件夹 解析 sort 函数实现 3 个参数的从大到小的排序,可以采用很多方法来排序,比如选择法排序、冒泡法排序等,这里要求采用比较的方法来实现排序,由于需要排序的数据较少,只有 3 个,逐个比较就可以找到最大最值小进行排序。 (1)由审题分析可知,三次比较便可将 m、n、l 排序。

13、 (2)在实现时,先将 m 与 n 进行比较,如果 mn 则将 m 与 n 的值进行交换,然后再用 m 与 l 进行比较,如果 ml 则将 m 与 l 的值进行交换,这样能使 m 最大。然后再将 n 与 l 进行比较,若 nl 则将 n 与 l 的值互换,互换后则 l 最小,这样就得到 m 最大,l 最小的排序结果。 (3)在 sort 函数内用三个 if 比较即可,条件成立则进行交换。三、程序设计题(总题数:1,分数:30.00)3.使用 VC6 打开 下的源程序文件 modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能: (1)定义类 CPoint

14、 的带有两个参数的构造函数,两个变量为 x、y 都为 int 型,且缺省值为 0。请在注释/*1*后添加适当的语句。 (2)完成类 CRectangle 的构造函数,给 point1 和 point2 进行赋值。请在注释/*2*后添加适当的语句。 (3)完成类 CRectangle 的函数 GetArea(),用来计算矩形面积。请在注释/*3*后添加适当的语句。 (4)定义 CRectangle 类,拥有两个私有对象 point1 和 point2,类型为 Point,请在注释/*4*料后添加适当的语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。 #includeiostr

15、eam.h #include cmath class CPoint public: /*1* x=i; y=j; int GetX() return x; int GetY() return y; private: int x,y; ; class CRectangle public: /*2* int GetArea() /*3* in theight=point1.GetY() -point2.GetY(); return (width*height)? width*height: -width*height; int GetGirth() int width=abs(point1.Get

16、X-point2.GetX(); int height=abs(point1.GetY()-point2.GetY(); return (2*(width+height); private: /*4* CPoint point2; ; int main() CRectangle rect(5,2,13,18); cout rect.GetArea() endl; cout rect.GetGirth() endl; return 0; (分数:30.00)_正确答案:()解析:(1)添加语句:CPoint(int i=0,int j=0) (2)添加语句:CRectangle(int top,

17、int left, int right,int bottom):point1(top,left),point2 (right,bottom) (3)添加语句:int width=point1.GetX()-point2.GetX(); (4)添加语句:CPoint point1; 答案考生文件夹 解析 程序中定义了 CPoint 和 CRectangle 两个类,分别表示点坐标类和矩形类,点坐标类有 2 个私有成员变量 x 和 y 表示坐标值,矩形类有 2 个 CPoint 成员。函数 GetArea()用来计算矩形面积,可由矩形的长和宽计算得到,同样 GetGirth()函数返回矩形的周长也

18、可由长和宽得到。主函数内定义一个 CRectangle 对象,分别调用 GetArea()和 GetGirth()计算面积和周长,然后打印计算结果。 (1)在第 1 个标识下添加构造函数定义,该构造带有两个参数 x 和 y 的构造函数,x、y 都为 int 型,缺省值为 0,因此第 1 个标识下应添加 CPoint(int i=0,int j=0)。 (2)第 2 个标识下通过 Cpoint 类的构造函数来完成 Crectangle 类成员的初始化,在函数体内没有任何函数语句,因此其初始化过程是在初始化列表里完成的,通过调用基类的构造函数来实现两个私有对象point1 和 point2 的初始

19、化,故第 2 个标识下应添加 CRectangle(int top,int left,int right,int bottom):point1(top,left),point2(right,boRom)。 (3)面积为矩形的长宽之积,因此先计算矩形的长和宽,可由两个 Cpoint 对象的 X 坐标相减计算得到,CPoint 对象的 x 坐标为私有成员,只能通过公有接口函数调用获得,因此第 3 个标识下为“int width=point1.GetX()-point2.GetX();”。 (4)Crectangle 类的成员变量为两个 Cpoint 对象成员 point1 和 pomt2,第 4 个标识下补充 point1 的定义,故第 4 个标识下应添加“CPoint point1;”。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1