国家二级(C++)机试模拟试卷230
选择题
1.已知二叉树后序遍历序列是CDABE,中序遍历序列是CADEB,它的前序遍历序列是( )。(C)
A. ABCDE
B. ECABD
C. EACDB
D. CDEAB
解析:由于后序遍历的最后一个元素为E,所以E为根结点,所以它的前序遍历的首个元素为E,故排除A和D选项。由于中序遍历中,元素B在元素根结点E的后面,所以B为二叉树的右子树,并且该二叉树右子树只有一个元素,所以前序遍历的最后一个元素应为B,故选项C为正确选项,即该二叉树的前序遍历序列是EACDB。
2.设有表示学生选课的三张表,学生s(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为( )。(C)
A. 课号,成绩
B. 学号,成绩
C. 学号,课号
D. 学号,姓名,成绩
解析:学号是学生表S的主键,课号是课程表C的主键,所以选课表SC的关键字就应该是前两个表能够直接联系且能唯一定义的学号和课号,所以选择C。
3.若有定义“int k;”,下列程序段的输出结果为( )。
for(k=2;k<6:k++,k++)
printf(\\(C)
A. ##2
B. ##4
C. ##2##4
D. #2#4
解析:程序运行时,printf中“%d”前的内容原样输出,所以第一次输出##2,接着k两次自加为4,继续循环,接着输出##4,接着k两次自加为6,此时不符合循环条件,所以输出结果为“##2##4”。
4.下面关于常成员函数的说法中正确的是( )。(A)
A. 常成员函数不能修改任何的数据成员
B. 常成员函数只能修改一般的数据成员
C. 常成员函数只能修改常数据成员
D. 常成员函数只能通过常对象来调用
解析:C++中使用const关键字来说明函数称为常成员函数,常成员函数不能更新对象中的数据成员。
5.有如下程序:
#include
using namespace std;
class Base{
public:
void fun(){cout<<\\(B)
A. Base.fun();
B. Base::fun();
C. Base->fun();
D. fun();
解析:本题考查公用继承对基类成员的访问属性。在公用继承中,基类的公用成员和保护成员在派生类中保持原有的访问属性,其私有成员仍为基类私有。本题中想要输出Base::fun,则必须调用基类的公用成员函数fun,所以使用Base::fun();来调用基类的成员函数fun。
6.有如下程序:
#include
using namespace std;
class A {
public:
A(int i) { x = i; }
void dispa () { cout << x <<′,′; }
private :
int x ;
};
class B : public A {
public:
B(int i) : A(i+10) { x = i; }
void dispb() { dispa(); cout << x << endl; }
private :
int x ;
};
int main() {
B b(2);
b.dispb();
return 0;
}
执行这个程序的输出结果是( )。(C)
A. 10,2
B. 12,10
C. 12,2
D. 2,2
解析:本题考查派生类的构造函数和基类的构造函数。本题中类B继承类A,定义了一个类B的对象并初始化b(2),此时会执行类B的构造函数,执行的结果是继承类A中的私有成员赋值了12,给类B自身的数据成员x赋值了2,执行b.dispb()后,输出类A的私有成员x,输出类B自身的数据成员,所以答案为C。
7.下列数据结构中,属于非线性结构的是( )。(C)
A. 循环队列
B. 带链队列
C. 二叉树
D. 带链栈
解析:树是简单的非线性结构,所以二叉树作为树的一种也是一种非线性结构。
8.下列重载函数中,正确的是( )。(B )
A. void fun(int a,float b);void fun(int C,float d)
B. void fun(int a,float b);void fun(float a,int b)
C. float fun(int a,float b);int fun(int b,float a)
D. int fun(int a,int b);float fun(int a,int b)
解析:所谓函数重载是指同一函数名可以对应多个函数实现。进行函数重载时,要求同名函数在参数个数上不同,或者参数类型上不同。
9.有以下程序:
#include
using namespace std;
int a;
int fun();
int main()
{
extern int a;
intb:
a=10;
b=fun0;
cout<<b<<endl;
return 0:
}
int fun()
{
extern int a;
return(10*a);
}
其程序运行后的输出结果是( )。(C)
A. 10
B. 1
C. 100
D. 1000
解析:由主函数main入手,首先定义外部变量a,它的作用域为从变量的定义处开始,到本程序文件的末尾,赋值为10。然后调用fun函数,在fun函数中计算10*a,其中a的作用域为到文件结尾,所以这里的a为10,即10*10。
10.下列关于虚基类的描述中,错误的是( )。(C)
A. 使用虚基类可以消除由多继承产生的二义性
B. 构造派生类对象时,虚基类的构造函数只被调用一次
C. 声明“class B:virtual public A”说明类B为虚基类
D. 建立派生类对象时,首先调用虚基类的构造函数
解析:本题针对虚基类的定义及特点考查。虚基类的声明为“class:vi rtual”,即本题的A为虚基类。
11.在函数中,可以用auto、extern、register和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是( )。(A )
A. auto
B.
本文档预览:3600字符,共18060字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载