1、国家二级 C+机试(选择题)模拟试卷 130及答案与解析 一、选择题 1 下列关于栈和队列的描述中,正确的是 ( )。 ( A)栈是先进先出 ( B)队列是先进后出 ( C)队列允许在队头删除元素 ( D)栈在栈顶删除元素 2 已知二叉树后序遍历序列是 CDABE,中序遍历序列是 CADEB,它的前序遍历序列是 ( )。 ( A) ABCDE ( B) ECABD ( C) EACDB ( D) CDEAB 3 在数据流图中,带有箭头的线段表示的是 ( )。 ( A)控制流 ( B)数 据流 ( C)模块调用 ( D)事件驱动 4 结构化程序设计的 3种结构是 ( )。 ( A)顺序结构,分支
2、结构,跳转结构 ( B)顺序结构,选择结构,循环结构 ( C)分支结构,选择结构,循环结构 ( D)分支结构,跳转结构,循环结构 5 下列方法中,不属于软件调试方法的是 ( )。 ( A)回溯法 ( B)强行排错法 ( C)集成测试法 ( D)原因排除法 6 下列选项中,不属于模块间耦合的是 ( )。 ( A)内容耦合 ( B)异构耦合 ( C)控制耦合 ( D)数据耦合 7 下列特征中不是面向对象方法的主要特征的是 ( )。 ( A)多态性 ( B)标识惟一性 ( C)封装性 ( D)耦合性 8 在数据库设计中,将 E-R图转换成关系数据模型的过程属于 ( )。 ( A)需求分析阶段 ( B
3、)概念设计阶段 ( C)逻辑设计阶段 ( D)物理设计阶段 9 在一棵二叉树上,第 5层的结点数最多是 ( )。 ( A) 8 ( B) 9 ( C) 15 ( D) 16 10 下列有关数据库的描述,正确的是 ( )。 ( A)数据库设计是指设计数据库管理系统 ( B)数据库技术的根本目标是要解决数据共享的问题 ( C)数据库是一个独立的系统,不需要操作系统的支持 ( D)数据库系统中,数据的物理结构必须与逻辑结构一致 11 以下程序的输出结果是 ( )。 #include main() int b33=0, 1, 2,0, 1, 2,0, 1, 2, i, j, t=1; for(i=0;
4、 i void main() int i,k,a10, p3; k=5; for(i=0; i int fun(int b, int n) int i, r=1; for(i=0; i using namespace std; int main() int*p; *p=9; cout fun 1(char a,char b)char c; c=a; a=b; b=c; ) fun2(char*a, char b)char c; c=*a; *a=b; b=c; fun3(char*a,char* b)char c; c=*a; *a;*b; *b=c; ) void main() chara,
5、 b; a=A; b=B; fun 1(a, b); putchar(a; putchar(b); a=A; b=B; fun2(&a b); putchar(a; putchar(b); a=A; b=B; fun3(&a, & b); putchar(a; putchar(b); putchar( n); ( A) BABBAB ( B) ABBBBA ( C) ABBABA ( D) ABABBA 20 下列程序将 X、 Y和 Z按从小大的顺序排列,横线处应添加语句 ( )。 template void fun() T a; if(xy) a=x; x=y; y=a; ) iffyz)
6、a=y; y=z; z=a; if(xy) a=x; x=y; y=a; ( A) T x, T y, T Z ( B) T x; y; z ( C) T&x, T&y, T z ( D) T&x, &y, &z 21 下面 c+标识符中正确的是 ( )。 ( A)一 abc ( B) 3ab ( C) int ( D) +ab 22 下列哪项不是面向对象程序设计的主要特征 ( )。 ( A)封装 ( B)继承 ( C)多态 ( D)结构 23 已知 i=5, j=0,下列各式中运算结果为 j=6的表 达式是 ( )。 ( A) j=i+(+j) ( B) j=j+i+ ( C) j=+i+j
7、 ( D) j=j+i 24 若整型变量 a、 b、 C、 d中的值依次为: 1、 4、 3、 2。则条件表达式 a void main() int a,b, C, d(5); c=2, c+=10; a=b=10: a*=2: b =2: C =2: cout class TestClass2 public: TestClass2(); TestClass2(int i,int j); void printb0; private: int a, b; ; class TestClass 1 public: TestClass1() TestClass 1(int i; int j); voi
8、d prima(); private: TestClass2 c; ; TestClass 1: TestClass 1(int i,int j): c(i,j) void TestClass 1: printa0 c ,printb0; TestClass2: TestClass2(int i,int j) a=i; b=j; void TestClass2: printb0 cout int x=3; void main() void fun(); hat i; for(i=1; i using namespace std; int fun() static int i=0; int s=
9、l; s+=i: i+; retum s: int main() int i, a=0; for(i=0; i fun(int aint b) int c; c=a+b: return c; void main0 int x=6, y=7, z=8, r; r=fun(x一, y+, x+y), Z一 ); cout int add(int a, int b); void main() extem int x, y; cout class TestClass public: TestClass()Val+; static int val; ; int TestClass: val=0: voi
10、d main() TestClass csl; cout using namespace std; class TestClass static intn; public: TestClass() n+: static int test() for(int i=0; i ( B) + 一 + 一一 ( C) = T square(T x)return x*x; 其中 T是 ( )。 ( A)函数形参 ( B)函数实参 ( C)模板形参 ( D)模板实参 国家二级 C+机试(选择题)模拟试卷 130答案与解析 一、选择题 1 【正确答案】 D 【试题解析】 栈实际也是线性表,只不过是一种特殊的线
11、性表。栈是只能在表的一端进行插入和删除运算的线性 表,通常称插入、删除的这一端为栈顶,另一端为栈底。队列是只允许在一端删除,在另一端插入的顺序表,允许删除的一端叫做队头,允许插入的一端叫做队尾。 2 【正确答案】 C 【试题解析】 由于后序遍历的最后一个元素为 E,所以 E为根结点,所以它的前序遍历的首个元素为 E,故排除 A和 D选项。由于中序遍历中,元素 B在元素根结点 E的后面,所以 B为二叉树的右子树,并且该二叉树右子树只有一个元素,所以前序遍历的最后一个元素应为 B,故选项 C为正确选项,即该二叉树的前序遍历序列是 EACDB。 3 【正确答案】 B 【试题解析】 数据流图中带箭头的
12、线段表示数据流,沿箭头方向传递数据的通道,一般在旁边标注数据流名。 4 【正确答案】 B 【试题解析】 程序设计语言仅仅使用顺序、选择和重复 (循环 )三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。遵循程序结构化的设计原则,按结构化程序设计方法设计出的程序易于理解、使用和维护;可以提高编程工作的效率,降低软件的开发成本。 5 【正确答案】 C 【试题解析】 软件调试主要采用以下三种方法: 强行排错法:作为传统的调试方法,其过程可概括为设置断点 、程序暂停、观察程序状态、继续运行程序。 回溯法:该方法适合于小规模程序的排错、即一旦发现了错误,先分析错误征兆,确定最先发现 “症状 ”
13、的位置。 原因排除法:原因排除法是通过演绎和归纳,以及二分法来实现。 6 【正确答案】 B 【试题解析】 耦合可以分为下列几种,它们之间的耦合度由高到低排列: 内容耦合一一若一个模块直接访问另一模块的内容,则这两个模块称为内容耦合。 公共耦合一一若一组模块都访问同一全局数据结构,则称为公共耦合。 外部耦合一一若一组模块都访问同一全局数据项,则称为外部 耦合。 控制耦合一一若一模块明显地把开关量、名字等信息送入另一模块,控制另一模块的功能,则称为控制耦合。 标记耦合一一若两个以上的模块都需要其余某一数据结构的子结构时,不使用其余全局变量的方式而全使用记录传递的方式,这样的耦合称为标记耦合。 数据
14、耦合一一若一个模块访问另一个模块,被访问模块的输入和输出都是数据项参数,则这两个模块为数据耦合。 非直接耦合一一若两个模块没有直接关系,它们之间的联系完全是通过程序的控制和调用来实现的,则称这两个模块为非直接耦合,这样的耦合独立性最强 。 7 【正确答案】 D 【试题解析】 面向对象设计方法与面向过程设计方法有本质的不同,其基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题。其特点包括:标识惟一性、多态性、封装性、模块独立性、继承和多态性好。 8 【正确答案】 C 【试题解析】 逻辑结构设计的任务:概念结构是各种数据模型的共同基础,为了能够用某一 DBMS实现用户需求,还必须将概念
15、结构进一步转化为相应的数据模型,这正是数据库逻辑结构设计所要完成的任务。它包括从 E R图向关系模式转换和逻辑模式规范化及调整、实现 。 9 【正确答案】 D 【试题解析】 根据二叉树的性质:二叉树第 i(i1)层上至多有 2。 个结点。得到第 5层的结点数最多是 16个。 10 【正确答案】 B 【试题解析】 数据库设计的目的实质上是设计出满足实际应用需求的实际关系模型。数据库技术的主要目的是有效地管理和存取大量的数据资源,包括:提高数据的共享性,使多个用户能够同时访问数据库中的数据;减小数据的冗余,以提高数据的一致性和完整性;提供数据与应用程序的独立性,从而减少应用程序的开发和维护代价。
16、11 【正确答案】 C 【试题解析】 程序中通过 for二重循环依次取二维数组中的数值进行与 t的累加。取数组中的元素为 i行和符合循环条件的 bij列的数据。循环为 0, 1, 2行,对应 0, 1, 2列。即 0, 1, 2。所以 1+0+1+24。 12 【正确答案】 B 【试题解析】 由于头尾指针不断前移,超出向量空间。这时整个向量空间及队列是满的却产生了 “上溢 ”现象。 13 【正确答案】 B 【试题解析】 程序中首先在第一个 for循环中将数组 a每一个元素赋值为 0, 1,2, 。然后在第二个循环中数组 p的第 i元素为 a中的 第 i木 (i+1),即 0, 2,6,第三个循
17、环中数组 p中的每个元素值乘以 2,然后加上 5,累加。 14 【正确答案】 B 【试题解析】 由程序的 main函数入手,调用 fun函数,其中参数为数组 a和3。 fun函数的功能是 for循环中由第一个数组元素开始到第三个元素进行累积。 15 【正确答案】 D 【试题解析】 题目程序中 “int*p; ”是定义了一个指针变量 p, “*p=9; ”是将 p当前指向的指针赋为 9。指针 p在执行这个赋值操作前并没有初始化这个变量 p,所以会有 p未初始化的警告错误。 16 【 正确答案】 B 【试题解析】 “int i:,语句为定义了一个整型变量 i。 “int, cp”为定义一个整型指针
18、 p。选项 A)中的 “int*p=&i;,是定义整型指针变量 p,并指向整型 i的地址。选项 B)中 “i=*p”语句是将 p指向的变量赋值给 i,而指针 p没有初始化,所以选项 B)错误。选项 C)中 “p=0; ”表示 p指向 0的地址。选项 D)中 “&i”为取 i的地址,并赋值给 p。 17 【正确答案】 A 【试题解析】 题目中的定义初始化是定义一个整型变量 a,初始化为 3。而“int*p=&a; ”是定义一个 整型指针变量 p,将变量 a的地址作为指针变量 p的初值。 *p是指针变量 p指向的存储单元的内容,即变量值。所以 *p指向 a的值 3。 18 【正确答案】 B 【试题
19、解析】 程序中的 “int x=1”定义 x为 int型变量,并赋值为 1。语句 “&y=x”中 “&”为引用运算符, y=x语句可以理解为 y具有 x的地址,所以 v的值也是1,即输出为: 1-1。 19 【正确答案】 B 【试题解析】 由程序中的主函数 main入手,分别调用 fun1, fun2, fun3函数,得到输出结果。其中,三个函数都是实现两个形参的 交换功能,只是参数传递的方式不同,有的是地址,有的是传值。第一个函数中参数采用的是值传递的方式,形参的变化不影响实参。所以调用 fun1后,实参 a和 b并没有交换,仍然是AB。第二个调用中,实参 a采用的是地址,即传递的是地址,所
20、以形参 a的改变会影响实参 a的值,即 BB。同理,调用 fun3后为 BA。 20 【正确答案】 C 【试题解析】 函数 fun的类型为 void没有任何返回值,函数中变量的改变,即参数的改变应该影响实参。应该是地址传递方式,即把引用型作为函数形参。类T是类的抽象,可以利用模板建立各种数据 类型的类。所以补全函数的定义为“T&x, T y, T&z”。 21 【正确答案】 A 【试题解析】 C+标识符命名的规则:只能由 a-z、 A-Z、 0-9、等字符组成,且数字不能开头,不能与系统保留字冲突。 22 【正确答案】 D 【试题解析】 面向对象程序设计的特点:标识惟一性,分类性,多态性,封装
21、性,模块独立性好。 23 【正确答案】 C 【试题解析】 +在变量前面先执行自身加 l的运算,然后再进行其他运算。 H在变量后面先做其他运算,再自身加 1。选项 D)的运算式是 (j+)+i,因为 +的优先级比 +高。 24 【正确答案】 A 【试题解析】 首先把 c以及所有的类型转换运算符只能作为成员函数重载,如果要重载为友元函数就必须重载为非成员函数。 40 【正确答案】 C 【试题解析】 此题考查的是函数模板。声明一个函 数模板的格式是: template函数声明, 函数体 ) 其中的 是由一个或多个 “模板形参 ”组成的,每个 “模板形参 ”可具有以下几种形式: typename参数名; class参数名;类型修饰参数名。