国家二级(C++)机试模拟试卷243
选择题
1.有如下程序:
#include
using namespace std;
int main()
{
void function(double val);
double val;
function(val);
cout<<val;
return 0;
}
void function(double val)
{
val:3;
}
编译运行这个程序将出现的情况是( )。(D)
A. 编译出错,无法运行
B. 输出:3
C. 输出:3.0
D. 输出一个不确定的数
解析:本题考查函数调用及传值方式传递参数,执行函数function时,并没有将3的值传回来,而val义没有初始化,所以会输出一个不确定的值,D选项正确。
2.下列程序将x、y和z按从小到大的顺序排列,横线处应添加语句( )。
template
void fun( )
{T a;
if(x>y)
{ a=x;x=y;y=a;}
if(y>z)
{a=y;y=z;z=a;}
if(x>y)
{a=x;x=y;y=a;}
}(C)
A. T x,T y,T Z
B. T x;y;z
C. T&x,T&y,T&z
D. T&x,&y,&z
解析:函数fun的类型为void没有任何返回值,函数中变量的改变,即参数的改变应该影响实参。应该是地址传递方式,即把引用型作为函数形参。类T是类的抽象,可以利用模板建立各种数据类型的类。所以补全函数的定义为“T&x,T&y,T&z”。
3.有如下程序:
#include
using namespace std;
class AA{
intn:
public:
AA(int k):n(k){}
int get0{return n;}
int getoconst{return n+1;}
};
intmain()
{
AA a(5);
const AA b(6);
cout<<a.get()<<b.get();
return 0;
}
执行后的输出结果是( )。(B)
A. 55
B. 57
C. 75
D. 77
解析:语句AA a(5)调用的是AA(int k):n(k){},a.get()调用int get(){return n;},结果会输出5;而常对象const AA b(6),b.get()调用的是int get()const{return n+1;},会输出结果7。
4.派生类的构造函数的成员初始化列表中,不能包含( )。(C)
A. 基类的构造函数
B. 派生类中子对象的初始化
C. 基类中子对象的初始化
D. 派生类中一般数据成员的初始化
解析:在定义派生类的构造函数时,除了对自己的数据成员进行初始化外,还必须负责调用基类的构造函数使基类的数据成员得以初始化。如果派生类中还有子对象,还应包含对子对象初始化的构造函数。
5.某二叉树中度为2的结点有10个,则该二叉树中有( )个叶子结点。(C )
A. 9
B. 10
C. 11
D. 12
解析:根据二叉树的性质3:对任何一棵二叉树,度为O的结点(即叶子结点)总是比度为2的结点多一个。
6.下列有关继承和派生的叙述中,正确的是( )。(D)
A. 如果一个派生类公有继承其基类,则该派生类对象可以访问基类的保护成员
B. 派生类的成员函数可以访问基类的所有成员
C. 基类对象可以赋值给派生类对象
D. 如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类
解析:私有继承方式为基类的公用成员和保护成员在派生类中成了私有成员,其私有成员仍为基类私有,但派生类对象可以访问基类的保护成员,所以基类对象不能赋值给派生类对象。抽象类是指含有纯虚拟函数的类,所以选项D正确。
7.对于循环队列,下列叙述中正确的是( )。(D)
A. 队头指针是固定不变的
B. 队头指针一定大于队尾指针
C. 队头指针一定小于队尾指针
D. 队头指针可以大于队尾指针,也可以小于队尾指针
解析:循环队列的队头指针与队尾指针都不是固定的,随着入队与出队操作要进行变化。因为是循环利用的队列结构所以队头指针有时可能大于队尾指针有时也可能小于队尾指针。
8.语句int * p=&k;定义了指针p,与这个语句等效的语句序列是( )。(A)
A. int * p;p=&k;
B. int * p;p=k;
C. int * p;*p=&k;
D. int * p;*p=k;
解析:本题考查指针和地址,题目中定义了一个指向变量k的一个指针p,那么与题目中等效的表达式A选项,即先定义一个指向整型的指针,然后指向k的地址。
9.下列有关继承和派生的叙述中,正确的是( )。(C)
A. 派生类不能访问基类的保护成员
B. 作为虚基类的类不能被实例化
C. 派生类应当向基类的构造函数传递参数
D. 虚函数必须在派生类中重新实现
解析:派生类可以访问基类的保护成员,而不能访问基类的私有成员。作为虚基类的类可以被实例化。虚函数如果没有派生类中重新实现,那么仍然使用基类的成员函数。
10.若已定义int a[]={0,1,2,3,4,5.6,7.}{,9},*p=a,i:其中0<…i<9,则对a数组,元素不正确的引用是( )。(D )
A. a[p.a]
B. (&a[i])
C. p[i]
D. a[10]
解析:数组有N个元素,则数组元素引用为a(0)~a(N.1),共计N个,没有a(10)这个元素,最后的元素是a(9)。
11.有如下程序:
#include
using namespace std;
class C1{
public:
~C1(){cout!<<1;}
};
class C2:public C1{
public:
~C2(){cout!<<2;}
};
int main(){
C2 cb2;
C1*cb1:
return 0;
}
本文档预览:3600字符,共15878字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载