二级C++选择题专项强化真题试卷2
选择题
1.有如下程序:
class Base{
public:
int data;
};
class Derived1:public Base{};
class Derived2:protected Base{};
int main(){
Derived1 d1;
Derived2 d2;
d1. data=0; //①
d2. data=0; //②
return 0;
}
下列关于程序编译结果的描述中,正确的是( )。
A) ①②皆无编译错误
B) ①有编译错误,②无编译错误
C) ①无编译错误,②有编译错误
D) ①②皆有编译错误(C)
A.
B.
C.
D.
解析:
2.线性表L=(a1,a2,a3,…ai,…an),下列说法正确的是(D)
A. 每个元素都有一个直接前件和直接后件
B. 线性表中至少要有一个元素
C. 表中诸元素的排列顺序必须是由小到大或由大到小
D. 除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件
解析:线性表可以为空表;第一个元素没有直接前件,最后一个元素没有直接后件;线性表的定义中,元素的排列并没有规定大小顺序。
3.软件开发离不开系统环境资源的支持,其中必要的测试数据属于(D)
A. 硬件资源
B. 通信资源
C. 支持软件
D. 辅助资源
解析:软件测试过程中,辅助资源包括测试用例(测试数据)、测试计划、出错统计和最终分析报告等。
4.在C++语言中,不合法的实型数据的是(C)
A. 0.123
B. 123e3
C. 2.1e3.5
D. 123.0
解析:在C++语言中,实数有两种形式表示,即十进制数形式和指数形式,在指数形式中,e3,2.1e3.5,.e3,e等都是不合法的指数形式。再如123e3或123E3都代表123乘以10的3次方。注意,字母e的前面必须有数字,且e的后面必须是整数。
5.关于二义性的描述错误的是(C)
A. 一个子类的两个父类中都有某个同名成员,在子类中对该成员访问可能出现二义性
B. 解决二义性可以用对成员名的限定法
C. 父类和子类中同时出现同名函数,也可能存在二义性
D. 一个子类是从两个父类派生出来的,而这两个父类又有一个共同的父类,对该父类成员进行访问时,可能出现二义性
解析:基类和其继承类同时出现同名函数,则在继承类中实现对象中调用该函数是使用继承类中的定义,这种情况下是不会产生二义性的。
6.下列程序的运行结果是
#include
void fun(int *a, int *b)
{ int *k;
k=a; a=b; b=k;
}
void main()
{ int a=3, b=6, *x=&a, *y=&b;
fun(x,y);
cout<<a<<\\(B)
A. 6 3
B. 3 6
C. 编译出错
D. 0 0
解析:函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型。它的作用是将一个变量的地址传送到另一个函数中去。在本题解析中,我们试图将这一问题解释清楚!
大家可以考虑一下利用下面这函数可不可以实现a和b的互换。
swap(int x,int y)
{ int t;
t=x;
x=y;
y=t;
}
如果在main函数中用swap(a,b),会有甚么结果呢?在函数调用开始时,a的值传送给x,b的值传递给y 。执行完swap()函数后,x和y的值是互换了,但main()函数中的a和b并未互换。也就是说由于\\
7.若MyClass为一个类,执行“MyClass a[4],*p[5];”语句时会自动调用该类构造函数的次数是(C)
A. 2
B. 5
C. 4
D. 9
解析:本题主要考查类对象的定义。构造函数在对象被创建的时候由系统自动调用。本题中定义了一个对象数组和一个指针数组,而指针被定义时不调用构造函数。本题选C。
8.关于动态存储分配,下列说法正确的是(B)
A. new 和 delete是C++语言中专门用于动态内存分配和释放的函数
B. 动态分配的内存空间也可以被初始化
C. 当系统内存不够时,会自动回收不再使用的内存单元,因些程序中不必用delete释放内存空间
D. 当动态分配内存失败时,系统会立刻崩溃,因此一定要慎用new
解析:本题考核动态存储分配。用于动态分配的内存空间称为堆内存,它通常由操作系统进行管理且数量有限,其内存空间可以被初始化。若程序不断分配堆内存,则可能耗尽,在这种情况下,系统无法再对new提出的内存分配请求给予满足,此时 new会返回空指针NULL,表示动态存储分配操作失败,不会造成系统崩溃。在C++程序中由new分配的动态内存空间必须通过delete运算符释放。
9.在一个类体的下列声明中,正确的纯虚函数声明是
A
解析:本题考核纯虚函数的声明。声明纯虚函数的一般格式为:
virtual<类型><函数名>(<参数表>)=0;
10.下列关于虚函数的描述中,正确的是(C)
A. 虚函数是一个static类型的成员函数
B. 虚函数是一个非成员函数
C. 基类中采用virtual说明一个虚函数后,派生类中定义相同原型的函数时可不必加virtual说明
D. 派生类中的虚函数与基类中相同原型的虚函数具有不同的参数个数或类型
解析:
11.针对数组定义int data[10];,下列表述中错误的是(D)
A. 用*data可访问到数组的首元素
B. 用data[9]可访问到数组的末元素
C. 用data[10]访问数组元素会超出数组边界
D. data共有10个元素,其首元素是data[1]
解析:
12.下列关于模板的叙述中,错误的是(C)
A. 模板声明中的第一个符号总是关键字templale
B. 在模板声明中用括起来的部分是模板的形参表
C. 类模板不能有数据成员
D. 在一定条件下函数模板的实参可以省略
解析:C++中有两类模板:类模板和函数模板。类模板中可以有数据成员,所以选项C)错误。
13.有如下程序: #include<iostream> void fun(int&x,int y){int t=x;x=y;y=t;} int main() { int a[2]={23,42}; fun(a[1],a[0]; std::cout<<a[0]<<\\(B)
A.
本文档预览:3600字符,共8008字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载