全国计算机等级考试二级C语言真题题库22014年3月_第1页
全国计算机等级考试二级C语言真题题库22014年3月_第2页
全国计算机等级考试二级C语言真题题库22014年3月_第3页
全国计算机等级考试二级C语言真题题库22014年3月_第4页
全国计算机等级考试二级C语言真题题库22014年3月_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

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

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

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

4、正确答案为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为根节点,线性表为51793。B选项中,9为根节点,线性表为97135。C选项中,1为根节点,线性

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

6、达到最大值,故此二叉树为满二叉树,也是完全二叉树,该二叉树没有度为1的节点,有64个叶子节点。故正确答案为A选项。7. 二叉树的中序序列为BDCA,后序序列为DCBA,则前序序列为( )。A DCBAB BDCAC ABCDD BADC答案:C解析二叉树遍历可以分为3种:前序遍历(访问根节点在访问左子树和访问右子树之前)、中序遍历(访问根节点在访问左子树和访问右子树两者之间)、后序遍历(访问根节点在访问左子树和访问右子树之后)。本题中中序序列为BDCA,后序序列为DCBA,可知A为根节点,BDC为左侧节点,C是B右子节点,D是C右子节点,故前序序列为ABCD,C选项正确。8. 下面能作为软件需

7、求分析工具的是( )。A PAD图B 程序流程图C 甘特图D 数据流程图(DFD图)答案:D解析软件需求分析方法包括结构化分析方法和面向对象的分析方法两大类,前者常用工具为数据流图(DFD)、数据字典(DD)、判定表、判定树等。故D选项正确。选项B是软件功能实现时设计图。9. 下面不属于对象主要特征的是( )。A 唯一性B 多态性C 可复用性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解析从关系中找出满足给定条件的元组的操作称为选择,“”为

8、交运算,它由属于前者且属于后者的元组组成。题目为选出属于属性B,同时属性C大于4,并且属性D大于3的元组,结果为(c,c,11,4),应保留全部属性。故A选项正确。11. C语言整数不包括( )。A 带小数点的整数B 正整数C 负整数D 无符号整数答案:A解析C语言整数包括正整数、负整数、无符号整数、不含带小数点的整数,故答案为A选项。12. 设a,b,c是整型变量,且已正确赋初值,以下选项中错误的赋值语句是( )。A a1(bc2);B a(b3)*cC abc10D a2(b9)=1答案:D解析D选项中,“()”具有最高优先级,b先赋值9,再根据赋值运算符号白右向左进行赋值,再给b赋值为1

9、,再计算2b,赋值运算符左边必须是一个变量,但数值2是常量,语法错误,故答案为D选项。13. 以下选项中,合法的实数是( )。A 15E2B E11C 210ED 19E14答案:A解析E表示“10的幂次”,E的右侧必须是整数,排除B、C、D选项、答案为A选项。14. 关于程序设计基本概念,以下叙述错误的是( )。A 计算机可以直接执行由任意高级语言编写的程序B 高级语言都有与之对应的编译程序或解释程序C 用任何一种计算机高级语言都可以把算法转换为程序D 结构化算法可以解决任何复杂的问题答案:A解析计算机只能识别机器语言,不能直接识别由高级语言编写的程序,故答案为A选项。15. 以下不能用于实

10、型数据的运算符是( )。A B C *D +答案:A解析“”符号两边必须是整数,因此答案为A选项。16. C语言中,最基本的数据类型包括( )。A 整型、实型、逻辑型B 整型、字符型、数组C 整型、实型、字符型D 整型、实型、结构体答案:C解析C语言中,最基本的数据类型包括整型、实型、字符型,答案为C选项。17. 若有定义:int0,b0,c0,d0;,有C语言表达式(a+b+)?c+:d+,以下关于其执行顺序的叙述正确是( )。A 先执行a+,表达式a+的值为0,短路,得a+,执行它B 先执行a+,表达式a+的值为0;再执行b+,表达式b+的值为0,由此可确定(a+&&b+)

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

12、执行表达式3,即d+,答案为A选项。18. 有以下程序:程序运行后的输出结果是( )。A 123B ABCC abcD 012答案:A解析当满足ch<'E',输出ch-'A',即字符在ASCII码相减进行输出,d表示输出十进制整数。循环开始,chB,print(“d”,ch-'A')1,以此类推,答案为A选项。19. 以下关于指针的叙述,错误的是( )。A 两个基类型相同的指针变量不能指向同一个对象B 可以通过对指针变量自增、自减来移动指针C 只有两个类型相同的指针才能进行减运算D 一个指针变量可以通过不同的方式获得一个确定的地址值答案:A

13、解析只要两个指针变量基类型相同,可以指向同一个对象,故答案为A选项。20. 对于函数声明:void fun(float array,int *ptr);以下叙述正确的是( )。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. 有以下程序:程序

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

15、错误,答案为A选项。23. 有以下程序:执行时若输入以下字符串: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 djot

16、xD flqvz答案:B解析在for循环中,执行完while语句后,j值为每行字符串的长度,此时aij-1为字符串数组每个元素的最后一个字符,aij-2为倒数第二个字符。因此wiaij2,比如i0;j6,则w0a04e,循环依次赋值,最后输出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()函数返回的是该字符串的长度,不包含结束符,str是一个指针变量,占用4字节长度,但

17、是由于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”,“cc”,“dd“;,则以下叙述正确

18、的是( )。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是字符'a'B *ps0是字符串“aa”C ps0是字符'a'D ps是字符串“aa”答案:A解析指针数组ps定义后,ps0代表数组首个元素的地址,即“aa”的地址,同时也是“aa”第一个

19、字符a的地址,所以*ps0代表字符a,答案为A选项。29. 以下合法的转义字符是( )。A '0X41'B '0X41'C 'X41'D 'X41'答案:D解析“xhh”表示1到2位十六进制所代表的字符,故答案为D选项。30. 在源程序的开始处加上”#include<stdioh>”进行文件引用的原因,以下叙述正确的是( )。A stdioh文件中包含标准输人输出函数的函数说明,通过引用此文件以便能正确使用printf、scanf等函数B 将stdioh中标准输入输出函数链接到编译生成的可执行文件中,以便能正确运行C

20、将stdioh中标准输入输出函数的源程序插入到引用处,以便进行编译链接D 将stdioh中标准输入输出函数的二进制代码插入到引用处,以便进行编译链接答案:A解析“stdioh”文件中包含标准输入输出函数的函数说明,预处理指令#includestdioh是指程序可以在该文件中找到printf、scanf等函数,因此答案为A选项。31. 设有定义:int a100,1,2,3,4,5,6,7,8,9,*Pa,i;,若0i9,则对a数组元素的引用错误的是( )。A a10B *(ai)C PiD ap-a答案:A解析长度为n的数组其各个元素的下标应该是从0到n-1,因此,长度为10的数组a,第10个

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

22、e赋值,再将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答案:A解析malloc(size)函数作用是在内存的动态存储区分配一个长度为si

23、ze的连续空间,函数的返回值是新分配的存储区的首地址,将该地址赋值给P指针,然后取P指针的地址,调用fun函数。fun函数中对指向指针的指针s指向的内存单元赋值,其中x1表示二维数组x的第二行的行地址,x1+1表示二维数组x的第二行第二列的地址,所以fun函数的功能是将二维数组x的第二行第二列的值,即x11赋值给*s,*s为p,所以*s代表*P,x11与a11等价,因此答案为A选项。36. 有如下定义:以下对内嵌结构体成员的引用形式错误的是( )。A ps-birthyB sbirthyC psbirthyD (*ps)birthy答案:C解析使用结构体指针对结构体成员进行访问时,形式为结构指

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

25、为A选项。38. 以下程序段中,与其他3个功能不同的程序段是( )。A s0;i1;for(;)s+=i;i+;if(i<=10)break;B s0;i1;for(;i<=10;)s+=i;i+;C s0;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语句,循环体只执行一次,结束整个循环过程,因此答案为A选项。39. 设有定义:int a0,b1;,以下表达式中,会产生“短路”现象,致使变量b的值不变的是( )。A +a|+bB a

26、+|+bC +ab+D a+b+答案:D解析+放在变量前面时,表示将变量+1,再参与其他操作,a+b+时,由于a值是0,直接判定与运算结果为0,忽视b+的值,因此b值不发生改变,答案为D选项。40. 关于地址和指针,以下说法正确的是( )。A 通过强制类型转换可以将一种类型的指针变量赋值给另一种类型的指针变量B 可以取一个常数的地址赋值给同类型的指针变量C 可以取一个表达式的地址赋值给同类型的指针变量D 可以取一个指针变量的地址赋值给基类型相同的指针变量答案:A解析常数的地址存储在内存的常量区,常量区存储的都是常量,值都是不可修改的,所以直接取常量的地址赋给指针变量没有任何意义,c语言也不允许

27、这样做,编译会出错,B选项错误;表达式的值存储在临时变量中,内存中存在专门用来存储临时变量的区域,对这块地址进行操作也是没有意义的,C语言不允许这样做,编译会出错,C选项错误;可以取一个指针变量的地址,但是指针变量的地址属于指针,只能赋值给指针类型的指针变量,D选项错误。故答案为A选项。二、程序填空题41. 给定程序中,函数fun的功能是:将形参指针所指结构体数组中的3个元素按num成员进行升序排列。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构!试题程序:答案:(1)std(2)PERSON(3)std考点分析本题考查:数据类型的定义;数组元素的操作;函数参数的传递。要使用函数对整个数组进行操作时,应使用数组名作为函数的实参。当使用数组名作实参时,函数传递的实际上是数组的首地址,而并非数组本身,此时形参除了可以定义为指针变量外,还可以定义为数组,并且数组可以不指定大小,但无论用哪种形式,程序在编译时都将其作为一个指针变量处理。解题思路填空1:定义形参变量引用数组s

温馨提示

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

评论

0/150

提交评论