《答案-东师2020年4月《《C++程序设计(高起专)》(离线考核)》由会员分享,可在线阅读,更多相关《答案-东师2020年4月《《C++程序设计(高起专)》(离线考核)(10页珍藏版)》请在金锄头文库上搜索。
1、离线考核C+程序设计(高起专)满分100分 完整答案附后一、判断题(请给正确的打“”,错误的打 “”并说明原因。每题4分,共20分。)12345671. 静态的成员函数没有隐含的this指针 ,所以它们只能访问静态的数据成员。( )2. 通过类对象可以访问类中所有的成员。( )3. 构造函数是可以被派生类继承的。( )4. 构造函数和析构函数都可以是虚函数。( )5. 只有类中全部函数都为纯虚函数时,该类才被称为抽象类。( )二、简答题(每小题5分,共20分。)1. 什么是封装性?请举例说明。2. 什么是函数重载和运算符重载?为什么要使用重载?3. 拷贝构造函数在哪几种情况下被调用?4. 什么
2、是类?什么是对象?对象与类的关系是什么?三、程序分析题(每小题10分,共40分。)1. 指出下面程序中的1处错误,并说明原因。#include class Point int X,Y; public: Point( )X=0;Y=0; Point(int x=0,int y=0)X=x;Y=y; void display( )coutX,Yendl; ;void main() Point p; p.display();答:2. 指出下面程序中的1处错误,并说明原因。#includeclass CTestpublic: CTest() x=20; private: int x; friend v
3、oid friend_f(CTest fri);void friend_f(CTest fri) fri.x=55; void main() CTest c1,c2; c1.friend_f(c2);答:3. 写出下面程序的运行结果。#includeclass Test private:int num;public:Test(int n=0)num=n;num+;Test( )cout”Destructor is active,number=”numendl;void main( )Test x2;cout”Exiting main”endl;答:4. 写出下面程序的运行结果。#include
4、class Testprivate: static int val; int a;public: static int func(); static void sfunc(Test &r);int Test:val=20;int Test:func() val-; return val; void Test:sfunc(Test &r) r.a=25; coutResult3=r.a; void main() coutResultl=Test:func()endl; Test a; coutResult2=a.func()endl; Test:sfunc(a);答:四、完成程序题(每小题10分
5、,共20分。)1. 请在横线处填上适当的字句,以使程序完整。#include #include math.hclass Point private:double X,Y;_ _Line;public:Point(double x=0, double y=0) X=x; Y=y; Point(Point &p) X=p.X; Y=p.Y; ;class Lineprivate: Point p1,p2;public: Line(Point &xp1, Point &xp2): _ _ double GetLength();double Line:GetLength() double dx=p2.
6、X-p1.X; double dy=p2.Y-p1.Y;return sqrt(dx*dx + dy*dy);void main() Point p1,p2(3,4); Line L1(p1,p2); coutL1.GetLength()endl;2. 设计一个立方体类Box,使它能计算并输出立方体的体积和表面积。 要求: Box类包含三个私有数据成员:a(立方体边长)、volume(体积)和area(表面积);Box类包含有构造函数及seta()(设置立方体边长)、getvolume()(计算体积)、getarea()(计算表面积)和disp()(输出体积和表面积)。温馨提示:完整答案附后
7、复制下一页的答案到你的原卷答案区:离线考核C+程序设计(高起专)满分100分一、判断题(请给正确的打“”,错误的打 “”并说明原因。每题4分,共20分。)12345671、静态的成员函数没有隐含的this指针 ,所以它们只能访问静态的数据成员。( )2、通过类对象可以访问类中所有的成员。( )3、构造函数是可以被派生类继承的。( )4、构造函数和析构函数都可以是虚函数。( )5、只有类中全部函数都为纯虚函数时,该类才被称为抽象类。( )二、简答题(每小题5分,共20分。)1、什么是封装性?请举例说明。 答:所谓数据的封装,就是将数据结构和作用于数据结构上的操作组成一个实体,数据的表示方式和对数
8、据的操作细节被隐藏起来,用户通过操作接囗对数据进行操作。对于用户来说,只知道如何通过操作接口对该数据进行操作,而并不知道是如何操作的,也不知道数据是如何表示的这就是数据的封装。例如我们经常使用的手机,机壳将零件和线路封装了起来,我们在接打电话或收发短信时是通过手机面板上的按键(接口)。2、什么是函数重载和运算符重载?为什么要使用重载? 答:(1)函数重载是指一个标识符可同时用于为多个函数命名;(2)运算符重载是指一个运算符可同时用于多种运算。也就是说,相同名字的函数或运算符在不同的场合可以表现出不同的行为。(3)使用重载的目的是为了更好地表达行为共享,可以使程序员在只知道操作的一般合义而不知道
9、操作的具体细节的情况下能正确地对某个对象使用一个操作。另外,使用重载的直接益处是减少了程序员记忆操作名字的负担。4. 拷贝构造函数在哪几种情况下被调用?,答:(1)用一个对象初始化另一个对象时;(2)当用对象作为函数参数传递时;(3)当程序中需要创建临时对象时(如函数返回对象时)。3、 什么是类?什么是对象?对象与类的关系是什么? 答:(1) 类是一组具有共同的属性特征和行为特征的对象的抽象;(2) 对象就是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位,由一组属性和一组行为构成。(3) 类和对象之间的关系是抽象和具体的关系,类是对多个对象进行抽象的结果,对象是类的具体实现。三、
10、程序分析题(每小题10分,共40分。)1. 指出下面程序中的1处错误,并说明原因。#include class Point int X,Y; public: Point( )X=0;Y=0; Point(int x=0,int y=0)X=x;Y=y; void display( )coutX,Yendl; ;void main() Point p; p.display();答:错误位置:Pointp;错误原因:当生成无参对象时,缺省参数的构造函数和默认参数的构造函数会产生混淆。2. 指出下面程序中的1处错误,并说明原因。#includeclass CTestpublic: CTest() x
11、=20; private: int x; friend void friend_f(CTest fri);void friend_f(CTest fri) fri.x=55; void main() CTest c1,c2; c1.friend_f(c2);答:错误位置:c1.friend_f(c2);错误原因:friend_f()是类的友元函数,应直接调用,而不能用调用对象成员的方式3. 写出下面程序的运行结果。#includeclass Test private:int num;public:Test(int n=0)num=n;num+;Test( )cout”Destructor is
12、 active,number=”numendl;void main( )Test x2;cout”Exiting main”endl;答:ExitingmainDestructorisactive,number=1Destructorisactive,number=14. 写出下面程序的运行结果。#includeclass Testprivate: static int val; int a;public: static int func(); static void sfunc(Test &r);int Test:val=20;int Test:func() val-; return val; void Test:sfunc(Test &r) r.a=25; coutResult3=r.a; void main() coutResultl=Test:func()endl; Test a; coutResult2=a.func()endl; Test:sfunc(a);答:Resultl=19Result2=18Result3=25四、完成程序题(每小题10分,共20分。)1. 请在横线处填上适当的字句,以使程序完整。#i