您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > C++期末考试试卷及参考答案
本试卷共8页本页为第1页考试科目面向对象程序(C++)考试成绩考试对象XX计本1、2、3班一、是非题(每小题1.5分,共15分)说明:判断各小题说法的正确性,在下面表格中对应的题号下填入是非选择,若正确,则打钩(√);否则,打叉(×)。题号12345678910是/否1.说明函数原型时不需要指明每个函数参数的名字,只需要说明每个参数的类型和返回值类型就可以了。2.函数定义中的形参的作用域是该函数的函数体。3.用new动态申请的内存空间,必须用delete来释放。4.构造函数和析构函数都可以声明为虚函数。5.在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。6.类的静态数据成员需要在定义每个类的对象时进行初始化。7.使用关键字class定义的类中缺省的访问权限是私有(private)的。8.在基类中被说明为虚函数的类的成员函数必须在每个派生类中说明为虚函数,才能具有多态的特征。9.C++程序中,程序将流对象看作是文件的化身。10.如果程序中有多处要抛掷异常,应该用不同的操作数类型来相互区别,操作数的值不能用来区别不同的异常。二、填空题(每小题1.5分,共15分)1.变量名是变量的标识,由组成,而且必须以开头。2.有了函数原型,函数的作用域就不是从开始,而是从开始。3.获取一个变量的地址所采用的操作符是。4.使用const语句定义一个标识符常量时,则必须对它同时进行。5.假定类AB中有一个公用属性的静态数据成员bb,在类外不通过对象名访问该成员bb的写法为。6.typedef语句的作用为。7.平时所提到的使用MFC编程,这里的MFC是的缩写。8.若要在程序文件中进行标准输入输出操作,则必须在开始的#include命令中使用头文件。9.C++中,若将操作符插入到输出流中,则以十六进制格式输出。10.C++程序中,异常处理程序的主要任务是。三、单选题(在备选答案中选出一个正确答案填入括号内,每小题2分,共20分)1.C++对C语言作了很多改进,下列描述中使得C语言发生质变,从面向过程变成了面向对象的是()。学院__________班级___________姓名___________学号____________——————————————装——————————订———————————————线—————————本试卷共8页本页为第2页A.增加了一些新的运算符B.允许函数重载,并允许设置缺省参数C.规定函数说明必须用原型D.引进了类和对象的概念2.当一个函数无返回值时,定义它的函数的类型是()。A.voidB.intC.无D.long3.下列不是构造函数特征的是()。A.构造函数的函数名与类名相同B.构造函数可以重载C.构造函数可以设置缺省参数D.构造函数必须指定返回类型4.关于成员函数特征的下列描述中,错误的是()。A.成员函数一定是内联函数B.成员函数可以重载C.成员函数可以设置缺省参数值D.成员函数可以是静态的5.关于new运算符的下列描述中,错误的是()。A.它可以用来动态创建对象和对象数组B.使用它创建的对象或对象数组可以使用运算符delete删除C.使用它创建对象时要调用构造函数D.使用它创建对象数组时必须指定初始值6.派生类的对象对它的基类成员中可以访问的是()。A.公有继承的公有成员B.公有继承的私有成员C.公有继承的保护成员D.私有继承的公有成员7.下列描述中,正确的是().A.虚函数是一个static类型的成员函数B.虚函数是一个非成员函数C.抽象类是指具有纯虚函数的类D.抽象类可以说明其对象8.假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为()。A.ABoperator+(AB&a,AB&b)B.ABoperator+(AB&a)C.operator+(ABa)D.AB&operator+()9.下列不属于VC消息映射内容的是()。A.通过将DECLARE_MESSAGE_MAP添加到类声明,声明消息映射B.改写MFC相关类的虚函数C.放置标识消息的宏来执行消息映射D.添加成员函数来处理消息10.下列关于VC++编程描述中,错误的是()。A.Windows是一个基于事件驱动、基于消息的操作系统。B.Windows程序始终是程序而不是操作系统决定何时调用哪个函数。C.对于使用VC向导生成的程序框架,我们也可以用手工的方式写出。D.MFC类库其实是对windowsAPI函数的封装。四、根据下面各小题题目要求进行简单回答(第1小题6分,第2小题3分,第3小题6分,共15分)(1)已知类B和类D,它们的类关系如下。请以类对象b1,d1和指针pb1为例简要说明C++赋值兼容规则。(本小题6分)classB{…};classD:pubicB本试卷共8页本页为第3页{…};Bb1,*pb1;Dd1;答:a)b)C)(2)下列的程序定义了一个交换两个浮点数的函数swap,并在主函数中调用这个函数进行两个浮点数的交换(本小题3分)voidswap(floata,floatb){floattemp=a;a=b;b=temp;}voidmain(){floata=1,b=2;swap(a,b);}错误为:改正方法为:(3)写出下面程序运行结果。(本小题6分)#includeiostream.hclassA{public:virtualvoidact1(){coutA::act1()called.endl;}voidact2(){act1();}};classB:publicA{public:voidact1(){coutB::act1()called.endl;}本试卷共8页本页为第4页};voidmain(){Aa,*p;Bb;p=&b;b.act1();p-act1();p-act2();}答:五、下面的程序共有17行,程序的每行前面加上了行号。程序中变量num、i、temp、对象cout和函数func()的作用域范围分别是什么?在程序的下面用行号来回答。(每小题1分,共10分)1.#includeiostream.h2.intnum;3.voidfunc();4.voidmain()5.{6.charname[20];7.inti;8.for(i=0;i20;i++)9.{10.chartemp;11.temp=name[i];本试卷共8页本页为第5页12.couttemp;13.}14.}15.voidfunc()16.{17.cout”Afunction!”;18.}回答:num的作用域为从第行到第行。i的作用域为从第行到第行。temp的作用域为从第行到第行。cout的作用域为从第行到第行。func的作用域为从第行到第行。六、程序回答题(每小题1分,共5分)说明:读懂程序,为便于提问,程序每行前面加有行号,请对所提的问题做出准确解答。1.#includeiostream.h2.intCircleArea()3.{4.double*pd=newdouble;5.if(!pd)6.{7.coutErrorMemoryAllocation!endl;8.return1;9.}10.double&rd=*pd;11.coutTheradiusis:;12.cinrd;13.coutTheAreaofCircleis:rd*rd*3.14endl;14.delete&rd;15.return0;16.}17.voidmain()18.{19.if(CircleArea())20.coutTheprogramnfailed!endl;21.else22.coutTheprogramnsuccessed!endl;23.}请写出下列问题答案:a)第4行起何作用?本试卷共8页本页为第6页答:b)第5-9行可否省去?并说明原因。答:c)第14行起何作用?答:d)此程序功能是什么?答:e)解释14行中&符号的意义?答:七、请完成下面2个运算符重载函数,并对程序最后一行分析错误原因并改正(本题运算符重载函数各3分,分析错误原因并改正4分,共10分)给定整数类:classInteger{public:voidSet(intii=0){i=ii;}Integeroperator+(intc);Integeroperator+(Integer&c);voidDisplay(){coutiendl;}private:inti;};请完成上面2个运算符重载函数,并以下面的主函数进行测试。voidmain(){IntegerA,B,C;A.Set(20);C.Set(10);B=A+4;B.Display();B=A+C;B.Display();B=4+A;//此行代码有误,请分析错误原因并改正}本试卷共8页本页为第7页八、编程题。声明一个shape抽象类,在此基础上派生出Rectangle和Circle类,二者都有GetArea()函数计算对象的面积,按下面的要求完成程序的编制工作。本试卷共8页本页为第8页(1)Rectangle类有m_Width,m_Height属性;(2)Circle类有m_Radius属性;(3)分别编写Rectangle类和Circle类带默认参数的构造函数;(4)编写主函数对Rectangle、Circle类进行测试,使它们以统一的操作界面输出面积;(提示:利用for循环进行输出)(5)回答将Shape类声明为抽象类的方法及意义。(每小题2分,本题共10分)答案和评分标准(A卷):本试卷共8页本页为第9页一、是非题(每小题1.5分,共15分)评分标准:选对者得1.5分,否则不得分题号12345678910对/错√√√×××√×√√二、填空题(每小题1.5分,共15分)评分标准:每题与参考答案相同者得1.5分,否则不得分。1、字母数字下划线,字母或下划线2、函数定义函数声明3、&4、初始化5、AB::bb6、将一个标识符声明成某个数据类型的别名7、MicrosoftFoundationClasses8、iostream.h9、hex10、允许用户排除环境错误,继续运行程序三、单选题(在备选答案中选出一个正确答案填入括号内,每小题2分,共20分)评分标准:选对者得2分,否则不得分。题号12345678910选项DADADACBBB四、根据下面各小题题目要求进行简单回答(第1小题6分,第2小题3分,第3小题6分,共15分)评分标准:每题与参考答案的叙述含义相同者得分,否则酌情给分。(1)a、派生类对象可以赋值给基类对象b1=d1;b、派生类的对象也可以初始化基类对象的引用B&bb=d1;c、派生类对象的地址也可以赋给指向基类的指针pb1=&d1;(2)错误为:voidswap(floata,floatb);改正方法为:voidswap(float&a,float&b);(3)运行结果为:B::act1()called.B::act1()called.B::act1()called.五、下面的程序共有17行,程序的每行前面加上了行号。程序中变量num、i、temp、对象cout和函数func()的作用域范围分别是什么?在程序的下面用行号来回答。(每小题1分,共10分)评分标准:答对者得1分,否则不得分。作用域范围分别为:num的作用域为从第2行到第18行。i的作用域为从第7行到第14行。temp的作用域为从第10行到第13行。本试卷共8页本页为第10页cout的作用域为从第1行到第18行。func的作用域为从第3行到第18行。六、程序回答题(每小题1分,共5分)评分标准:每题与参考答案的叙述含义相同者得分,否则酌情给分。1、动态分配一个double内存空间。2、不可以,此程序段主要用来防止不能分配内存空间。3、释放所分配的内存空间。4、计算圆面积。5、取地址。七、阅读下列程序,回答后面提出的问题。(本题10分)评分标准:见参考程序中的注释。(1)Intege
本文标题:C++期末考试试卷及参考答案
链接地址:https://www.777doc.com/doc-1500516 .html