1、国家二级( C语言)笔试模拟试卷 39及答案与解析 1 栈和队列的共同特点是 ( A)都是先进先出 ( B)都是先进后出 ( C)只允许在端点处插入和删除元素 ( D)没有共同点 2 已知二叉树后序遍历序列是 dabec,中序遍历序列是 debac,它的前序遍历序列是 ( A) acbed ( B) decab ( C) deabc ( D) cedba 3 链表不具有的特点是 ( A)不必事先估计存储空间 ( B)可随机访问任一元素 ( C)插入删除不需要移动元素 ( D)所需空间与线性表长度成正比 4 结构化程序设计的 3种结构是 ( A)顺序结构、选择结构、转移结构 ( B)分支结构、等
2、价结构、循环结构 ( C)多分支结构、赋值结构、等价结构 ( D)顺序结构、选择结构、循环结构 5 为了提高测试的效率,应该 ( A)随机选取测试数据 ( B)取一切可能的输入数据作为测试数据 ( C)在完成编码以后制定软件的测试计划 ( D)集中对付那些错误群集的程序 6 算法的时间复杂度是指 ( A)执行算法程序所需要的时间 ( B)算法程序的长度 ( C)算法执行过程中所需要的基本运算次数 ( D)算法程序中 的指令条数 7 软件生命周期中所花费用最多的阶段是 ( A)详细设计 ( B)软件编码 ( C)软件测试 ( D)软件维护 8 数据库管理系统中用来定义模式、内模式和外模式的语言为
3、 ( A) C ( B) Basic ( C) DDL ( D) DML 9 下列有关数据库的描述,正确的是 ( A)数据库是一个 DBF文件 ( B)数据库是一个关系 ( C)数据库是一个结构化的数据集合 ( D)数据库是一组文件 10 下列有关数据库的描述,正确的是 ( A)数据处理是将信息转化为数据的过程 ( B)数据 的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变 ( C)关系中的每一列称为元组,一个元组就是一个字段 ( D)如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字 11 下面四个选项中,均是不合法的用户标识符的选项
4、是 ( A) A P_0 do ( B) float la0_A ( C) b-a goto int ( D) _123 temp int 12 以下 4个选项中,不能看作一条语句的是 ( A); ( B) a=5, b=2.5, c=3.6; ( C) if(a 5); ( D) if(b!=5)x=2; y=6; 13 执行下列程序时输入: 123空格 456空格 789回车输出结果是 main() char s100; int c, i; scanf(“%c“, ” ( C)运算符 *和 a.y 0; a.rate 0; a.p=&b; b x 0; b.y=0; b.rate=0; b
5、.p NULL; 61 若有如下程序: void sub() static int x 6; x 2; printf(“%d“, x); main() int m; for(m=0; m =2; m+) sub(); 则程序运行后的输出结果是【 】。 62 定 义长度为 12的数组,下面四种方法中正确的有【 】。 int x12; int n 12; const int n 12; int x=1, 2; int xn; int xn; 63 以下程序的功能是:输出 x、 y、 z三个变量中的最大值,请填空。 main() int x, y, z, u; printf(“Enter x, y,
6、 x; “); scanf(“%d%d%d“, &x, &y, &z); if(【 】 ) u x; else u y; if(【 】 ) u z; printf(“u %d“, u); 64 若有如下程序: main() int x 5, y, *t; t &x; y=+(* t); printf(“%d, %d“, x, y); 则程序执行后的 x值为【 】, y的值为【 】。 65 以下程序的功能是对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的 ASCII码值之差。请填空。 #include“stdio h“ main() char a120, a220; i
7、nt n 0, t; scanf(“%st“, a1); scanf(“%s“, a2); while(a1n! a2n&(a1n!=【 】 ) t【 】; printf(“%dn“, t); n+; 66 下面程序把从终端读入的 10个整数以二进制的方式写到一个名为 bi dat的新文件中。请填空。 #include stdio h FILE * fp; main() int i, j; if(fp fopen(【 】, “wb“); NULL)exit(0); for(i 0; i 10; i+) scanf(“%d“, &j); fwrite(&j, sizeof(int), 1,【 】
8、 ); fclose(fp); 国家二级( C语言)笔试模拟试卷 39答案与解析 1 【正确答 案】 C 【试题解析】 栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的一端进行插入或删除操作,是一种“后进先出 ”的线性表;而队列只允许在表的一端进行插入操作,在另一端进行删除操作,是一种 “先进先出 ”的线性表。 2 【正确答案】 D 【试题解析】 依据后序遍历序列可确定根结点为 c;再依据中序遍历序列可知其左子树由 deba构成,右子树为空;又由左子树的后序遍历序列可知其根结点为e,由中序遍历序列可知其左子树为 d,右子树由 ba构成,如下图所
9、示。求得该 二叉树的前序遍历序列为选项 D)。 3 【正确答案】 B 【试题解析】 链表采用的是链式存储结构,它克服了顺序存储结构的缺点:它的结点空间可以动态申请和释放;它的数据元素的逻辑次序靠结点的指针来指示,不需要移动数据元素。但是链式存储结构也有不足之处: 每个结点中的指针域需额外占用存储空间; 链式存储结构是一种非随机存储结构。 4 【正确答案】 D 【试题解析】 顺序结构、选择结构和循环结构 (或重复结构 )是结构化程序设计的3种基本结构。 5 【正确答案】 D 【试题解析】 测试 的目的是发现软件中的错误。经验表明,程序中存在错误的概率与该程序中已发现的错误数成正比。这一现象说明,
10、为了提高测试效率,测试人员应该集中对付那些错误群集的程序。 6 【正确答案】 C 【试题解析】 算法的复杂度主要包括算法的时间复杂度和算法的空间复杂度。所谓算法的时间复杂度是指执行算法所需要的计算工作量,即算法执行过程中所需要的基本运算的次数;算法的空间复杂度一般是指执行这个算法所需要的内存空间。 7 【正确答案】 D 【试题解析】 软件生命周期分为软件定义、软件开发及软件运行维护 3个阶 段。本题中,详细设计、软件编码和软件测试都属于软件开发阶段;维护是软件生命周期的最后一个阶段,也是持续时间最长,花费代价最大的一个阶段,软件工程学的一个目的就是提高软件的可维护性,降低维护的代价。 8 【正
11、确答案】 C 【试题解析】 选项 A)、 B)显然不合题意。数据定义语言 (Data Definition Language,简称 DDL)负责数据的模式定义与数据的物理存取构建;数据操纵语言 (Data Manipulation Language,简称 DML)负责数据的操纵,包括增、删、改等操作。 9 【正确答案】 C 【试题解析】 数据库 (Database,简称 DB)是数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序所共享。数据库中的数据具有 “集成 ”、 “共享 ”之特点。 10 【正确答案】 D 【试题解析】 数据处理是指将数据转
12、换成信息的过程,故选项 A)叙述错误;数据的物理独立性是指数据的物理结构的改变,不会影响数据库的逻辑结构,故选项 B)叙述错误;关系中的行称为元组,对应存储文件中的记录,关系中的列称为属性,对应存储文件中的字段,故 选项 C)叙述错误。 11 【正确答案】 C 【试题解析】 C语言规定的标识符只能由字母、数字和下划线 3种字符组成,第一个字符必须为字母或下划线,并且不能使用 C语言中的关键字作为标识符。选项 C)中 goto和 int是关键字, b-a中 -不是组成标识符的 3种字符之一,选项 D)中 int是关键字。所以,均是不合法用户标识符的选项是 C)。 12 【正确答案】 D 【试题解
13、析】 选项 D)为两条语句。 13 【正确答案】 D 【试题解析】 当执行输入时,把整数赋给字符型变量 c(整型与字符型能 相互转化 ),把 23赋给整型变量 i,把 456赋给字符数组 s, 789之所以没有被接受是因为字符串输入时,遇空格结束。 14 【正确答案】 C 【试题解析】 实参可以是表达式,在类型上应按位置与形参一一对应匹配。如果类型不匹配, C编译程序按赋值兼容的规则进行转换。 15 【正确答案】 D 【试题解析】 本题考查了数组的定义和初始化, c是一个字符型指针数组,每个元素都是一个指向字符串的指针。 16 【正确答案】 C 【试题解析】 共用体所占存储空间的大小是所有成员
14、所占存储单元的和;共 用体变量所占存储单元的大小是所有成员中占据存储空间最大的成员所占存储空间的大小。本题中字符数组成员 z占 8个字节的长度,长度最长,所以共用体变量them用 sizeof计算长度为 8。 17 【正确答案】 A 【试题解析】 此题考查有关标准设备的知识。在多数 C语言版本中, stdio.h文件至少定义了 4种标准设备文件,可以直接引用不必含有打开操作,包括: 标准输入文件指针 stdin 缺省为键盘; 标准输出文件指针 stdout 缺省为显示器; 标准错误输出文件指针 stderr 缺省为 显示器; 标准打印输出文件指针 stdprn 指打印机; 此外,还可能包括如辅
15、助设备等标准文件指针,且多数文件指针可以被重新定向到其他设备。 18 【正确答案】 D 【试题解析】 非常明显,选项 A)与选项 C)含义相同,表示 k除以 2的余数非零,但要注意的是,任何整数除以 2的余数只有两个结果, 0和 1。选项 A)与选项C)的含义表示 k除以 2的余数为 1,也与选项 B)的含义相同,所以答案为选项D)。 19 【正确答案】 B 【试题解析】 用户调用标准库函数前不必重新定义,而只需使用预编译 命令将该函数所在文件包括到用户源文件中即可。而且,系统允许用户重新定义标准库函数,但此时该函数将失去原有含义。因此,正确答案为选项 B)。调用函数时,必须要注意以下语法:
16、函数名必须与所调用的函数名字完全一致; 实参的个数与形参的个数一致; 函数必须先定义,后调用。如果被调用的函数的返回值为 int型或 char型,则被调用函数的定义也可以放在调用的位置之后。 如果在函数调用之前没有对函数作声明,则编译系统会把第一次遇到的该函数形式作为函数的声明,并将函数类型默认为 int型。 20 【正确答案】 B 【试题解析】 选项 A)中包含一个不合法的运算符 “: =”;选项 C)应改为(int)18.5%3;选项 D)可理解为两个表达式: a+7=c+b和 a=a+7,其中第一个是错的,因为 C语言规定赋值号的左边只能是单个变量,不能是表达式或常量等。因此,正确答案是
17、选项 B),它实际上相当于 a=(b=c+2),进而可分解为两个表达式:b=c+2和 a=b。 21 【正确答案】 B 22 【正确答案】 D 23 【正确答案】 B 24 【正确答案】 D 25 【正确答案】 B 26 【正确答案】 A 27 【正确答案】 C 28 【正确答案】 D 29 【正确答案】 B 30 【正确答案】 B 31 【正确答案】 A 32 【正确答案】 C 33 【正确答案】 A 34 【正确答案】 A 35 【正确答案】 D 36 【正确答案】 D 37 【正确答案】 D 38 【正确答案】 C 39 【正确答案】 C 40 【正确答案】 C 41 【正确答案】 D
18、42 【正确答案】 D 43 【正确答案】 B 44 【 正确答案】 D 45 【正确答案】 D 46 【正确答案】 A 47 【正确答案】 B 48 【正确答案】 C 49 【正确答案】 C 50 【正确答案】 C 51 【正确答案】 n/2 52 【正确答案】 自顶而下 53 【正确答案】 继承 54 【正确答案】 数据流 55 【正确答案】 逻辑数据模型 56 【正确答案】 4.0或 4 57 【正确答案】 y%2 1或 y%2或 y%2! 0 58 【正确答案】 int * 59 【正确答案】 aeiou 60 【正确答案】 struct STRU* 61 【正确答案】 310 62 【正确答案】 63 【正确答案】 x y z u 64 【正确答案】 6 6 65 【正确答案】 0 aln-a2n或 s2n-aln 66 【正确答案】 “bi dat“ fp