您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > C++程序设计(高起专)
离线考核《C++程序设计(高起专)》满分100分一、判断题(请给正确的打“√”,错误的打“╳”并说明原因。每题4分,共20分。)1.静态的成员函数没有隐含的this指针,所以它们只能访问静态的数据成员。(√)2.通过类对象可以访问类中所有的成员。(╳)3.构造函数是可以被派生类继承的。(╳)4.构造函数和析构函数都可以是虚函数。(╳)5.只有类中全部函数都为纯虚函数时,该类才被称为抽象类。(╳)二、简答题(每小题5分,共20分。)1.什么是封装性?请举例说明。答:所谓数据的封装,就是将数据结构和作用于数据结构上的操作组成一个实体,数据的表示方式和对数据的操作细节被隐藏起来,用户通过操作接囗对数据进行操作。对于用户来说,只知道如何通过操作接口对该数据进行操作,而并不知道是如何操作的,也不知道数据是如何表示的这就是数据的封装。例如我们经常使用的手机,机壳将零件和线路封装了起来,我们在接打电话或收发短信时是通过手机面板上的按键(接口)。2.什么是函数重载和运算符重载?为什么要使用重载?答:(1)函数重载是指一个标识符可同时用于为多个函数命名;(2)运算符重载是指一个运算符可同时用于多种运算。也就是说,相同名字的函数或运算符在不同的场合可以表现出不同的行为。(3)使用重载的目的是为了更好地表达行为共享,可以使程序员在只知道操作的一般合义而不知道操作的具体细节的情况下能正确地对某个对象使用一个操作。另外,使用重载的直接益处是减少了程序员记忆操作名字的负担。3.拷贝构造函数在哪几种情况下被调用?,答:(1)用一个对象初始化另一个对象时;(2)当用对象作为函数参数传递时;(3)当程序中需要创建临时对象时(如函数返回对象时)。4.什么是类?什么是对象?对象与类的关系是什么?答:(1)类是一组具有共同的属性特征和行为特征的对象的抽象;(2)对象就是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位,由一组属性和一组行为构成。(3)类和对象之间的关系是抽象和具体的关系,类是对多个对象进行抽象的结果,对象是类的具体实现。三、程序分析题(每小题10分,共40分。)1.指出下面程序中的1处错误,并说明原因。1234567#includeiostream.hclassPoint{intX,Y;public:Point(){X=0;Y=0;}Point(intx=0,inty=0){X=x;Y=y;}voiddisplay(){coutX,Yendl;}};voidmain(){Pointp;p.display();}答:错误位置:Pointp;错误原因:当生成无参对象时,缺省参数的构造函数和默认参数的构造函数会产生混淆。2.指出下面程序中的1处错误,并说明原因。#includeiostream.hclassCTest{public:CTest(){x=20;}private:intx;friendvoidfriend_f(CTestfri);};voidfriend_f(CTestfri){fri.x=55;}voidmain(){CTestc1,c2;c1.friend_f(c2);}答:错误位置:c1.friend_f(c2);错误原因:friend_f()是类的友元函数,应直接调用,而不能用调用对象成员的方式3.写出下面程序的运行结果。#includeiostream.hclassTest{private:intnum;public:Test(intn=0){num=n;num++;}~Test(){cout”Destructorisactive,number=”numendl;}};voidmain(){Testx[2];cout”Exitingmain”endl;}答:ExitingmainDestructorisactive,number=1Destructorisactive,number=14.写出下面程序的运行结果。#includeiostream.hclassTest{private:staticintval;inta;public:staticintfunc();staticvoidsfunc(Test&r);};intTest::val=20;intTest::func(){val--;returnval;}voidTest::sfunc(Test&r){r.a=25;coutResult3=r.a;}voidmain(){coutResultl=Test::func()endl;Testa;coutResult2=a.func()endl;Test::sfunc(a);}答:Resultl=19Result2=18Result3=25四、完成程序题(每小题10分,共20分。)1.请在横线处填上适当的字句,以使程序完整。#includeiostream.h#include″math.h″classPoint{private:doubleX,Y;①____friendclass__Line;public:Point(doublex=0,doubley=0){X=x;Y=y;}Point(Point&p){X=p.X;Y=p.Y;}};classLine{private:Pointp1,p2;public:Line(Point&xp1,Point&xp2):②_p1(xp1),p2(xp2)_____{}doubleGetLength();};doubleLine::GetLength(){doubledx=p2.X-p1.X;doubledy=p2.Y-p1.Y;returnsqrt(dx*dx+dy*dy);}voidmain(){Pointp1,p2(3,4);LineL1(p1,p2);coutL1.GetLength()endl;}2.设计一个立方体类Box,使它能计算并输出立方体的体积和表面积。要求:Box类包含三个私有数据成员:a(立方体边长)、volume(体积)和area(表面积);Box类包含有构造函数及seta()(设置立方体边长)、getvolume()(计算体积)、getarea()(计算表面积)和disp()(输出体积和表面积)。答:#includeiostream.hclassBox{floata;floatvolume;floatarea;public:Box(){}Box(floatr){a=r;}voidseta(floatr){a=r;}voidgetvolume(){volume=a*a*a;}voidgetarea(){area=6*a*a;}voiddisp(){cout体积:volume,表面积:areaendl;}};voidmain(){Boxobj1(4.5),obj2;obj2.seta(6.4);obj1.getvolume();obj1.getarea();coutobj1=;obj1.disp();obj2.getvolume();obj2.getarea();coutobj2=;obj2.disp();}
本文标题:C++程序设计(高起专)
链接地址:https://www.777doc.com/doc-4838312 .html