国家二级(C++)机试模拟试卷280
选择题
1.分析下面程序,该程序的运行结果是( )。
#include
class TestClass
{
public:
static int m:
TestClass()
{
m++十一t-;
}
TestClass(int 11)
{
m=n:
}
static void test()
{
m++:
}
};
int TestClass::m=0;
void main()
{
TestClass A;
TestClass B(3);
A.test();
TestClass::test();
cout<<”m=”<<B.m<<endl;
}(C )
A. m=3
B. m=4
C. m=5
D. m=6
解析:由主函数main入手,首先定义Te8tClass对象A,B;对象B构造函数值为3,构造函数中m++,所以这时m=4。主函数中调用A.test(),因为“static int m;”,m被定义为类TestClass静态成员变量,当它的值改变后,则在各对象中这个数据成员的值都同时改变了。所以这里执行“A.test();”中的m为前面进行加1操作后的4,即m现在的值为5。
2.下列关于C++函数的叙述中,正确的是( )。(C)
A. 每个函数至少要具有一个参数
B. 每个函数都必须返回一个值
C. 函数在被调用之前必须先声明
D. 函数不能自己调用自己
解析:此题考查的是函数的性质。当调用无参函数时主函数并不将数据传送给被调函数,且可以带回或不带回函数值。函数的递归调用就是直接或间接的调用自己。
3.下列运算符不能重载为友元函数的是( )。(A)
A. = () [] ->
B. + – ++ —
C. > = <=
D. += -= *= /=
解析:此题考查的是运算符重载的概念。C++语言规定,=、[]、()、->以及所有的类型转换运算符只能作为成员函数重载,如果要重载为友元函数就必须重载为非成员函数。
4.在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是( )。(C)
A. O(n)
B. O(n2)
C. O(log2n)
D. O(nlog2n)
解析:当有序线性表为顺序存储时才能用二分法查找。可以证明的是对于长度为n的有序线性表,在最坏情况下,二分法查找只需要比较log2n次,而顺序查找需要比较n次。
5.某二叉树中度为2的结点有10个,则该二叉树中有( )个叶子结点。(C )
A. 9
B. 10
C. 11
D. 12
解析:根据二叉树的性质3:对任何一棵二叉树,度为O的结点(即叶子结点)总是比度为2的结点多一个。
6.下列运算符中,不能被重载的是( )。(C)
A. &&
B. !=
C. .
D. ++
解析:C++不能重载的运算符只有5个,即“.”、“*”、“::”、“?:”、“sizeof”,故本题答案为C。
7.关于运算符重载,下列表述中正确的是( )。(C)
A. C++已有的任何运算符都可以重载
B. 运算符函数的返回类型不能声明为基本数据类型
C. 在类型转换符函数的定义中不需要声明返回类型
D. 可以通过运算符重载来创建C++中原来没有的运算符
解析:重载运算符的规则如下:①C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载;②C++不能重载的运算符只有5个;③重载不能改变运算符运算对象的个数;④重载不能改变运算符的优先级和结合性;⑤重载运算符的函数不能有默认的参数;⑥重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是C++的标准类型。故本题答案为C。
8.有三个关系R,S和T如下:
(D)
A. 选择
B. 投影
C. 交
D. 并
解析:并关系T中包含了关系R与s中的所有元组,所以进行的是并的运算。
9.已知函数f的原型是void f(int*a,long&b);,变量v1、v2的定义是:
int v1;long v2;
下列调用语句中正确的是( )。(D)
A. f(v1,&v2);
B. f(v1,v2);
C. f(&v1,&v2);
D. f(&v1,v2);
解析:函数参数的3种传递方式:①将变量名作为形参和实参,即传值方式;②传递变量指针;③引用形参。本题中函数f的第一个形参为指针,那么调用f函数时,第一个参数必须是地址,所以必须是&vl,第二个形参为引用,所以对应实参为v2即可。故本题答案为D。
10.有如下两个类定义:
class XX{
private:
double x1;
protected:
double x2;
public:
double x3;
};
class YY:protected XX{
private:
double y1;
protected:
double y2;
public:
double y3;
};
在类YY中保护成员变量的个数是( )。(C)
A. 1
B. 2
C. 3
D. 4
解析:本题考杏保护继承中派生类对基类的访问属性,在受保护继承中,基类的公用成员和保护成员在派生类中成了保护成员,所以基类的成员x2、x3变成了保护成员,派生类中的y2也是保护成员,所以共有3个保护成员。本题答案为C。
11.下列关于虚基类的描述,错误的是( )。(B)
A. 设置虚基类的目的是为了消除二义性
B. 虚基类的构造函数在非虚基类之后调用
C. 若同一层中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用
D. 若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数
本文档预览:3600字符,共18173字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载