版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
大学C++期末考试题库及答案一、单项选择题(共20小题,每小题2分,总计40分)1.C++语言相对于C语言新增的核心编程范式支持是()A.结构化程序设计B.面向对象程序设计C.指针直接内存操作D.编译预处理机制2.下列选项中,符合C++标识符命名规则的合法用户标识符是()A.2abcB.a-bC._numD.int3.下列C++运算符中,优先级最高的是()A.赋值运算符=B.逻辑与运算符&&C.类成员访问运算符.D.三目条件运算符?:4.下列关于C++引用的描述中,错误的是()A.引用在定义时必须完成初始化B.引用初始化后不能再绑定到其他对象C.引用可以为空值,不指向任何有效对象D.引用是其绑定变量的别名,对引用的操作等价于对原变量的操作5.若有语句constint*p;以下对该语句的描述正确的是()A.p是指向常量的指针,不能通过p修改其所指向的整型变量的值B.p是指针常量,p本身的存储地址不能修改C.p和p指向的整型变量的值均不能修改D.以上描述均不正确6.C++中使用class关键字定义类时,类成员的默认访问权限是()A.publicB.privateC.protectedD.friend7.下列关于类构造函数的描述中,错误的是()A.构造函数支持重载,可以定义多个参数不同的构造函数B.构造函数可以声明返回值类型,通常返回voidC.构造函数在对象创建时由编译器自动调用D.构造函数的参数可以设置默认值8.若在函数栈上按顺序定义三个局部对象A、B、C,当函数执行结束对象析构时,析构函数的调用顺序是()A.A→B→CB.C→B→AC.B→A→CD.无固定顺序,随机调用9.采用公有继承方式时,基类的protected成员在派生类中的访问权限是()A.publicB.privateC.protectedD.不可直接访问10.C++中实现运行时多态(动态绑定)的核心条件是()A.函数重载B.基类声明虚函数,通过基类指针或引用指向派生类对象调用重写函数C.运算符重载D.函数模板11.下列纯虚函数的声明语句中,语法正确的是()A.virtualvoidfunc()=0;B.voidfunc()=0;C.virtualvoidfunc(){};D.virtualvoidfunc()0;12.下列关于C++友元机制的描述中,正确的是()A.友元函数是类的固有成员函数B.友元关系不具有继承性和传递性C.友元关系是双向的,若类A是类B的友元,则类B自动成为类A的友元D.友元函数只能访问类的公有成员,不能访问私有、保护成员13.下列关于new/delete动态内存管理的描述中,错误的是()A.使用new创建类对象时,会自动调用类的构造函数B.使用delete释放类对象时,会自动调用类的析构函数C.使用new[]动态分配的对象数组,可以使用delete而非delete[]进行释放D.new运算符返回的指针类型与分配的对象类型严格匹配14.下列运算符中,C++语法不允许重载的是()A.算术运算符+B.下标运算符[]C.域解析运算符::D.函数调用运算符()15.下列函数模板的声明开头中,语法正确的是()A.template<classT>B.templateTC.template<T>D.class<templateT>16.C++标准库中,对应标准输入设备的流对象是()A.cinB.coutC.cerrD.clog17.下列关于C++类成员函数中this指针的描述,正确的是()A.this指针是指向当前调用成员函数的对象的常指针,指针本身的值不可修改B.this指针需要用户在类中显式定义才能使用C.类的静态成员函数中同样存在this指针D.this指针是指向类本身的指针,而非指向类的实例对象18.下列关于类静态数据成员的描述中,正确的是()A.静态数据成员属于整个类,被类的所有对象共享B.静态数据成员必须在类定义体内完成初始化C.静态数据成员只能被类的静态成员函数访问D.静态数据成员的生命周期与类的单个对象生命周期一致19.下列场景中,不会触发类拷贝构造函数调用的是()A.类对象作为函数参数,以值传递方式传入函数B.类对象作为函数返回值,以值传递方式从函数返回C.使用一个已存在的同类型对象初始化一个新创建的同类型对象D.将一个已存在的对象通过赋值运算符赋值给另一个同类型的已初始化对象20.C++异常处理机制中,用于主动抛出异常对象的关键字是()A.tryB.catchC.throwD.finally【单项选择题参考答案】1.B2.C3.C4.C5.A6.B7.B8.B9.C10.B11.A12.B13.C14.C15.A16.A17.A18.A19.D20.C二、填空题(共10小题,每小题2分,总计20分)1.C++面向对象程序设计的三大核心特性为______、继承、______。2.已知变量定义inta=5,b=2;,则算术表达式a/b+(double)a/b的运算结果为______。3.C++类的成员访问权限修饰符包括public、______、protected三类,其中______权限的成员只能被类自身的成员函数和友元访问。4.采用公有继承方式时,基类的公有成员在派生类中的访问权限为______,基类的私有成员在派生类中______(填“可直接访问”或“不可直接访问”)。5.C++中实现运行时多态的两个必要条件是:一是基类中需将对应函数声明为______函数,二是通过基类的______或引用访问派生类重写的函数。6.使用new运算符动态分配包含10个int类型元素的一维数组,返回的指针赋值给int*p,对应的语句为______;释放该数组空间时需使用的配套语句为______。7.C++中类的构造函数名字与______完全相同,析构函数需要在名字前添加______符号以和构造函数区分。8.拷贝构造函数的形参必须是______,如果用户未显式定义拷贝构造函数,编译器会自动生成一个完成______(填“浅拷贝”或“深拷贝”)的默认拷贝构造函数。9.如果一个类中定义了至少一个纯虚函数,该类被称为______,该类______(填“能”或“不能”)直接实例化创建对象。10.C++异常处理机制中,______代码块用于监控可能抛出异常的代码段,______代码块用于捕获并处理对应类型的异常。【填空题参考答案】1.封装、多态2.4.53.private、private4.public、不可直接访问5.虚、指针6.int*p=newint[10];、delete[]p;7.类名、~(波浪号)8.本类对象的引用、浅拷贝9.抽象类、不能10.try、catch三、程序阅读题(共4小题,每小题5分,总计20分。请阅读下列代码,写出程序运行后的标准输出结果,注意输出换行与格式)1.代码如下:usingnamespacestd;classTest{private:intx;public:Test(inta){x=a;cout<<"构造"<<x<<endl;}~Test(){cout<<"析构"<<x<<endl;}voidshow(){cout<<x<<endl;}};intmain(){Testt1(1);Testt2(2);t1.show();return0;}2.代码如下:usingnamespacestd;classBase{public:virtualvoidfunc(){cout<<"Base::func()"<<endl;}voidshow(){cout<<"Base::show()"<<endl;}};classDerived:publicBase{public:voidfunc(){cout<<"Derived::func()"<<endl;}voidshow(){cout<<"Derived::show()"<<endl;}};intmain(){Base*p=newDerived();p->func();p->show();deletep;return0;}3.代码如下:usingnamespacestd;voidswap(int&a,int&b){inttemp=a;a=b;b=temp;}intmain(){intx=3,y=5;swap(x,y);cout<<"x="<<x<<",y="<<y<<endl;return0;}4.代码如下:usingnamespacestd;classCounter{private:staticintcount;public:Counter(){count++;}~Counter(){count--;}staticintgetCount(){returncount;}};intCounter::count=0;Counterg_c;intmain(){cout<<Counter::getCount()<<endl;Counterc1,c2;cout<<Counter::getCount()<<endl;{Counterc3;cout<<Counter::getCount()<<endl;}cout<<Counter::getCount()<<endl;return0;}【程序阅读题参考答案】1.输出结果按顺序为:构造1构造21析构2析构1(评分说明:输出顺序错误、遗漏换行、内容写错均酌情扣分,全对得5分)2.输出结果按顺序为:Derived::func()Base::show()(评分说明:需正确区分虚函数的动态绑定与普通成员函数的静态绑定,全对得5分)3.输出结果为:x=5,y=3(评分说明:需正确理解引用参数传递的特性,即形参是实参的别名,函数内修改会影响实参,全对得5分)4.输出结果按顺序为:1343(评分说明:需掌握静态成员的类共享特性、全局对象的构造时机、局部块对象的生命周期,全对得5分)四、程序编写题(共2小题,每小题10分,总计20分。请按照题目要求编写符合C++语法规范的代码,要求逻辑正确、可读性强、无语法错误)1.设计一个学生类Student,满足以下要求:(1)私有数据成员包含:学号intid、姓名charname[20]、C++课程成绩doublescore;(2)公有成员函数包含:带默认参数的构造函数,默认值为学号0、姓名为空串、成绩0.0;成员函数voidsetInfo(inti,constchar*n,doubles),用于为三个私有成员赋值;成员函数voidshow(),用于按格式“学号:XX,姓名:XX,C++成绩:XX”输出学生全部信息;(3)编写main函数测试类功能:创建第一个学生对象,通过构造函数初始化学号2024001、姓名“张三”、成绩92.5;创建第二个学生对象,通过setInfo函数设置学号2024002、姓名“李四”、成绩88.0;分别调用两个对象的show函数输出信息。【参考代码与评分标准】usingnamespacestd;classStudent{private:intid;charname[20];doublescore;public://带默认参数的构造函数(2分)Student(inti=0,constchar*n="",doubles=0.0){id=i;strcpy(name,n);score=s;}//setInfo成员函数(2分)voidsetInfo(inti,constchar*n,doubles){id=i;strcpy(name,n);score=s;}//show成员函数(2分)voidshow(){cout<<"学号:"<<id<<",姓名:"<<name<<",C++成绩:"<<score<<endl;}};intmain(){//对象创建与功能测试(4分)Students1(2024001,"张三",92.5);Students2;s2.setInfo(2024002,"李四",88.0);s1.show();s2.show();return0;}评分说明:私有成员封装正确得2分,构造函数实现正确得2分,setInfo函数正确处理字符串拷贝、成员赋值得2分,show函数输出格式正确得2分,main函数对象创建、函数调用逻辑正确得2分,总分10分;若存在内存操作错误、语法错误、输出格式不符,酌情扣分。2.利用抽象类与多态机制设计形状计算程序,满足以下要求:(1)设计抽象基类Shape,包含两个纯虚函数:doublegetArea()用于返回形状面积,voidshowInfo()用于输出形状信息;为基类定义虚析构函数,避免派生类对象释放时的内存泄漏;(2)从Shape公有派生出矩形类Rectangle,私有数据成员为宽度doublewidth、高度doubleheight;定义带参数的构造函数初始化宽和高;重写getArea()函数,返回值为宽度×高度;重写showInfo()函数,按格式“矩形,宽:XX,高:XX,面积:XX”输出信息;(3)从Shape公有派生出圆形类Circle,私有数据成员为半径doubler;定义带参数的构造函数初始化半径;重写getArea()函数,返回值为π×r²(π取值3.14159);重写showInfo()函数,按格式“圆形,半径:XX,面积:XX”输出信息;(4)编写main函数测试多态特性:定义Shape类型的基类指针,首先指向一个宽3.5、高2的矩形对象,调用showInfo输出信息并释放对象;再指向一个半径为2.5的圆形对象,调用showInfo输出信息并释放对象。【参考代码与评分标准】usingnamespacestd;//抽象基类定义(3分)classShape{public:virtualdoublegetArea()=0;virtualvoidshowInfo()=0;virtual~Shape(){}//虚析构函数};//矩形类实现(3分)classRectangle:publicShape{private:doublewidth,height;public:Rectangle(doublew,doubleh):width(w),height(h){}doublegetArea()override{returnwidth*height;}voidshowInfo()override{cout<<"矩形,宽:"<<width<<",高:"<<height<<",面积:"<<get
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基于时间戳的数据同步技术实现与应用研究
- 智能家居调试工程师岗位技能考试试卷及答案
- 电气运行操作危险点预控措施
- T∕CECS 465-2017 既有建筑绿色改造技术规程
- 简约专业护士医疗医务护理模板
- 2026年药品不良反应数据收集与上报培训考试测试题库含答案
- 2026年检验科测试试题及答案
- 2026年药品拼箱培训试题及答案
- 2026年工会招聘笔试题型及答案
- 2026年护士急救药品知识试题及答案
- 矿山地质课件
- 感染性疾病科医生进修汇报
- 泥浆清运合同(2025版)
- 睿达杯二试试题和答案
- 再别康桥混声四部合唱谱
- 内部工作流程优化调研表
- 《四川省汉源县岩窝沟铅锌、磷矿勘探实施方案》评审意见书
- 高中技术苏教必修1课件51方案的构思方法――手机支架的设计和制作共18张
- 2024年第六届全国农业行业职业技能大赛动物疫病防治员技能竞赛理论考试题库(含答案)
- 肉牛育肥基地建设项目可行性研究报告书
- 泥炭藓在土壤改良中的作用
评论
0/150
提交评论