国家二级(C++)机试模拟试卷518
选择题
1.下列有关数据库的描述,正确的是( )。(B)
A. 数据库设计是指设计数据库管理系统
B. 数据库技术的根本目标是要解决数据共享的问题
C. 数据库是一个独立的系统,不需要操作系统的支持
D. 数据库系统中,数据的物理结构必须与逻辑结构一致
解析:数据库设计的目的实质上是设计出满足实际应用需求的实际关系模型。数据库技术的主要目的是有效地管理和存取大量的数据资源,包括:提高数据的共享性,使多个用户能够同时访问数据库中的数据;减小数据的冗余,以提高数据的一致性和完整性;提供数据与应用程序的独立性,从而减少应用程序的开发和维护代价。
2.当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为( )。(A)
A. ios_base::in
B. ios_base::in | ios_base::out
C. ios_base::out
D. ios_base::in & ios_base::out
解析:本题考查对文件输入流的操作,ifstream流类为输入流类,默认的文件输入流打开方式为ios::ino故答案为A。
3.一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是( )。(B)
A. 12345ABCDE
B. EDCBA54321
C. ABCDE12345
D. 54321EDCBA
解析:栈是先进后出的原则组织数据,所以入栈最早的最后出栈,所以选择B)。
4.对下列二叉树进行前序遍历的结果为( )。
(B)
A. ABCDEFGH
B. ABDGEHCF
C. GDBEHACF
D. GDHEBFCA
解析:遍历就是不重复地访问二叉树的所有结点。二叉树遍历的方法有3种:前序遍历、中序遍历和后序遍历。记住3种遍历的顺序:
①前序,访问根→按前序遍历左子树→按前序遍历右子树。
②中序,按中序遍历左子树→访问根→按中序遍历右子树。
③后序,按后序遍历左子树→按后序遍历右子树→访问根。
所以对该二叉树的中序遍历结果为ABDGEHCF。
5.有如下程序:
#include
using namespace std;
class A
{
public:
A(){cout<<“A”;)
~A(){cout<<“~A”;)
};
class B:public A
{A*p;
public:
B(){cout<<\\(B)
A. BAA~A~B~A
B. ABA~B~A~A
C. BAA~B~A~A
D. ABA~A~B~A
解析:此题考查的是类的构造函数和析构函数。派生类构造函数的执行顺序为:首先调用基类的构造函数,调用顺序按它们被继承时说明的顺序;然后调用子对象的构造函数,调用顺序按它们在类中说明的顺序;最后是派生类构造函数中的内容。因此本题中,首先调用基类构造函数输出A,然后调用子对象的构造函数输出B,p=new A再调用类A的构造函数输出A;析构函数的调用顺序和构造函数的调用顺序相反。
6.耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是( )。(B)
A. 提高耦合性降低内聚性有利于提高模块的独立性
B. 降低耦合性提高内聚性有利于提高模块的独立性
C. 耦合性是指一个模块内部各个元素间彼此结合的紧密程度
D. 内聚性是指模块间互相连接的紧密程度
解析:模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。一般较优秀的软件设计,应尽量做到高内聚、低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性,所以A错误,B正确。耦合性是模块问互相连接的紧密程度的度量而内聚性是指一个模块内部各个元素间彼此结合的紧密程度,所以C与D错误。
7.关于this指针的说法不正确的是( )。(D)
A. 不能在程序中修改this指针
B. this指针可以给其他指针赋值,但不能修改this指针
C. 静态成员函数中没有this指针
D. this指针可以被赋值
解析:this指针不能在程序中修改,不能被幅值;静态成员没有this指针,因为类中只有一个静态成员函数实例,使用this指针无意义。
8.已知枚举类型声明语句为:
enum COLOR{WHITE,YELLOW,GREEN=5,RED,BLACK=10};
则下列说法中错误的是( )。(D)
A. 枚举常量YELLOW的值为1
B. 枚举常量:RED的值为6
C. 枚举常量BLACK的值为10
D. 枚举常量WHITE的值为1
解析:C++语言规定枚举常量的默认值依次等于0,1,…,n—1。也可以给枚举常量赋初值,方法是:在枚举常量的后面跟上“=整型常量”,在给枚举常量赋初值时,如果给其中任何一个枚举常量赋初值,则其后的枚举常量将按自然数的规则依次赋初值。所以本题答案为D。
9.下列关于运算符函数的描述中,错误的是( )。(C)
A. 运算符函数的名称总是以operator为前缀
B. 运算符函数的参数可以是对象
C. 运算符函数只能定义为类的成员函数
D. 在表达式中使用重载的运算符相当于调用运算符重载函数
解析:运算符函数可以定义为类的友元函数。所以C选项错误。
10.有如下程序:
#include
using namespace std;
class A{
public:
static int a:
void init(){a=1;)
A(int a=2){init();卅;)
};
iIlt A::a=0:
A obj;
int main()
{
cout<<obj.a;
return ();
}
运行时输出的结果是( (B )
A. 0
B. 1
C. 2
D. 3
解析:此题实际考查的是变量作用域的屏蔽效应。在C++中,当标识符的作用域发生重叠时,在一个函数中声明的标识符可以屏蔽函数外声明的标识符或全局标识符。声明类A的全局对象时,构造函数首先调用int函数,但由于静态成员变量a被构造函数内部的形参a所屏蔽所以a++改变的是形参a的值,对静态成员变量a没有影响。
11.在下列横线处应添加的语句是( )。
class Base{public
本文档预览:3600字符,共17089字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载