全国计算机等级考试二级C语言真题题库2+2014年3月.docx_第1页
全国计算机等级考试二级C语言真题题库2+2014年3月.docx_第2页
全国计算机等级考试二级C语言真题题库2+2014年3月.docx_第3页
全国计算机等级考试二级C语言真题题库2+2014年3月.docx_第4页
全国计算机等级考试二级C语言真题题库2+2014年3月.docx_第5页
免费预览已结束,剩余27页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、全国计算机等级考试二级C 语言真题题库2 2014 年 3 月(总分 43,做题时间120 分钟 )一、选择题 (每小题 1 分,共 40 分 )1. 下列叙述中正确的是( )。A 每一个节点有两个指针域的链表一定是非线性结构B 所有节点的指针域都为非空的链表一定是非线性结构C 循环链表是循环队列的链式存储结构D 线性结构的存储节点也可以有多个指针答案 :D解析 一个非空的数据结构如果满足以下两个条件:有且只有一个根节点;每一个节点最多有 个前件,也最多有一个后件,则称为线性结构,在数据结构中习惯称为线性表。双向链表节点具有两个指针域,属于线性结构,故A 选项错误。循环链表所有节点的指针域都为

2、非空,属于线性结构,故B 选项错误。循环链表是链表,循环队列属于队列,队列只能在队尾入队,在排头退队,链表可以在任何位置插入、删除,故C 选项错误。双向链表节点具有多个指针域,故D 选项正确。2.使用白盒测试方法时,设计测试用例应根据()。A 程序的内部逻辑B 程序的复杂结构C 程序的功能D 使用说明书答案 :A解析 白盒测试又称为结构测试或逻辑驱动测试,它允许测试人员利用程序内部的逻辑结构及有关信息来设计或选择测试用例,对程序所有的逻辑路径进行测试,故A 选项正确。3. 在医院,每个医生只属于某一个诊疗科,医生同一天可为多位患者看病,而一名患者可在多个科室治疗,则实体医生和患者之间的联系是(

3、)。A 多对多B 多对一C 一对多D 一对一答案 :A解析 一般来说,实体集之间必须通过联系来建立连接关系,分为三类:一对一联系(1 :1) 、一对多联系(1 : m)、多对多联系(m: n) 。医生可为多位患者看病,患者也可以找多位医生看病,实体医生与患者联系是多对多,故A 选项正确。4.设序列长度为n,在最坏情况下,时间复杂度为O(log2n) 的算法是()。A 二分法查找B 顺序查找C 分块查找D 哈希查找答案 :A解析 对长度为n 的线性表排序,最坏情况下时间复杂度,二分法查找为O(log2n) ;顺序查找法为O(n) ;分块查找时间复杂度与分块规则有关;哈希查找时间复杂度为O(1)

4、,因其通过计算HashCode来定位元素位置,所以只需一次即可。故正确答案为A 选项。5. 设数据集合为 D1 ,3,5, 7,9 , D上的关系为 R,下列数据结构B=(D,R)中为非线性结构的是( )。A R (5 ,1),(7,9),(1, 7),(9,3)B R (9 ,7),(1,3),(7, 1),(3,5)C R (1 ,9),(9,7),(7, 5),(5,3)D R (1 ,3),(3,5),(5, 9)答案 :D解析 一个非空的数据结构如果满足以下两个条件:有且只有一个根节点;每一个节点最多有一个前件,也最多有一个后件,则称为线性结构,在数据结构中习惯称为线性表。 A 选项

5、中, 5 为根节点,线性表为51793 。B 选项中, 9 为根节点,线性表为97135 。C 选项中, 1 为根节点,线性表为 19753 。 D 选项中,节点 1 与 7 都是根节点,属于非线性结构,故 D 选项正确。6. 深度为 7 的二叉树共有 127 个节点,则下列说法中错误的是( )。A 该二叉树有一个度为1 的节点B 该二叉树是满二叉树C 该二叉树是完全二叉树D 该二叉树有 64 个叶子节点答案 :A解析 在树结构中,一个节点所拥有的后件个数称为该节点的度,所有节点中最大的度称为树的度。完全二叉树指除最后一层外,每一层上的节点数均达到最大值,在最后一层上只缺少有边的若干节点。满二

6、叉树指除最后一层外,每一层上的所有节点都有两个子节点的二叉树。深度为7 的二叉树,前6 层共有节点个数为26-1 63,则第 7 层有 127-63 64 个节点,即第 7 层节点数达到最大值,故此二叉树为满二叉树,也是完全二叉树,该二叉树没有度为 1 的节点,有 64 个叶子节点。故正确答案为 A 选项。7. 二叉树的中序序列为 BDCA,后序序列为 DCBA,则前序序列为( )。A DCBAB BDCAC ABCDD BADC答案 :C解析 二叉树遍历可以分为3 种:前序遍历(访问根节点在访问左子树和访问右子树之前) 、中序遍历 (访问根节点在访问左子树和访问右子树两者之间)、后序遍历 (

7、访问根节点在访问左子树和访问右子树之后)。本题中中序序列为BDCA ,后序序列为DCBA ,可知 A为根节点, BDC 为左侧节点, C 是 B 右子节点, D 是 C 右子节点,故前序序列为 ABCD , C 选项正确。8.下面能作为软件需求分析工具的是()。APAD 图B 程序流程图C 甘特图D 数据流程图 (DFD 图 )答案 :D解析 软件需求分析方法包括结构化分析方法和面向对象的分析方法两大类,前者常用工具为数据流图(DFD) 、数据字典 (DD) 、判定表、判定树等。故D 选项正确。选项B 是软件功能实现时设计图。9.下面不属于对象主要特征的是()。A 唯一性B 多态性C 可复用性

8、D 封装性答案 :C解析 对象的基本特点如下表所示。可知 C 选项正确。10.A (c,c,11,4)B (e,e,6,1)C (a,a,2,4)D (a,a,2,4) 和 (e,e,6,1)答案 :A解析 从关系中找出满足给定条件的元组的操作称为选择,“”为交运算,它由属于前者且属于后者的元组组成。题目为选出属于属性B,同时属性C 大于 4 ,并且属性D 大于3 的元组,结果为(c,c, 11 ,4) ,应保留全部属性。故A 选项正确。11. C 语言整数不包括()。A 带小数点的整数B 正整数C 负整数D 无符号整数答案 :A解析 C 语言整数包括正整数、负整数、无符号整数、不含带小数点的

9、整数,故答案为A选项。12. 设 a, b, c 是整型变量,且已正确赋初值,以下选项中错误的赋值语句是( )。A a 1 (b c 2) ;B a (b 3)*cC a b c 10D a 2 (b 9)=1答案 :D解析 D 选项中, “ ()具”有最高优先级,b 先赋值 9 ,再根据赋值运算符号白右向左进行赋值,再给b 赋值为 1 ,再计算2b ,赋值运算符左边必须是一个变量,但数值2 是常量,语法错误,故答案为D 选项。13.以下选项中,合法的实数是()。A 15E2B E11C 210ED 19E1 4答案 :A解析 E 表示 “ 10的幂次 ”, E 的右侧必须是整数,排除B 、C

10、 、 D 选项、答案为A 选项。14.关于程序设计基本概念,以下叙述错误的是()。A 计算机可以直接执行由任意高级语言编写的程序B 高级语言都有与之对应的编译程序或解释程序C 用任何一种计算机高级语言都可以把算法转换为程序D 结构化算法可以解决任何复杂的问题答案 :A解析 计算机只能识别机器语言,不能直接识别由高级语言编写的程序,故答案为A选项。15.以下不能用于实型数据的运算符是()。A B C *D +答案 :A解析 “ ”符号两边必须是整数,因此答案为A 选项。16. C 语言中,最基本的数据类型包括( )。A 整型、实型、逻辑型B 整型、字符型、数组C 整型、实型、字符型D 整型、实型

11、、结构体答案 :C解析 C 语言中,最基本的数据类型包括整型、实型、字符型,答案为C 选项。17. 若有定义: int 0, b 0, c 0, d 0;,有 C 语言表达式 (a+ b+)?c+:d+,以下关于其执行顺序的叙述正确是( )。A 先执行 a+ ,表达式a+ 的值为 0,短路,得a+ ,执行它B 先执行 a+ ,表达式a+ 的值为 0;再执行b+ ,表达式b+ 的值为 0,由此可确定(a+&b+)值为0 ,因此执行d+C定(a+先执行 a+ ,表达式a+ 的值为 1;再执行b+ ,表达式b+ 的值为 b+) 值为 1 ,由此可确定(a+&b+) 值为 1 ,因此执行c+1,由此可

12、确D 先执行 b+ ,表达式b+ 的值为定(a+ b+) 值为 1 ,因此执行c+1;再执行a+ ,表达式a+ 的值为1,由此可确答案 :A解析 表达式1?表达式2:表达式3,若表达式1 为真,则执行表达式2,否则执行表达式3 。逻辑与运算符遵循“短路求值 ”策略,即只有在仅靠左操作数的值无法确定该逻辑表达式的结果时,才会求解右操作数,表达式(a+ b+) 中,左操作数a+ 的值为0 ,已经可以确定整个逻辑表达式的结果为0,因此右操作数b+ 不再求解,直接执行表达式3,即d+ ,答案为A 选项。18.有以下程序:程序运行后的输出结果是()。A 123B ABCC abcD 012答案 :A解析

13、 当满足 chE ,输出 ch-A ,即字符在 ASCII 码相减进行输出, d 表示输出十进制整数。循环开始, ch B,print( “d”,ch-A) 1 ,以此类推,答案为 A 选项。19.以下关于指针的叙述,错误的是()。A 两个基类型相同的指针变量不能指向同一个对象B 可以通过对指针变量自增、自减来移动指针C 只有两个类型相同的指针才能进行减运算D 一个指针变量可以通过不同的方式获得一个确定的地址值答案 :A解析 只要两个指针变量基类型相同,可以指向同一个对象,故答案为A 选项。20.对于函数声明:void fun(float array,int *ptr);以下叙述正确的是( )

14、。A 调用函数时,array 数组的元素和Ptr 都是按值传送B 函数声明有语法错误,参数array 缺少数组大小定义C 调用函数时,array 数组中将存储从实参中复制来的元素值D 函数参数 array ,ptr 都是指针变量答案 :D解析 void fun(float array , int *ptr) 定义了 2 个形参: array 和 *ptr ,其中函数形参中 int array 其实相当于 int *array ,答案为 D 选项。21. 有以下程序:程序运行后的输出结果是()A 1,0,2,0,0,9B 1,2,4,9,6,0C 2,9,0,0,1,4D 1,2,0,1,4,1

15、答案 :A解析 本题定义一个4 行2 列数组,其中赋值6 个数,其余自动为0 ,根据for循环,第一次输出第一列前三行数,分别是 1 ,0, 2;第二次输出第二列前三行数,分别是 0 ,0, 9 ,因此答案为 A 选项。22. 要求定义一个具有 6 个元素的 int 型一维数组,以下选项中错误的是( )。A int N 6, aN ;B int a2*3 0 ;C #define N 3int aN=N ;D int a 1 , 2 , 3, 4 , 5,6 ;答案 :A解析 数组名后面括号内,必须是整型常量,不可以是变量,A 选项定义错误,答案为A选项。23. 有以下程序:执行时若输入以下字

16、符串:Peach flower is Pink回车则输出结果是()。A Peachflower is pinkB Peachfloweris PinkC PeachflowerispinkD Peach flower is pink.答案 :A解析 由于用 “ s”格式输出字符串时,是以空格作为间隔符,因此,输入给b0 “ Peach,” b1= “ flower,而” while 语句给 c 赋值时, getchar() 能识别空格符, b2 “ is Pink ”,答案为 A 选项。24. 有以下程序:程序运行后的输出结果是()。A agmrwB ekpuyC djotxD flqvz答案

17、 :B解析 在 for循环中,执行完while语句后,j 值为每行字符串的长度,此时aij-1为字符串数组每个元素的最后一个字符,aij-2 为倒数第二个字符。因此wi aij 2,比如 i 0; j 6 ,则w0 a04 e,循环依次赋值,最后输出,y答案为B 选项。25. 有以下程序:程序运行后的输出结果是()。A 9,7, 4,7B 8,6, 9,6C 8,6,3,6D 10 , 8,5,8答案 :A解析 由于 name 是一个长度为9 的一维数组,故在内存中占用9 字节长度,而其中字符串 “c#line只”有 7 个字符, strlen() 函数返回的是该字符串的长度,不包含结束符,s

18、tr是一个指针变量,占用4 字节长度,但是由于name 首地址赋给了str 指针变量,在调用strlen() 函数时,返回的是指针对应地址单元的字符串的长度7,因此答案为A 选项。26. 有以下程序:程序运行时,从键盘输入2,输出结果是( )。A #y#k#p#fB #wi#nd#C xj#oeD #2222#答案 :A解析 首先定义了 个指针 P 指向数组的首地址,在while 语句中,执行功能是如果当前指针指向地址单元内字符不等于空字符0,则输 # 和指针对应地址元素的值在ASCII 码加 2 后变换的字符常量,因此,答案为A 选项。27. 若有定义: char*ps “aa”,“ bb”

19、,“ cc”,“ dd“ ;,则以下叙述正确的是( )。A ps0 是字符串 ” aa”B *ps0 是字符串 “ aa的”首地址C ps0 是字符串 ” aa的”首地址D *ps0 是字符串 “ aa”答案 :C解析 定义一个字符串数组指针 ps 后, ps 是指针变量, ps0 指向的是数组首个元素的地址,即字符串 “aa的”首地址,答案为 C 选项。28. 若有定义: char*ps “aa”,“ bb”,“ cc”,“ dd” ;,则以下叙述正确的是( )。A *ps0 是字符 aB *ps0 是字符串 “ aa”C ps0 是字符 aD ps 是字符串 “ aa”答案 :A解析 指针

20、数组 ps 定义后, ps0 代表数组首个元素的地址,即 “ aa的”地址,同时也是“aa第”一个字符 a 的地址,所以 *ps0 代表字符 a,答案为 A 选项。29. 以下合法的转义字符是( )。A 0X41B 0X41C X41D X41答案 :D解析 “ xhh”表示1 到2 位十六进制所代表的字符,故答案为D 选项。30. 在源程序的开始处加上” #include”进行文件引用的原因,以下叙述正确的是( )。A stdio h 文件中包含标准输人输出函数的函数说明,通过引用此文件以便能正确使用 printf 、 scanf 等函数B 将 stdio h 中标准输入输出函数链接到编译生

21、成的可执行文件中,以便能正确运行C 将 stdio h 中标准输入输出函数的源程序插入到引用处,以便进行编译链接D 将 stdio h 中标准输入输出函数的二进制代码插入到引用处,以便进行编译链接答案 :A解析 “ stdio h”文件中包含标准输入输出函数的函数说明,预处理指令stdio h是指程序可以在该文件中找到printf 、 scanf 等函数,因此答案为#include A 选项。31. 设有定义: int a10 0 ,1,2, 3,4,5,6,7,8,9 ,*P a, i ;,若 0i 9,则对 a 数组元素的引用错误的是( )。A a10B *( ai)C PiD ap-a答

22、案 :An0n-110a,第10 个元素为a9 ,而不是a10 ,故答案为A 选项。32.有以下程序:程序运行后的输出结果是()。A 6 , 1B 1 , 1C 7 , 1D 7 , 2答案 :C解析 表达式 c (131)11 再和 1 进行按位或运算,结果为中, 是右移符号,数字 13 换算成二进制后右移7;表达式 d (131)|1 中,首先判断 13 是否大于1 位,1 ,此时条件成立返回1 后,再和 1 进行或运算,结果为1 ,因此答案为C 选项。33. 有以下程序:程序运行后的输出结果是()。A B XXXC XXD X=答案 :A解析 主函数首先为结构体定义两个变量s1 、 s2

23、,分别使用字符串拷贝函数strcpy()为s1和s2的成员name赋值,再将s2中的成员信息赋值给s1,因此输出为“ ”,答案为A选项。34.有以下程序:程序运行后的输出结果是()。A 1,2, 1,2,0,B 1,5, 0,4,0,C 1,5,5,4,0,D 0,4,0,4,0答案 :D解析 “ ”表示与运算,主函数首先定义一个数组array6 ,初始化前4 个元素的值,其余默认值为0 。在 for 循环中,为数组array 中每一个元素换算成二进制数后和二进制整数“100”行按位与运算,再将结果进行输出,因此答案为进D 选项。35.有以下程序:结果是()。程序的运行A 5B 2C 6D 3

24、答案 :A解析 malloc(size)函数作用是在内存的动态存储区分配一个长度为size的连续空间,函数的返回值是新分配的存储区的首地址,将该地址赋值给P 指针,然后取P 指针的地址,调用fun函数。fun函数中对指向指针的指针s 指向的内存单元赋值,其中x1 表示二维数组x 的第二行的行地址,x1+1表示二维数组x 的第二行第二列的地址,所以fun函数的功能是将二维数组x 的第二行第二列的值,即x11赋值给 *s , *s为p,所以*s代表*P , x11与 a11等价,因此答案为A 选项。36.有如下定义:以下对内嵌结构体成员的引用形式错误的是()。A ps- birth yB s bi

25、rth yC ps birth yD (*ps) birth y答案 :C解析 使用结构体指针对结构体成员进行访问时,形式为结构指针名或者 (*结构指针名 )结构成员名,题目中 ps 为结构体指针,因此判断误,答案为 c 选项。-结构成员名, A 选项引用形式错37. 有以下程序:程序运行后的输出结果是( )。A 6B 21C 123456D 654321答案 :A解析 本题首先定义文件指针变量fp和一个数组a,再打开一个文件“ data dat ”,随后先给文件写入数据a0 ,由于rewind函数是将文件指针从当前位置重新指向文件开始位置,所以for循环依次将数组a 中的数据写入文件开始位置

26、,退出循环后,文件中的数据顺序为:654321,重新使指针指向文件开始位置,将此时fp指向的数据(即文件中第一个数据6) 写入变量k 中,关闭文件,输出k 值,故答案为A 选项。38.以下程序段中,与其他3 个功能不同的程序段是()。A s 0; i 1 ;for(;)s+=i;i+;if(i=10)break;B s 0; i 1 ;for(;i=10;)s+=i;i+;C s 0;for(i=1;i=10;i+)s+=i;D for(s=0,i=1;i=10;s+=i,i+);答案 :A解析 B、 C、 D 选项都表示对1 到 10 进行累加后赋给s,而 A 选项中含break 语句,循环

27、体只执行一次,结束整个循环过程,因此答案为A 选项。39. 设有定义: int a 0,b1;,以下表达式中,会产生“短路”现象,致使变量 b 的值不变的是( )。A +a|+bB a+|+bC +a b+D a+ b+答案 :D解析 +放在变量前面时,表示将变量 +1 ,再参与其他操作, a+ b+ 时,由于 a 值是 0 ,直接判定与运算结果为 0 ,忽视 b+ 的值,因此 b 值不发生改变,答案为 D 选项。40.关于地址和指针,以下说法正确的是()。A 通过强制类型转换可以将一种类型的指针变量赋值给另一种类型的指针变量B 可以取一个常数的地址赋值给同类型的指针变量C 可以取一个表达式的

28、地址赋值给同类型的指针变量D 可以取一个指针变量的地址赋值给基类型相同的指针变量答案 :A解析 常数的地址存储在内存的常量区,常量区存储的都是常量,值都是不可修改的,所以直接取常量的地址赋给指针变量没有任何意义,c 语言也不允许这样做,编译会出错, B 选项错误;表达式的值存储在临时变量中,内存中存在专门用来存储临时变量的区域,对这块地址进行操作也是没有意义的,C 语言不允许这样做,编译会出错,C 选项错误;可以取一个指针变量的地址,但是指针变量的地址属于指针,只能赋值给指针类型的指针变量, D 选项错误。故答案为A 选项。二、程序填空题41. 给定程序中,函数 fun 的功能是:将形参指针所

29、指结构体数组中的 3 个元素按 num成员进行升序排列。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构 ! 试题程序:答案 :(1)std(2)PERSON(3)std考点分析 本题考查:数据类型的定义;数组元素的操作;函数参数的传递。要使用函数对整个数组进行操作时,应使用数组名作为函数的实参。当使用数组名作实参时,函数传递的实际上是数组的首地址,而并非数组本身,此时形参除了可以定义为指针变量外,还可以定义为数组,并且数组可以不指定大小,但无论用哪种形式,程序在编译时都将其作为一个指针变量处理。解题思路 填空 1 :定义形参变量引用数组

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论