模拟题一及参考答案1. 关于C +十与C语言的关系的描述中,—是错误的。
(2分)A. C 语言是 C +十的一个子集B. C++是兼容C语言的C. C +十对C语言进行了一些改进D. C++ 和 C 语言都是面向对象的2. C++对C语言作了很多改进,下列描述中_________ 使得C语言发生了质变,即从面向过程变成又面向对象。
(2 分)A. 增加了一些新的运算符B. 允许函数重载,并允许设置默认参数C. 规定函数说明必须用原型D. 引进了类和对象的概念3. 按照标识符的要求,________ 符号不能组成标识符。
(2分)A. 连接符B. 下划线C. 大小写字母D. 数字字符4. 下述关于break语句的描述中,________ 是不正确的。
(2分)A. break 语句可用于循环体中,它将退出该重循环B. break语句可用于switch中,它将退出 switch语句C. break 语句可用于 if 体内,它将退出 if 语句D. break 语句在一个循环体内可以出现多次5. 以下关于 do-while 语句的叙述正确的是________ 。
(2分)A. 不能使用 do-while 语句构成的循环B. do — while语句构成的循环必须用break语句才能退出C. do-while 语句构成的循环,当 while 语句中的表达式值为非零时结束循环D. do —while 语句构成的循环,当 while 语句中的表达式值为零时结束循环6. ______ 是给对象取一个别名,它引入了对象的同一词。
(2分)A. 指针B. 引用C. 枚举D. 结构7. 下列数组的定义中,______ __是错误的。
(2A.char cal[ ]={ ,' ch,''a, '' r '}B.char ca2[5]= ” charC.char ca3[4]= ” charD.int array[ ]={6 , 5,3,4}8. 1.下列变量名中,______ 是合法的。
(2 分)A. CHthAB. byte - sizeC. doubleD. A + a9. 使用数学函数,程序要包含 _______ 头文件。
(2 分)A. iostream.hB. math.hC. string.hD. stdio.h10. 函数参数传递以下 ______ 不是正确的。
(2 分)A. 函数类型一定和形参类型完全一样。
B. 在函数被调用时才分配形参的存储单元。
C. 实参类型必须与形参相符。
D. 传递时是传递参数值,即单向传递11. 有关析构函数的说法不正确的是:(2 分)A. 一个类中析构函数有且只有一个B. 析构函数无任何函数类型C•析构函数和构造函数一样可以有形参D•析构函数作用是在对象被撤消时收回先前分配的内存12. 下列说明中正确的是 : (2 分)const char * ptr ;A. 指向字符常量的指针B. 指向字符的常量指针C•指向字符串常量的指针D.指向字符串的常量指针13. 系统在调用重载函数时,往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是____ 。
(2 分)A. 参数个数B. 参数的类型C•函数名称D. 函数的类型14. 关于纯虚函数和抽象类的描述中,_________ 是错误的。
(2 分)A. 纯虚函数是一种特殊的虚函数,它没有具体的实现B. 抽象类是指具有纯虚函数的类C. 一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类D. 抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出15. 下列关于运算符重载的描述中,________ 是正确的。
(2分)A. 运算符重载可以改变运算数的个数B. 运算符重载可以改变优先级C. 运算符重载可以改变结合性D. 运算符重载不可以改变语法结构16. 进行磁盘文件的 I/O 操作时需要包含 _____ 文件。
(2 分)A.iostream.hB.fstream.hC. stdio.hD. stdlib.h 17. 定义重载函数错误的为 __________ 。
(多选)(3 分)A. 功能相近的函数在相同作用域内以相同函数名定义重载函数。
B. 编译器以形参名来区分函数。
C. 编译器以返回值来区分函数。
D. 不同功能函数可以定义为重载函数。
18. 以下对类模板正确的描述为 ___________ 。
(多选 )(3分)A. 系统规定应该使用模板。
B. 模板是 C++ 支持参数化多态性的工具。
C. 使用模板将程序所处理的对象的类型参数化。
D. 使用模板可以为用于处理多种不同类型的对象。
19. 同一数组的各元素具有 ___的数据类型 (2 分) 20. 指针变量是用来存储 ___的变量 (2分) 21. 字符串的结束标记是 ___(2 分)22. 派生新类的过程包括 ___已有类的成员,调整已有类的成员和添加新成员 (2 分) 23.构造派生类对象时,就要对基类数据成员、 ___数据成员和成员对象的数据成员进行初始 化 (2 分 )24. 作用域分辨符是 ___(2 分)25. 使用虚基类时要用 ___关键字 (2分)26. C++程序按结构可划分为:类 ___文件、类定义文件和类实现文件(2分)27. 在使用 I/O 流类库对文件进行二进制操作时,文件打开模式应使用标志值 ______________ 。
(2 分)28. 利用 I/O 流类库中的格式标志值 ______ 设置以定点格式显示浮点数值。
(2分)29. 分析以下程序执行的结果 .(10 分)#include<iostream.h>#include<stdlib.h> Samplepublic: x,y;class{int30.Sample(intvoidSample(){x=y=0;}a,int b){x=a;y=b;} disp(){ cout<< ”x= ” <<x<< ” ,y= ” <<y<<endl;}};void{分析以下程Samplemain()s1(2,3);s1.disp();的执行结果 (10 分)#include<iostream.h>class{Sample(intint x,y;a,intpublic:Sample(){x=y=0;}b){x=a;y=b;}void~Sample(){ if(x==y) cout<< ” x=y ” <<endl;else cout<< ” x!=y ”<<endl;} disp()cout<< ”{x= ” <<x<< ” ,y= ” <<y<<endl;}Sample};void{}Samplemain()s1(2,3);s1.disp();31. 分析以下程#include<iostream.h>class{序的输出果 (10 分 )intSample(intcout<< ” constructingSamplex; public:a) { x=a; object:x= ”<<xe<ndl;};void func(int n){static Sample obj(n);}void main() {func(1);func(10);}};参考答案:下程序的执行结果 (12 分 )Samplepublic:int x;int y;void disp(){ cout<< ”x= ”<<x<< ”,y= ” <<y<<endl;}32. 分析以#include<iostream.h>class{void{main()int Sample::*pc;Samples; pc=&Sample::x;s.*pc=10; pc=&Sample::y;s.*pc=20; s.disp();1D2D3A4C5D6B7C8A9B10A11C12A13D14C15D16B17BCD18BCD19 相同20 内存单元地址21 ‘0'22 吸收23 新增24::25 virtual26 申明29. 解: x=2,y=327 ios::binary28ios::fixed 本题说明了重载构造函数的定义方法。
首先定义了一个类Sample,在main() 中定义了它的一个对象,定义s1 对象时调用其重载构造函数(x=2,y=3) ,然后,调用其成员函数输出数据成员。
所以输出为: x=2,y=3 。
注意:构造函数是唯一不能被显式调用的成员函数,它在定义类的对象时自动调用,也称为隐式调用。
30. 解:x=2,y=3x!=y本题说明了析构函数的定义方法。
首先定义了一个类Sample,在main()中定义了它的一个对象,定义 s1 对象时调用其重载构造函数 (x=2,y=3) ,然后,调用其成员函数输出数据成员,最后在退出程序时自动调用析构函数。
所以输出为: x=2,y=3 x!=y 注意:析构函数在对象的作用域结束时被自动隐式调用31. 解: counstructing object:x=1本题说明静态对象构造函数的调用情况,由于在 func() 函数中定义的对象 obj 是静态对象,故只被构造一次,所以输出为:counstructing object:x=1 注意:静态对象和静态变量一样,只被构造一次。
块作用域的静态变量,在首次进入到定义该静态对象的函数时,构造该静态对象,以后进入该函数时不再构造静态对象。
32. 解: x=10,y=20本题说明了类数据成员指针的使用方法。
在main() 中定义的pc 是一个指向Sample 类数据成员的指针。
执行pc=&Sample::x时,pc指向数据成员x,语句s.*pc=10等价于s.x=10(为了保证该语句正确执行,Sample 类中的x 必须是公共成员);执行pc=&Sample::y 时,pc 指向数据成员y,语句s.*pc=20等价于s.y=20(同样,Sample类中的 y必须是公共成员)。
所以输出为: x=10,y=20 。