模拟题一及参考答案.docx
《模拟题一及参考答案.docx》由会员分享,可在线阅读,更多相关《模拟题一及参考答案.docx(7页珍藏版)》请在冰豆网上搜索。
模拟题一及参考答案
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. 下列数组的定义中,______是错误的。
(2分)
A.charcal[]={’c’,’h’,’a’,’r’}
B.charca2[5]=”char”
C.charca3[4]=”char”
D.intarray[]={6,5,3,4}
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分)
constchar*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. 同一数组的各元素具有___的数据类型(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
#include
classSample
{
public:
intx,y;
Sample(){x=y=0;}
Sample(inta,intb){x=a;y=b;}
voiddisp()
{
cout<<”x=”< }
};
voidmain()
{
Samples1(2,3);
s1.disp();
}
30. 分析以下程序的执行结果(10分)
#include
classSample
{
intx,y;
public:
Sample(){x=y=0;}
Sample(inta,intb){x=a;y=b;}
~Sample()
{
if(x==y)
cout<<”x=y”< else
cout<<”x!
=y”< }
voiddisp()
{
cout<<”x=”< }
};
voidmain()
{
Samples1(2,3);
s1.disp();
}
31. 分析以下程序的输出结果(10分)
#include
classSample
{
intx;
public:
Sample(inta)
{
x=a;
cout<<”constructingobject:
x=”< }
};
voidfunc(intn)
{
staticSampleobj(n);
}
voidmain()
{
func
(1);
func(10);
}
32. 分析以下程序的执行结果(12分)
#include
classSample
{
public:
intx;
inty;
voiddisp()
{
cout<<”x=”< }
};
voidmain()
{
intSample:
:
*pc;
Samples;
pc=&Sample:
:
x;
s.*pc=10;
pc=&Sample:
:
y;
s.*pc=20;
s.disp();
}
参考答案:
1
D
2
D
3
A
4
C
5
D
6
B
7
C
8
A
9
B
10
A
11
C
12
A
13
D
14
C
15
D
16
B
17
BCD
18
BCD
19
相同
20
内存单元地址
21
‘\0’
22
吸收
23
新增
24
:
:
25
virtual
26
申明
27
ios:
:
binary
28
ios:
:
fixed
29. 解:
x=2,y=3
本题说明了重载构造函数的定义方法。
首先定义了一个类Sample,在main()中定义了它的一个对象,定义s1对象时调用其重载构造函数(x=2,y=3),然后,调用其成员函数输出数据成员。
所以输出为:
x=2,y=3。
注意:
构造函数是唯一不能被显式调用的成员函数,它在定义类的对象时自动调用,也称为隐式调用。
30. 解:
x=2,y=3
x!
=y
本题说明了析构函数的定义方法。
首先定义了一个类Sample,在main()中定义了它的一个对象,定义s1对象时调用其重载构造函数(x=2,y=3),然后,调用其成员函数输出数据成员,最后在退出程序时自动调用析构函数。
所以输出为:
x=2,y=3
x!
=y
注意:
析构函数在对象的作用域结束时被自动隐式调用。
31. 解:
counstructingobject:
x=1
本题说明静态对象构造函数的调用情况,由于在func()函数中定义的对象obj是静态对象,故只被构造一次,所以输出为:
counstructingobject:
x=1
注意:
静态对象和静态变量一样,只被构造一次。
块作用域的静态变量,在首次进入到定义该静态对象的函数时,构造该静态对象,以后进入该函数时不再构造静态对象。
32. 解:
x=10,y=20
本题说明了类数据成员指针的使用方法。
在main()中定义的pc是一个指向Sample类数据成员的指针。
执行pc=&Sample:
:
x时,pc指向数据成员x,语句s.*pc=10等价于s.x=10(为了保证该语句正确执行,Sample类中