您的当前位置:首页正文

模拟题一及参考答案

2020-12-14 来源:步旅网
模拟题一及参考答案

1. 关于C +十与C语言的关系的描述中,

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. ______ 是给对象取一个别名,它引入了对象的同一词。 A. 指针 B. 引用 C. 枚举

D. 结构

7. 下列数组的定义中, ______ __ 是错误的。 (2

A.char cal[ ]={ , ' ch, a, '' r '' B.char ca2[5]= ” char '}

C.char ca3[4]= ” char D.int array[ ]={6 , 5, 4} 3,

—是错误的。(2分)

(2分)

8. 1.下列变量名中, ______ 是合法的。 (2 分)

A. CHthA

B. byte - size C. double D. A + a 9.

使用数学函数,程序要包含 _______ 头文件。 (2 分) A. iostream.h B. math.h C. string.h D. stdio.h

10. 函数参数传递以下 ______ 不是正确的。 (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.h B.fstream.h C. stdio.h D. stdlib.h 17. 定义重载函数错误的为 __________ 。(多选)(3 分)

A. 功能相近的函数在相同作用域内以相同函数名定义重载函数。 B. 编译器以形参名来区分函数。

C. 编译器以返回值来区分函数。

D. 不同功能函数可以定义为重载函数。

18. 以下对类模板正确的描述为 ___________ 。 (多选 )(3分)

A. 系统规定应该使用模板。

B. 模板是 C++ 支持参数化多态性的工具。

C. 使用模板将程序所处理的对象的类型参数化。 D. 使用模板可以为用于处理多种不同类型的对象。 19. 20. 21. 22. 23.

同一数组的各元素具有 ___的数据类型 (2 分) 指针变量是用来存储 ___的变量 (2分) 字符串的结束标记是 ___(2 分)

派生新类的过程包括 ___已有类的成员,调整已有类的成员和添加新成员 (2 分) 构造派生类对象时,就要对基类数据成员、 ___数据成员和成员对象的数据成员进行初始 化 (2 分 )

24. 作用域分辨符是 ___(2 分)

25. 使用虚基类时要用 ___关键字 (2分)

26. C++程序按结构可划分为:类 ___文件、类定义文件和类实现文件

(2分)

27. 在使用 I/O 流类库对文件进行二进制操作时,文件打开模式应使用标志值 ______________ 。( 2 分)

28. 利用 I/O 流类库中的格式标志值 ______ 设置以定点格式显示浮点数值。 (2分)

29. 分析以下程序执行的结果 .(10 分)

#include

#include class

{

Sample

public: x,y;

int

}; void

{

30.

分析以下程 #include class

{

}

; void {

}

31. 分 析 以 下 程 #include class {

Sample(int

void

Sample

的执行结

int

Sample(int

void

Sample

序的输出

in

t

Sample(int

cout<< ” constructing

Sample(){x=y=0;}

a,int b){x=a;y=b;} disp()

{ cout<< ”

x= ” <}

main()

s1(2,3); s1.disp()

;

果 (10

分) Sample

x,y;

public:

Sample(){x=y=0;}

a,int

b){x=a;y=b;}

~Sample()

{

if(x==

y) cout<< ” x=y ” <<disp()

{

cout<< ” x= ” <}

main()

s1(2,3); s1.disp()

;

果 (10 分 )

Sample

x; public:

a) {

x=a; object:x= ”

<};

void

{

func(int

static

Sample

n) obj(n);

}

void

{

}

32. 分 析 以 #include class

{

}; void

{

参考答案:

下程序

cout<<

的执

int int void

x= ”

int

Sample

main()

func(1); func(10);

行结 果 (12 分 )

Sample

public:

x; y; disp()

{

” ,y= ” <}

main()

Sample::*pc;

s; pc=&Sample::x;

s.*pc=10; pc=&Sample::y;

s.*pc=20; s.disp();

<1D 2D 3A 4C 5D 6B 7C 8A 9B 10A 11C 12A 13D 14C 15D 16B 17BCD 18BCD 19 相同

20 内存单元地址 21 ‘0' 22 吸收 23 新增 24:: 25 virtual 26 申明

27 ios::binary

29. 解: x=2,y=3

本题说明了重载构造函数的定义方法。首先定义了一个类 Sample,在 main() 中定义了它的一个对象,定义 s1 对象时调用其重载构造函数 (x=2,y=3) ,

然 后 , 调 用 其 成 员 函 数 输 出 数 据 成 员 。 所 以 输 出 为 : x=2,y=3 。 注意:构造函数是唯一不能被显式调用的成员函数,它在定义类的对象时自动调用,也称为隐 式调用。

28ios::fixed

30.

x!=y

解 : x=2,y=3

本题说明了析构函数的定义方法。首先定义了一个类 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 。

)。所以输出

因篇幅问题不能全部显示,请点此查看更多更全内容