C++模拟试卷(四)

上传人:Sc****h 文档编号:132288418 上传时间:2022-08-08 格式:DOC 页数:18 大小:147.50KB
返回 下载 相关 举报
C++模拟试卷(四)_第1页
第1页 / 共18页
C++模拟试卷(四)_第2页
第2页 / 共18页
C++模拟试卷(四)_第3页
第3页 / 共18页
点击查看更多>>
资源描述
C+ 程序设计模拟试卷( 四 )一、单项选择题 ( 本大题共 20 小题,每小题 1 分,共 20 分 ) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。1.当一个类的某个函数被说明为virtual时,该函数在该类的所有派生类中()A. 都是虚函数B. 只有被重新说明时才是虚函数C. 只有被重新说明为 virtual 时才是虚函数D. 都不是虚函数答案: A解析: (P170) 在基类声明为virtual 的函数为虚函数,在派生类中只要有相同的函数(函数名相同、返回值相同、形参类型和个数相同)即使不用virtual 说明,也都是虚函数。2.要禁止修改指针p 本身,又要禁止修改p 所指向的数据,这样的指针应定义为()A. const char *p=“ ABCD ”;B. char *const p=“ ABCD ”;C. char const *p=“ ABCD ”;D. const char * const p=“ABCD ”;答案: D解析: (P12)const char *p说明禁止通过p 修改所指向的数据。 char * const p则说明不能修改指针 p 的地址。因此constchar * const p=“ ABCD ”;它禁止修改指针 p 本身,又禁止修改 p所指向的数据。3.函数调用 func(exp1,exp2),(exp3,exp4,exp5)中所含实参的个数为()A.1B.2C.4D.5答案: B解析: (exp1,exp2)、 (exp3,exp4,exp5)表示是两个逗号表达式,值是最后一个值,相当于两个参数。因此实参的个数是2 。4. 设有函数模板template Q Sum(Q x,Q y)return (x)+(y);则下列语句中对该函数模板错误的使用是()A. Sum(10,2);B. Sum(5.0,6.7) ;C. Sum(15.2f,16.0f);D. Sum( “ AB ” , ” CD ” );答案: D解析: (P40) 由 Q Sum(Q x,Q y)可知形参和函数返回值都是同一种数据类型。A、确。而 D 项用字符串作为实参,字符串的操作与数值类型不同,要用特殊方法进行字符串的连接和运算。B、C三项都正5.类 B 是类 A 的公有派生类,则 p-A:func()将()类A和类B 中都定义了虚函数func(),p是一个指向类A 对象的指针A. 调用类 A 中的函数 func()B.调用类 B 中的函数 func()C. 根据 p 所指的对象类型而确定调用类A 中或类D. 既调用类 A 中函数,也调用类B 中的函数B 中的函数func()答案:A解析:(P117)指向类成员指针的使用,A:func()是明确调用A 类的func函数,所以不管p 指向基类或者派生类对象,都执行基类虚函数。注意p-A:func()和 p-fun();进行区分。如果使用 p-fun(),因为p 指向派生类对象,由动态多态性可知要调用派生类的虚函数。6. 在面向对象的程序设计中,首先在问题域中识别出若干个()A. 函数B. 类C. 文件D. 过程答案: B解析: (P31) 面向过程的和面向对象都具有、函数、文件和过程这些概念,而面向对象程序才有类和对象的特征。所以选择B。7. 已知 f1 和 f2 是同一类的两个成员函数,但f1 不能直接调用f2 ,这说明()A.f1和 f2都是静态函数B.f1不是静态函数,f2 是静态函数C.f1是静态函数,f2 不是静态函数D.f1和 f2都不是静态函数答案: C解析: (P107) 普通成员函数可以调用静态函数,相反静态函数不能调用普通成员函数,普通函数与常成员函数相同。因此选择C 项。8. 下列有关模板和继承的叙述正确的是()这与A. 模板和继承都可以派生出一个类系B. 从类系的成员看,模板类系的成员比继承类系的成员较为稳定C. 从动态性能看,继承类系比模板类系具有更多的动态特性D. 相同类模板的不同实例一般没有联系,而派生类各种类之间有兄弟父子等关系答案: D解析: (P145)相同的操作的抽象。关系的关系。类是相同类型事物的抽象,类模板的实例化后,具有不同的操作。而模板是不同类型的事物,各个对象没有任何关系。而类对象是通过派生、继承等具体9. 有关 C+ 编译指令,以下叙述正确的是()A. C+ 每行可以写多条编译指令B. #include 指令中的文件名可含有路径信息C. C+ 的编译指令可以以 # 或/ 开始D. C+ 中不管 if 后的常量表达式是否为真,该部分都需要编译答案: B解析:(P96) 编译指令以作为开头,只能一行写一条,if有选择进行编译,所以选择B项。10. 在 C+ 中不返回任何类型的函数应该说明为()A. intB. charC. voidD. double答案: C解析:无形参或无返回值都可以用void 来声明, int char double分别是整型、字符型和实型。11. 若 Sample 类中的一个成员函数说明如下:void set(Sample& a),则 Sample& a的含义是()A. 指向类 Sample 的名为 a 的指针C. 将 a 的地址赋给变量SetD. 变量 Sample 与 a 按位与的结果作为函数答案: BSet的参数解析: (P53) 成员函数使用对象的引用作为形参。该函数的功能是将已知对象的所有数据成员的值拷贝给相应对象的所有数据成员,不会建立临时对象,这里是对象的引用所以选择B。12. 下列关于静态数据成员的描述中正确的是() A. 静态数据成员是类的所有对象所共有的B. 静态数据成员要在构造函数内初始化C. 类的每个对象有自己的静态数据成员D. 静态数据成员不能通过类的对象调用答案: D解析: (P107) 静态成员属于类的即所有对象所共享的, 只能在外部进行初始化。 使用时可以使用形式有两种,类名: 静态成员或者对象. 静态成员。所以选择D 项。13. 在编译指令中,宏定义使用哪个指令()A. #ifB. #includeC. #defineD. #error答案: C解析: (P7)#if条件编译,include文件包含,error错误处理。14. 类的析构函数是对一个对象进行以下哪种操作时自动调用的是()A. 建立B. 撤销C. 赋值D. 引用答案: B解析: (P80) 删除对象或结束程序时,自动调用析构函数。15. 关于 new 运算符的下列描述中,错误的是()A. 它可以用来动态创建对象和对象数组B. 使用它创建的对象或对象数组可以使用运算符delete 删除C. 使用它创建对象时要调用构造函数D. 使用它创建对象数组时必须指定初始值答案: D解析: (P107) 静态成员的特性是静态成员只有一个拷贝(副本),这个副本被所有属于这个类的对象共享。这种共享与全局变量或全局函数相比,既没有破坏数据隐藏的原则,又保证了安全性。静态成员表示整个类范围的信息,其声明以关键字static 开始,包括静态数据成员和静态成员函数。在对静态数据成员初始化时应注意:(1) 应在类体外对静态数据成员进行初始化(静态数据成员的初始化与它的访问控制权限无关)。(2) 静态数据成员初始化时前面不加 static 关键字,以免与一般静态变量或对象混淆。(3) 由于静态数据成员是类的成员,因此在初始化时必须使用作用域运算符(:)限定它所属的类。因此选择D 项。16. 如果类 A 被说明成类 B 的友元,则()B. 类 B 的成员即类 A 的成员C. 类 A 的成员即类 B 的成员D. 类 A 的成员函数不得访问类 B 的成员答案: A解析: (P113) 友元关系不能被继承,友元关系是单向的,友元关系不具有传递性。但是友元函数不是类的成员,所以选择A 项。17.假定一个类的构造函数为A(int aa,int bb)a=aa+;b=a*+bb;,则执行 A x(4,5); 语句后, x.a 和 x.b 的值分别为()A.4和 5B.4和 20C.4和 24D. 20和5答案: C解析: (P75)先自加为 6,再与执行构造函数将数据成员进行赋值,a 相乘,所以b 24 。aa+ 是后加,先赋值a4 ,+bb,bb变量值18. 下列运算符中,在 C+ 语言中不能重载的是()A. *B. =C. :D. /答案: C解析: (P186) 除了类属关系运算符. 、成员指针运算符.* 、作用域运算符: 、 sizeof 运算符和三目运算符?: 以外, C+ 中的所有运算符都可以重载。19. C+ 语言建立类族是通过()A. 类的嵌套B. 类的继承C. 虚函数 D.抽象类答案: B解析: (P174) 类族即同一个类派生出来的类,各个类是兄弟或父子关系。20. 在 C+ 语言中,数据封装要解决的问题是()A. 数据的规范化B. 便于数据转换C. 避免数据丢失D. 防止不同模块之间数据的非法访问答案: D解析: (P39) 封装是指把对象属性和操作结合在一起,构成独立的单元,它的内部信息对外界是隐蔽的, 不允许外界直接存取对象的属性,封装只能通过有限的接口与对象发生联系。类是数据的工具,对象是封装的实现。类的访问控制机制体现在类的成员中可以有公有成员、私有成员和保护成员。对于外界而言,只需要知道对象所表现的外部行为,而不必了解内部实现细节。封装体现了面向对象方法的“信息隐蔽和局部化原则”。二、填空题 ( 本大题共 20 小题,每小题1 分,共 20 分 ) 请在每小题的空格中填上正确答案。错填、不填均无分。1.若要使用string类,需要引入的头文件是_ 。答案: (P40)string.h解析编译时要将头文件引入才能使用标准库中的方法或成员。2. 在函数前面用 _ 保留字修饰时,则表示该函数表为内联函数。答案: (P59)inline解析内联函数,用来提高程序运行速度。在类内部定义的函数也是内联函数。3. 向量操作方法中 _ 方法返回向量中的第一个对象。答案: (P151)front解析考察向量方法的使用。front():返回向量中的第1 个对象。 back ():返回向量中的最后一个对象。 operator (size_type,n):返回向量中的第n 1 个对象(下标为 n 的向量元素)。4. C+ 派生类使用两种基本的面向对象技术:第一种称为性质约束,即对基类的性质加以限制;第二种称为_ ,即增加派生类的性质。答案: (P129) 性质扩展解析派生类通过继承可以从基类中获得成员,也可以自定义成员。5. 重载的运算符保持其原有的 _ 、优先级和结合性不变。答案: (P183) 操作数解析运算符重载时要遵循以下规则:(1) 除了类属关系运算符“. ”、成员指针运算符“.*”、作用域运算符“: ”、sizeof运算符和三目运算符“?: ”以外, C+ 中的所有运算符都可以重载。(2) 重载运算符限制在C+ 语言中已有的运算符范围内的允许重载的运算符之中,不能创建新的运算符。(3) 重载之后的运算符不能改变运算符的优先级和结合性,也不能改变运算符操作数的个数及语法结构。6. 编译时的多态性通过 _ 函数实现。答案: (P165) 重载解析编译多态性,实现的方法主要通过函数的重载或运算符的重载。7. 预处理语句有三种,分别是宏定义、文件包含和_ 。答案:(P7) 条件编译解析宏定义define,文件包含include和条件编译8. 构造函数、析构函数和友元函数中,不是该类成员的是答案: (P109) 友元函数解析友元函数不是类成员,但可以访问类中成员。#if等。_ 。9. 控制格式输入输出的操作中,函数 _ 是设置域宽的。要求给出函数名和参数类型)。答案: (P193)setw(int)解析 setw(int n): 用来设置 n 输出宽度。10. 派生类的成员一般分为两部分,一部分是 _ ,另一部分是自己定义的新成员。答案: (P127) 从基类继承的成员解析派生类成员一个来自继承基类成员,一个来自本身增加的成员。11. C中 ostream 的直接基类 _ 。答案: (P193)ios解析 istream和 ostream 的直接基类是ios 。12. vector 的 _ 方法返回向量中的最后一个对象。答案: (P151)back解析 front():返回向量中的第1 个对象。 back ():返回向量中的最后一个对象。operator (size_type,n):返回向量中的第n1 个对象(下标为n 的向量元素)。13. 执行下列代码int i=230;cout i=hex iendl;程序的输出结果为_ 。答案: (P193)i=e6解析流类库中使用格式符,输出十六进制数据。14. 在 C+ 中有两种参数传递方式即值传递和 _ 传递。答案: (P51) 引用解析函数参数传递有传值和传引用两种。15. 使用 new 为 int 数组动态分配 10 个存储空间是 _ 。答案: (P10)new int10;解析 new delete动态开辟空间和删除空间。new int 10 ,注意不要写成newint ( 10 ),使用小括号只能开辟一个空间,使用10 来初始化该值。16. 面向对象的四个基本特性是多态性、继承性、和封装性_ 。答案: (P37) 抽象解析 考察面向对象的四个特征。程序由一组抽象的对象组成,一组对象的共同特征抽象出类的概念,类是对象的抽象,对象是类的实例。封装即将数据和操作紧密结合提供访问的接口,外部通过接口实现访问数据,提供安全性。继承继承解决了类的扩展性。多态性不同对象调用相同的函数名,但调用不同的函数,实现不同的功能,解决了接口统一的问题。17. 定义虚函数所用的关键字是_ 。答案: (P170)virtual解析在成员函数前加virtual 修饰的函数就是虚函数。但不是所有成员函数都可以定义为虚函数的。比如构造函数,不能定义虚函数。18.执行下列代码cout “ oct: ” oct34;程序的输出结果是_ 。答案: (P193)Oct:42解析 oct 表示八进制,hex 表示十六进制,但它们只能输出整型的数据。19.在 C+ 中要创建一个文件输入流对象fin,同时该对象打开文件“Test.txt”用于输入,则正确的声明语句是_ 。答案: (P200)ifstream fin(“ Test.txt” ) ;解析 文件操作中 ifstream 用于文件的输入, 可以调用它的构造函数与要打开的文件进行关联20.如果一个派生类只有一个唯一的基类,则这样的继承关系称为_ 。答案: (P130) 单一解析根据派生类所拥有的基类数目不同,可以分为单继承和多继承。一个类只有一个直接基类时,称为单继承;而一个类同时有多个直接基类时,则称为多继承。基类与派生类之间的关系如下:(1) 基类是对派生类的抽象,派生类是对基类的具体化,是基类定义的延续。(2) 派生类是基类的组合。多继承可以看作是多个单继承的简单组合。(3) 公有派生类的对象可以作为基类的对象处理。五、程序分析题( 本大题共 4 小题,每小题5 分,共 20 分 )1. 给出下面程序输出结果。#includeclass apublic:a(int i=10)x=i;couta:xendl;int x;class b:public apublic:b(int i):A(i)x=i;coutb:x, a:xendl;private:a A;intx; ;void main()b B(5);答案:a:10a:5b:5,10解析定义对象B,先调用基类构造函数,在b 构造函数中使用的是A(i),注意大小写,不是 a(i),也就是说调用基类的构造函数时没有实参值,所以采用默认值;在初始化类成员A,即A(i), i 5,所以输入为a:5 ;最后是b 类的构造函数,x=5,来自基类x10 ,输出b:5,10。2. 运行程序,写出程序执行的结果。#includeclass Locationpublic:int X,Y;void init(int initX,int initY);int GetX();int GetY();void Location:init (int initX,int initY)X=initX;Y=initY;int Location:GetX()return X;int Location:GetY()return Y;void display(Location& rL)coutrL.GetX() rL.GetY()init(7,8);for (int i=0;i5;i+)display(*(rA+);答案: 783 31 17 34 4解析对象数组的使用。使用数组对象修改了A 3 元素的值,又使用指针修改指针所指向的第一个元素的值,因此修改了A0和A3元素的值。3. 给出下面程序输出结果。#include int a 8 =1,2,3,4,5,6,7;void fun(int *pa,int n);void main()int m=8;fun(a,m);couta 7 endl;void fun(int *pa,int n)for (int i=0;in-1;i+)*(pa+7)+=*(pa+i);答案:28解析数组名与指针都表示地址,只是数组名是常地址,不能改变;指针是地址变量,使用时可以当数组名使用。4. 给出下面程序输出结果。#include class Aint *a;public:A(int x=0):a(new int(x)A() delete a;int getA() return *a;void setA(int x) *a=x;void main()A x1,x2(3);A *p=&x2;(*p).setA(x2.getA()+5);x1.setA(10+x1.getA();coutx1.getA()x2.getA()wheels=wheels;this-weight=weight;coutwheelsendl;int vehicle:get_wheels()return wheels;float vehicle:get_weight()return weight;void vehicle:print()cout车轮数:wheels,重量:weightendl;答案: class car:public vehicleprivate:int passengers;public:void init(int wheels,float weight,int pass);int getpassenger();void print();;void car:init(int wheels,float weight,int pass)vehicle:init(wheels,weight);passengers=pass;int car:getpassenger()return passengers;void car:print()vehicle:print();cout 可载人数:passengersendl;
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 幼儿教育


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!