[计算机类试卷]国家二级(C语言)笔试模拟试卷171及答案与解析.doc

上传人:赵齐羽 文档编号:503331 上传时间:2018-11-29 格式:DOC 页数:24 大小:74.50KB
下载 相关 举报
[计算机类试卷]国家二级(C语言)笔试模拟试卷171及答案与解析.doc_第1页
第1页 / 共24页
[计算机类试卷]国家二级(C语言)笔试模拟试卷171及答案与解析.doc_第2页
第2页 / 共24页
[计算机类试卷]国家二级(C语言)笔试模拟试卷171及答案与解析.doc_第3页
第3页 / 共24页
[计算机类试卷]国家二级(C语言)笔试模拟试卷171及答案与解析.doc_第4页
第4页 / 共24页
[计算机类试卷]国家二级(C语言)笔试模拟试卷171及答案与解析.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、国家二级( C语言)笔试模拟试卷 171及答案与解析 1 算法的空间复杂度是指 ( A)算法程序的长度 ( B)算法程序中的指令条数 ( C)算法程序所占的存储空间 ( D)执行算法需要的内存空间 2 在结构化程序设计中,模块划分的原则是 ( A)各模块应包括尽量多的功能 ( B)各模块的规模应尽量大 ( C)各模块之间的联系应尽量紧密 ( D)模块内具有高内聚度、模块间具有低耦合度 3 下列叙述中,不属于测试的特征的是 ( A)测试的挑剔性 ( B)完全测试的不可能性 ( C)测试的可靠性 ( D)测试的经济性 4 下列关于队列的叙述中正确的是 ( A)在队列中只能插入数据 ( B)在队列中

2、只能删除数据 ( C)队列是先进先出的线性表 ( D)队列是先进后出的线性表 5 已知二叉树后序遍历序列是 dabec,中序遍历序列是 debac,它的前序遍历序列是 ( A) acbed ( B) decab ( C) deabc ( D) cedba 6 某二叉树中有 n个度为 2的结点,则该二 叉树中的叶子结点数为 ( A) n+1 ( B) n-1 ( C) 2n ( D) n/2 7 设有如下三个关系表 下列操作中正确的是 ( A) T=RS ( B) T=R S ( C) T=RS ( D) T=R/S 8 下列叙述中,正确的是 ( A)用 E-R图能够表示实体集间一对一的联系、一

3、对多的联系和多对多的联系 ( B)用 E-R图只能表示实体集之间一对一的联系 ( C)用 E-R图只能表示实体集之间一对多的联系 ( D)用 E-R图表示的概念数据模型只 能转换为关系数据模型 9 下列有关数据库的描述,正确的是 ( A)数据处理是将信息转化为数据的过程 ( B)数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变 ( C)关系中的每一列称为元组,一个元组就是一个字段 ( D)如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字 10 C语言规定,在一个源程序中, main函数的位置 ( A)必须在最开始 ( B)必须在系

4、统调用的库函数的后面 ( C)可以任意 ( D)必须在最后 11 以下叙述中错误的是 ( A)计算机不能直接执行用 C语言编写的源程序 ( B) C程序经 C编译程序编译后,生成后缀为 .obj的文件是一个二进制文件 ( C)后缀为 .obj的文件,经连接程序生成后缀为 .exe的文件是一个二进制文件 ( D)后缀为 .obj和 .exe的二进制文件都可以直接运行 12 下列选项可以正确表示字符型常量的是 ( A) r ( B) a ( C) 897 ( D) 296 13 以下叙述中正确的是 ( A)构成 C程序的基本单位是函数 ( B)可以在一个函数中定义另一个函数 ( C) main()

5、函数必须放在其他函数之前 ( D) C函数定义的格式是 Ki+); return(i); 39 阅读下列程序,则程序的输出结果为 _。 #include“stdio.h“ struct ty int data; char c; ; main() struct ty a=30, x; fun(a); printf(“%d%c“, a.data, a.c); fun(struct ty b) b.data=20; b.c=y; 国家二级( C语言)笔试模拟试卷 171答案与解析 1 【正确答案】 D 【试题解析】 算法的复杂度主要包括算法的时间复杂度和算法的空间复杂度。所谓算法的时间复杂度是指执行

6、算法所需要的计算工作量;算法的空间复杂度是指执行这个算法所需要的内存空间。 2 【正确答案】 D 【试题解析】 在结构化程序设计中,一般较优秀的软件设计尽量做到高内聚、低耦合,这样有利于提高软件模块的独立性,也是模块划分 的原则。 3 【正确答案】 C 【试题解析】 软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定。它有 3个方面的重要特征,即测试的挑剔性、完全测试的不可能性及测试的经济性。其中,没有测试的可靠性这一说法。 4 【正确答案】 C 【试题解析】 队列是一种操作受限的线性表。它只允许在线性表的一端进行插入操作,另一端进行删除操作。其中,允许插入的

7、一端称为队尾 (rear),允许删除的一端称为队首 (front)。队列具有先进先出的特点,它是按 “先进先出 ”的原则 组织数据的。 5 【正确答案】 D 【试题解析】 依据后序遍历序列可确定根结点为 c;再依据中序遍历序列可知其左子树由 deba构成,右子树为空;又由左子树的后序遍历序列可知其根结点为e,由中序遍历序列可知其左子树为 d,右子树由 ba构成,如下图所示,求得该二叉树的前序遍历序列为选项 D)。 6 【正确答案】 A 【试题解析】 对于任何一棵二叉树 T,如果其终端结点 (叶子 )数为 n1,度为 2的结点数为 n2,则 n1=n2+1,所以该二叉树的叶子结点数等于 n+1。

8、 7 【正确答案】 C 【试题解析】 对于两个关系的合并操作可以用笛卡尔积表示。设有 n元关系 R和 m元关系 S,它们分别有 p和 q个元组,则 R与 S的笛卡尔积记为 RS,它是一个 m+n元关系,元组个数是 pq,由题意可得,关系 T是由关系 R与关系 S进行笛卡尔积运算得到的。 8 【正确答案】 A 【试题解析】 两个实体之间的联系实际上是实体集间的函数关系,这种函数关系可以有下面几种,即一对一的联系、一对多 (或多对一 )的联系和多对多的联系;概念模型便于向各种模型转换。由于概念模型不依赖于具体的数据库管理系统,因此,容易向关系模型、网状模型和层次 模型等各种模型转换。 9 【正确答

9、案】 D 【试题解析】 数据处理是指将数据转换成信息的过程,故选项 A)叙述错误;数据的物理独立性是指数据的物理结构的改变,不会影响数据库的逻辑结构,故选项 B)叙述错误;关系中的行称为元组,对应存储文件中的记录,关系中的列称为属性,对应存储文件中的字段,故选项 C)叙述错误。 10 【正确答案】 C 【试题解析】 不论 main函数在整个过程中的位置如何,一个 C程序总是从main函数开始执行的。 11 【正确答案】 D 【试题解析】 一个 C语言 的源程序 (后缀名为 .c)在经过编译器编译后,先生成一个汇编语言程序,然后由编译程序再将汇编语言程序翻译成机器指令程序,即目标程序 (后缀名为

10、 .obj),目标程序不可以直接运行,它要和库函数或其他目标程序连接成可执行文件 (后缀名为 .exe)后方可运行。 12 【正确答案】 A 【试题解析】 C语言中,一个字符常量代表 ASCII字符集中的一个字符,在程序中用单引号括起来作为字符常量,字符常量的的范围是 0 127。由于字符常量用单引号括起来,所以选项 B), C)错误,选项 D)超过了字符常量的表示范围。 13 【正确答案】 A 【试题解析】 本题考查 C语言的综合基础知识。构成 C程序的基本单位是函数,不论 main函数在整个程序中的位置如何,一个 C程序总是从 main函数开始执行, C语言的函数定义都是互相平行、独立的,

11、在定义函数时,一个函数内不能定义另一个函数。 C函数定义的一般格式有两种:传统格式和现代格式。传统格式也称 K&R格式,是早期编译系统使用的格式;现代格式又称 ANSI格式,是现代编译系统使用的格式。 14 【正确答案】 D 【试题解析】 本题中, scanf函数的格式控制没有空格,所 以,对于选项 A)、B)、 C),输入的第一个空格会作为字符赋值给变量 c1,而不会被解释成分隔符。 15 【正确答案】 D 【试题解析】 “&”是求址运算符, “*”是指变量说明符。选项 A)、 B)应改为scanf(“%d“, p);选项 C)中指针变量 p未指向一确定的内存单元,不能为其赋值,并且这样做很

12、危险,建议不使用。 16 【正确答案】 B 【试题解析】 本题中 a的值为 6, b的值为 8,最后 s的值为 8, s*=s等价于s=s*s。 17 【正确答案】 C 【试题解析】 本题考查简单 的 ifelse 语句。先执行条件 if(a b),显然不成立,在执行 else语句。 18 【正确答案】 A 【试题解析】 在 C语言中,应当在定义函数时指定函数值的类型,凡不加类型说明的函数,一律按整型处理。在定义函数时,对函数值说明的类型一般应该和return语句中的表达式类型一致。如果函数值的类型和 return语句中的表达式类型不一致,则以函数类型为主,即函数类型决定返回值的类型。 19

13、【正确答案】 D 【试题解析】 C语言中,字符数据参加运算时,实际上是其 ASCII码参与运算。大 写字母的 ASCII码比其对应的小写字母的 ASCII码小 32。因此大写字母转化为小写字母只需将其加上 32即可。所以选项 B)、 C)都符合条件,因为变量 c中存储的是大写字母,所以 “c-A”的值一定小于 26,故选项 A)与选项 C)的含义相同。 20 【正确答案】 D 【试题解析】 因为 x的值为大于 1的奇数,所以 x除以 2的余数等于 1,因此,选项 A)、 C)中表达式的结果为真,不为 0;对于选项 B)来说, x除以 2的商不会等于 0;选项 D)中表达式的结果为假,即等于 0

14、。 21 【正确答案】 A 【试题 解析】 因为变量的初始值分别为 “k=5, n= 0”,所以程序第一次进入循环时,执行 default语句,这时 k=4,执行 “case 4: ”这个分支,结果是 “n=2,k=3”,打印出 2;程序然后进行第二次循环,这时 “n=2, k=3”,执行 “case 3: ”这个分支,结果是 “n=3, k=2”,打印出 3;程序进行第三次循环,这时 “n=3,k=2”,执行 “case 2: case 4: ”这两个分支,结果是 “n=5, k=1”,打印出 5,这时因为 n=5不满足 n 5的循环条件,因此退出循环,程序运行结束,故输出结果为235。 2

15、2 【正确答案】 B 【试题解析】 该题目应该根据循环体第一次和最后一次执行时的输出结果来决定哪一项是正确的。第一次进入循环时, n的值是 9,循环体内,先经过 n-运算, n的值变为 8,所以第一次的输出值是 8,由此可以排除选项 A)和 D)。由循环条件 n 6可以知道,最后一次循环开始时, n的值应该为 7,所以最后一次执行循环时,输出为 6,由此可以排除选项 C)。 23 【正确答案】 A 【试题解析】 本题主要考查了字符输入输出函数 getchar和 putchar的使用。getchar函数用来 从标准输入设备上读入一个字符, putchar(c)函数是将字符变量 c中的字符输出到标

16、准输出设备上,并且字符可以看作整数参与运算。 24 【正确答案】 A 【试题解析】 本题考查了 continue和 break语句在循环语句中的作用。 break语句的作用是结束本层循环,而 continue语句的作用是结束本次循环直接进入到下次循环。 25 【正确答案】 A 【试题解析】 本题利用多重 for循环的嵌套来实现对二维数组元素的按列排序。利用最外层循环来实现对列的控制。内部循环利用选择法对数组元素 按照从小到大的顺序进行排列,最后输出对角线上的元素值。 26 【正确答案】 B 【试题解析】 在 main函数中,对 f(1)和 f(2)的值进行了累加。 f(1)=1 f(2)=f(

17、1)+1=2 最后, j的值为 1+2=3 27 【正确答案】 A 【试题解析】 本题主要考查的知识点是大写字母比它对应的小写字母 ASCII码值小 32,并且字符可以看作整数进行算术运算等操作。 28 【正确答案】 B 【试题解析】 本题用循环的方法考查对数组概念的掌握。首先,当 i=0时,数组中的位置是 a20=7,当然,如果用排除法,就不用考虑后面的循环,因为在 4个选项中,第 1个数为 7的选项只有 B)。本题执行第 2次循环时, i的值为 1,则pfintf函数中的数组指向为 a11=5,依次循环,可求出答案。 29 【正确答案】 A 【试题解析】 通过地址来引用二维数组,若有以下定

18、义: int a34, i, j;且当0i 3, 0j 4,则可以有以下几种方式来引用数组中的第 i行,第 j列的元素:aij, *(ai+j), *(*(a+i)+j), (*(a+i)j, *(&a0 0+4*i+j)。表达式&a00+2*i+j-2相当于是地址 &a00加上多少偏移量。 30 【正确答案】 C 【试题解析】 本题的选项 A)和 B)犯了同样的错误,即指针变量在定义后并没有指向具体的变量。也就是说,指针变量中没有确定的地址值,它的值是不可预见的,所指的单元也是不可预见的,因此不能进行赋值操作。另外,在选项 D)中, s是 int型指针变量, p是 char型指针变量,所指向

19、的内存单元所占用的字节数是不同的,因而不能将字符指针变量 p的值赋给整型指针变量 s。 31 【正确答案】 C 【试题解析】 本段程序的作用是输出字符串 “lanu-age”中字母 u之前的字符,并将其转化为大写字母。 32 【正确答案】 D 【试题解析】 本题考查了二维数组元素引用的方法。题中用动态存储分配函数malloc分配了一个 int型数据长度大小的内存,然后指针 p指向了这段内存,函数f()中对 p所指向的数据进行了赋值, p11为二维数组第二行第二列的元素,对应于实参 a的元素 5,所以输出结果为 5。 33 【正确答案】 B 【试题解析】 调用函数 f()时,将 数组 a的地址传

20、递给了指针 q,此时 q指向的就是数组 a的第一个元素 a0。在 5次循环过程中, q始终指向 a0,因此 a0的值增加了 5。最后的输出结果为 “6, 2, 3, 4, 5”。 34 【正确答案】 A 【试题解析】 C语言的字符常量是用单引号 (即撇号 )括起来的一个字符。除此之外,在 C语言中还允许用一个 “”开头的字符序列来表示字符常量。其中,形式“ddd“表示 1到 3位 8进制数所代表的字符;形式 “xhh“表示 1到 2位 16进制数所代表的字符。在本题中, x13表示回车符,是一个字符常量; 081用 8进制数所代表的字符,但形式不正确,因为 8进制数所代表的字符中不会出现数字

21、“8”;5不是一个字符,而是一个十进制数字; n是用双引号括起来的一个字符,表示一个字符串,而不是字符常量。 35 【正确答案】 D 【试题解析】 本题考查数组指针的应用。选项 D)第一层括号中为数组 a中第 i项元素的值,外面再加指针运算符没有意义。 36 【正确答案】 B 【试题解析】 strcpy()函数的功能是将字符串 q复制到从 p3位置开始的存储单元,同时复制字符串结束标志 0到 P6中。函数 strlen()返回的是字符串中不包括 0在内的实际长度,故本题答案为 B)。 37 【正确答案】 A 【试题解析】 auto变量:无 static声明的局部变量。用 auto作存储类别的声

22、明时,可以不写 auto,存储类别隐含确定为 auto(自动存储类别 ),是动态存储方式。大多数变量是自动变量。用 static声明的局部变量是静态局部变量。函数调用结束后静态局部变量占据的内存存储单元空间不释放,局部变量保留原值,下次调用时可以继续使用该值。用 extern声明外部变量,外部变量即全局 变量,可以用 extern声明来改变全局变量的作用域,实际上,关键字 “auto”可以省略, auto不写则隐含确定为 “自动存储类别 ”,属于动态存储方式 38 【正确答案】 C 【试题解析】 本题考查按位与 “&”。因为 1&1=1, 0&0=0,所以任何数与自身按位与,结果仍为此数,不发

23、生变化。 39 【正确答案】 A 39 【试题解析】 软件生命周期一般包括可行性研究与需求分析、设计、实现、测试、交付使用以及维护等,还可以将软件生命周期分为三个阶段: 软件定义阶段:可行性研究和需求分析; 软件 开发阶段:设计、实现和测试; 软件运行维护阶段:交付使用和维护。 39 【试题解析】 软件维护活动包括以下几类:改正性维护、适应性维护、完善性维护和预防性维护。改正性维护是指在软件交付使用后,为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错误的过程;适应性维护是指为了使软件适应变化,而去修改软件的过程;完善性维护是指为了满足用户对软件提出的新功

24、能与性能要求,需要修改或再次开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性;预防性维护是为了提 高软件的可维护性、可靠性等,为以后的进一步改进软件打下良好基础。 39 【试题解析】 数据的逻辑结构有线性结构和非线性结构两大类。 39 【试题解析】 在任意一棵二叉树中,度为 0的结点 (即叶子结点 )总是比度为 0的结点多一个。 39 【试题解析】 在 E-R图中用矩形表示实体;椭圆形表示属性;菱形表示联系。 39 【试题解析】 C语言的语法规定: else子句总是与前面最近的不带 else的 if相结合。因为 x不大于 y,所以执行 printf(“%d n“, z)

25、;语句。 39 【试题解析】 循环前,变量 y的值为 9,其中,循环语句在 y大于 0情况下循环,每次循环后 y的值都减 1。循环体是当 y能被 3整除时输出表达式 -y,输出的是减 1后的 y值。这样,第一次循环因 y为 9,能被 3整除,输出 8, y也变成8“又经两次循环, y的值变为 6,又让 y减 1变成 5,并输出 5;又经两次循环, y的值变成 3,让 y减 1变成 2,输出 2;再经两次循环后, y的值变成 0,结束循环,所以程序输出 852。 39 【试题解析】 本题要求将一个 for循环改成 while循环。首先要保证循环条件相同,在 for循环中,每次执行循环之后,循环

26、控制变量 k都会加 1,而 while循环则没有,故需在循环体中增加改变 k数值的语句 “k+”。 39 【试题解析】 本题中,代码定义 3行 2列的二维数组 a,定义指向两个元素的一维数组指针 p,并让 p指向两维数组 a的首行,则代码 *(*(p+2)+1)中的 p+2指向两维数组 a的第三行 a2, *(p+2)指向 a20, *(p+2)+1指向 a21, *(*(p+2)+1)是引用 a21,其值是 60。 39 【试题解析】 在本题中, for循环体每执行完一次,变量 i的值自加两次。 i的初值为 a,执行一次循环后变为 c,之后再变成 e,当其变为 g时,循环条件若不满足,循环终

27、止,故本题共输出 3个字符。表达式 “i-a+A”即表示输出 i对应的大写字母,结果为 ACE。 39 【试题解析】 函数 f()通过 for循环逐个比较数组 x中的元素,循环结束后, p0和 p1分别表示最大值和最小值在数组中的下标位置,然后按照题意将最大值 xp0和数组的最后一个元素 xn-1)交换位置,再将最小值 xp1和第一个元素 (x0)进行交换,所以空白处应该填入 x0。 39 【试题解析】 str是指针变量,它指向字符型数据,在循环过程中,可以用*(str+i)来访问字符串中的第 i个元素,判断是否为结束标志,如果不是, i=i+1,继续取下一个元素进行判断,直到 *(str+i)的值为 0,为止,也可以用下标的方式引用字符,如 *(str+i)相当于 stri。 39 【试题解析】 本题的参数传递属于值传递,所以被调用函数内不能改变调用函数中的数据。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1