您好,欢迎访问三七文档
当前位置:首页 > 高等教育 > 习题/试题 > 《C++程序设计》期末考试及答案
第1页共3页(C++程序设计)《C++程序设计》期末考试试卷考生注意:1.本试卷共有四道大题,满分100分。2.考试时间90分钟。3.卷面整洁,字迹工整。4.填写内容不得超出密封线。总分题号一二三四核分人题分30212425复查人得分一、单项选择题(每小题2分,共30分)1.C++是一种()的程序设计语言。A.面向对象B.即可面向过程,又可面向对象C.面向过程D.面向系统2.在下面有关析构函数特征的描述中,正确的是()。A.一个类中可以定义多个析构函数B.析构函数名与类名完全相同C.析构函数不能指定返回类型D.析构函数可以有一个或多个参数3.下面对于友元函数描述正确的是()。A.友元函数的实现必须在类的内部定义B.友元函数是类的成员函数C.友元函数破坏了类的封装性和隐藏性D.友元函数不能访问类的私有成员4.下面描述中,表达错误的是()。A.公有继承时基类中的public成员在派生类中仍是public的B.公有继承时基类中的private成员在派生类中仍是private的C.公有继承时基类中的protected成员在派生类中仍是protected的D.保护继承时基类中的public成员在派生类中是private的5.所谓多态性是指()A.不同的对象调用不同名称的函数B.不同的对象调用相同名称的函数C.一个对象调用不同名称的函数D.一个对象调用不同名称的对象6.重载赋值操作符时,应声明为()函数。A.友元B.虚C.成员D.多态7.下列对模板的声明错误的是()。A.templateclassT1,typenameT2B.templateclassT1,T2C.templatetypenameTD.templateclassT1,classT2,classT38.下列类中()不是输入流类istream的派生类。A.ifstreamB.istrstreamC.iostreamD.ofstream9.()不是构造函数的特征。A.构造函数的函数名与类名相同B构造函数可以重载C.构造函数可以设置缺省参数D构造函数必须指定类型说明10.下列语句中错误的是()。A.int*p=newint(10);B.int*p=newint[10];C.int*p=newint;int*p=newint[40](0)11.下列关于虚基类的描述,错误的是()A.设置虚基类的目的是为了消除二义性B.虚基类的构造函数在非虚基类之后调用C.若同一层中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用D.若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数12.已知:print()函数是一个类的常成员函数,它无返回值,下列表示中,()是正确的。A.voidprint()const;B.constvoidprint();C.voidconstprint();D.voidprint(const);13.在下面有关静态成员函数的描述中,正确的是()。A.在静态成员函数中可以使用this指针B.在建立对象前,就可以为静态数据成员赋值C.静态成员函数在类外定义时,要用static前缀D.静态成员函数只能在类外定义14.在下列关键字中,用于说明类中公有成员的是()。A.publicB.privateC.protectedD.friend15.以下有关继承的叙述正确的是()。A.构造函数和析构函数都能被继承B.派生类是基类的组合C.派生类对象除了能访问自己的成员以外,不能访问基类中的所有成员D.基类的公有成员一定能被派生类的对象访问二、判断题(每题3分,共21分)1.静态的成员函数没有隐含的this指针,所以它们只能访问静态的数据成员。()2.通过类对象可以访问类中所有的成员。()3.构造函数是可以被派生类继承的。()4.构造函数和析构函数都可以是虚函数。()5.只有类中全部函数都为纯虚函数时,该类才被称为抽象类。()6.对于同一个运算符来说,重载的运算符的优先级比未重载的运算符的优先级高。()7.一个类的友元一定是另一个类的成员函数。()三、简答题(每小题6分,共24分)1.什么是封装性?请举例说明。2.什么是函数重载和运算符重载?为什么要使用重载?3.拷贝构造函数在哪几种情况下被调用?4.什么是类?什么是对象?对象与类的关系是什么?密封线函授站:姓名:专业:学号:座位号:第2页共3页(C++程序设计)四、程序分析题(前三小题各6分,第五题7分,共25分)1.指出下面程序中的1处错误,并说明原因。#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();}答: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);}答:3.写出下面程序的运行结果。#includeiostream.hclassTest{private:intnum;public:Test(intn=0){num=n;num++;}~Test(){cout”Destructorisactive,number=”numendl;}};voidmain(){Testx[2];cout”Exitingmain”endl;}答:4.写出下面程序的运行结果。#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);}答:第3页共3页(C++程序设计)C++程序设计期末考试答案一、选择题(15×2)1.B2.C3.C4.D5.B6.C7.B8.D9.D10.D11.B12.A13.B14.A15.B二、判断题(7×2)1.√2.×3.×4.×5.×6.×7.×三、简答题(4×4)1.解答要点:所谓数据的封装,就是将数据结构和作用于数据结构上的操作组成一个实体,数据的表示方式和对数据的操作细节被隐藏起来,用户通过操作接口对数据进行操作。对于用户来说,只知道如何通过操作接口对该数据进行操作,而并不知道是如何操作的,也不知道数据是如何表示的,这就是数据的封装。例如我们经常使用的手机,机壳将零件和线路封装了起来,我们在接打电话或收发短信时是通过手机面板上的按键(接口)。2.解答要点:(1)函数重载是指一个标识符可同时用于为多个函数命名;(2)运算符重载是指一个运算符可同时用于多种运算。也就是说,相同名字的函数或运算符在不同的场合可以表现出不同的行为。(3)使用重载的目的是为了更好地表达行为共享,可以使程序员在只知道操作的一般含义而不知道操作的具体细节的情况下能正确地对某个对象使用一个操作。另外,使用重载的直接益处是减少了程序员记忆操作名字的负担3.解答要点:(1)用一个对象初始化另一个对象时;(2)当用对象作为函数参数传递时;(3)当程序中需要创建临时对象时(如函数返回对象时)。4.解答要点:(1)类是一组具有共同的属性特征和行为特征的对象的抽象;(2)对象就是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位,由一组属性和一组行为构成。(3)类和对象之间的关系是抽象和具体的关系,类是对多个对象进行抽象的结果,对象是类的具体实现。四、程序分析题(4×6)1.错误位置:Pointp;错误原因:当生成无参对象时,缺省参数的构造函数和默认参数的构造函数会产生混淆。2.错误位置:c1.friend_f(c2);错误原因:friend_f()是类的友元函数,应直接调用,而不能用调用对象成员的方式3.ExitingmainDestructorisactive,number=1Destructorisactive,number=14.Resultl=19Result2=18Result3=25
本文标题:《C++程序设计》期末考试及答案
链接地址:https://www.777doc.com/doc-1871885 .html