您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > 2012年9月二级C笔试密押试卷
2012年9月二级C笔试密押试卷一、选择题((1)—(10)、(20)—(40)每题2分,(11)—(20)每题1分,共70分)在下列各题的A)、B、C、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(1)以下叙述中错误的是()。A)算法正确的程序对于相同的输入一定有相同的结果B)算法正确的程序可以没有输入C)算法正确的程序可以没有输出D)算法正确的程序最终一定会结束(1)C【解析】一个有效的算法程序必须有一个或一个以上的输出。(2)以下叙述中正确的是()。A)树与二叉树是线性结构B)栈与线性链表是非线性结构C)队列是非线性结构D)线性表是线性结构(2)D【解析】线性表是一个线性结构。数据元素在线性表中的位置只取决于它们自己的序号。栈是限定在一端进行插入与删除的线性表。队列是指允许在一端进行插入、而在另一端进行删除的线性表。链式存储方式既可用于表示线性结构,也可用于表示非线性结构。树是一种简单的非线性结构。(3)下列叙述中错误的是()。A)冒泡排序属于交换类排序B)快速排序属于选择类排序C)堆排序属于选择类排序D)希尔排序属于插入排序(3)B【解析】冒泡排序和快速排序都属于交换类排序,堆排序属于选择类排序,希尔排序的基本思想是把记录按下标的一定增量分组,对每组记录使用插入排序,随增量的逐渐减小,所分成的组包含的记录越来越多,到增量的值减小到1时,整个数据合成一组,构成一组有序记录,故其属于插入排序方法。所以答案应为B。(4)对象实现了数据和操作的结合,是指对数据和数据的操作进行()。A)组合B)隐藏C)集成D)封装(4)D【解析】对象是由数据及可以对这些数据施加的操作组成的统一体。对象的内部,即处理能力的实行和内部状态,对外是看不见的,这一特性称作对象的封装。(5)软件生命周期中花费时间最多的阶段是()。A)软件维护阶段B)软件编码阶段C)软件开发阶段D)软件定义阶段(5)A【解析】软件生命周期分为软件定义、软件开发及软件运行维护3个阶段。本题中,详细设计、软件编码和软件测试都属于软件开发阶段;维护是软件生命周期的最后一个阶段,也是持续时间最长,花费代价最大的一个阶段,软件工程学的一个目的就是提高软件的可维护性,降低维护的代价。(6)在数据流图中,○(椭圆)代表()。A)源点B)结束C)数据流D)加工(6)D【解析】数据流图主要图符元素有:加工,用圆或椭圆表示,输入数据经过加工变换产生输出。数据流,用箭头表示,沿箭头方向传送数据的通道。存储文件,用双杠表示,处理过程中存放各种数据文件。源、潭,用方框表示,系统和环境接口。(7)使用白盒测试方法时,确定测试数据应根据()和指定的覆盖标准。A)程序的外部逻辑B)程序的复杂结构C)使用使用说明书D)程序的内部逻辑(7)D【解析】白盒测试是把测试对象看作一个打开的盒子,测试人员须了解程序的内部结构和处理过程,由于白盒测试是一种结构测试,所以被测对象基本上是源程序,以程序的内部逻辑和指定的覆盖标准确定测试数据。(8)在数据库系统中,用户所见数据模式为()。A)逻辑模式B)存储模式C)内模式D)外模式(8)D【解析】数据库管理系统的三级模式结构由外模式、模式和内模式组成。外模式,或子模式,或用户模式,是指数据库用户所看到的数据结构,是用户看到的数据视图。模式,或逻辑模式,是数据库中对全体数据的逻辑结构和特性的描述,是所有用户所见到的数据视图的总和。外模式是模式的一部分。内模式,或存储模式,或物理模式,是指数据在数据库系统内的存储介质上的表示,即对数据的物理结构和存取方式的描述。故本题答案为D。(9)最常用的一种基本数据模型是关系数据模型,它的表示应采用()。A)树状图B)网络格式C)二维表D)图表结构(9)C【解析】关系数据模型用统一的二维表结构表示实体及实体之间的联系(即关系)。(10)有三个关系R、S和T如下:SsT由关系R和S通过运算得到关系T,则所使用的运算为()。A)合并B)交C)广义笛卡尔积D)连接(10)B【解析】关系R与S的并为由属于R或属于S的元组构成的集合组合;关系R与S的笛卡尔积是一个6元关系,元素的个数是2×3=6,由R与S的有序组组合而成;自然连接是连接的一个特例,要求两个关系有公共域,通过公共域的相等值进行连接。(11)以下叙述中正确的是()。A)在C语言中,预处理命令行都以#开头B)预处理命令行必须放在C源程序的第一行C)每个C程序必须在开头包含预处理命令行:#includestdio.hD)C语言的预处理不能实现条件编译的功能(11)A【解析】本题考查的是预处理命令。bCDa0k1b1n1BCDf3h2a0k1n2x1BCDaoK1选项B正确,原因是这部分语句与C程序其他部分的语句是有区别的,所以在每个预处理语句之前都有一个#符号以示区别。C提供三种预处理语句:(1)宏替换,(2)文件包含,(3)条件编译。如果一个文件中要引用另外一个文件时才需要在开头包含预处理命令行:#includestdio.h。故本题答案为A。(12)下列定义变量的语句中错误的是()。A)inti;B)doubleint_;C)chara;D)floatcup$;(12)D【解析】本题考查的是C数据类型及其定义。C语言中用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列称为标识符,C语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。选项D中含有$,故不符合标识符的定义。故本题答案为D。(13)以下正确的字符串常量是()。A)\\\B)'opqrst'C)thankyouD)abc(13)D【解析】本题的考查点是字符串常量。字符串常量是由一对双引号括起的字符序列。例如:CHINA,program,C$12.5等都是合法的字符串常量。选项A中双引号内使用了两个转义符,即后一个双引号也作为字符串的内容了,故此字符串中还缺少用于表示字符串结束的引号,所以选项A的表示法错误;选项B、C均没有用双引号括起来,所以并不是字符串;选项D是正确的表示法。故本题答案为D。(14)设有语句chara='\010';,则变量a()。A)包含1个字符B)包含2个字符C)包含3个字符D)该语句不正确(14)A【解析】本题考查的是字符型数据。'\010'表示的是ASCII码等于10的那个字符,所以在字符变量中存储的只是一个字符。故本题答案为A。(15)已有定义:charc;,程序前面已在命令中包含ctype.h文件。不能用于判断c中的字符是否为大写字母的表达式是()。A)isupper(c)B)'A'=c='Z'C)'A'=c&&c='Z'D)c=('z'-32)&&('a'-32)=c(15)B【解析】本题的考查点是C语言运算优先级。选项A中isupper(intch)的功能是检查ch是否是大写字母。是,返回1,不是,返回0;选项B中表达式的功能是将字符'A'与c中的字符比较,将比较出的结果再与字符'Z'进行比较,不管字符'A'与c中的字符比较的结果为1还是为0,则再与字符'Z'比较,其结果总为1,所以选项B的表达式并不能判断出c中的字符是否为大写。故本题答案为B。(16)执行下面程序中的输出语句后,main(){inta;printf(%d\n,(a=4*6,a*2),a+5);}a的值是()。A)48B)24C)29D)53(16)B【解析】本题的考查点是对逗号运算符的理解。逗号运算符的求解过程是从左至右,依次求解各个表达式的值,所以在该题中,先使a的值等于24,再进行a*2,此时整个表达式的值为48,但a的值并未改变,仍为24。故本题答案为B。(17)下列语句中,符合C语言语法的赋值语句是()。A)i=1+j+k=i+2;B)1=1+i++=i+5;C)i=7+1,i++,1+4D)i=1+2,k=j+2;(17)D【解析】本题的考查点是赋值语句。选项A和B中,“1+j+k”和“1+i+”中是表达式,而赋值语句中赋值号的左边应为变量,所以不正确;选项C中由于没有“;,所以不是语句,因为语句必需以分号结束。故本题”答案为D。(18)下面程序的输出是:()。main(){intk=12;printf(k=%d,k=%o,k=%x\n,k,k,k);}A)k=12,k=12,k=12B)k=11,k=12,k=13C)k=12,k=14,k=cD)k=12,k=013,k=0b(18)C【解析】本题的考查点是格式字符。在C语言格式字符的输出中,%d是以带符号的十进制形式输出整数,即k=12;%o是以8进制无符号形式输出整数(不输出前导符0),即k=14;%x是以16进制无符号形式输出整数(不输出前导符0x),即k=c。故本题答案为C。(19)若执行下面程序时从键盘上输入4,main(){intx;scanf(%d,&x);if(x++5)printf(%d\n,x);elseprintf(%d\n,x--);}则输出是()。A)3B)4C)5D)6(19)C【解析】本题的考查点是if条件的判断。根据C语言的语法,x++是在使用x之后,再将x的值加1,在if语句中,x的值为4,条件不成立,执行else后面的语句,因为x的值已经加1,为5,所以打印结果为5。故本题答案为C。(20)有如下程序:main(){intx=12,y;if(x0)y=0;elseif(x10)y=1/x;elsey=1;printf(%d\n,y);}该程序输出结果是()。A)6B)12C)0D)1(20)D【解析】本题考查的是if…else语句的使用。x=12,符合第三个if语句的条件,所以执行y=1语句。本题答案为D。(21)下面程序的输出是()。main(){char*s=12134211;inti1=0,i2=0,i3=0,i4=0,k;for(k=0;s[k];k++)switch(s[k]){default:i4++;case'1':i1++;case'3':i3++;case'2':i2++;}printf(i1=%d,i2=%d,i3=%d,i4=%d\n,i1,i2,i3,i4);}A)i1=4,i2=3,i3=2,i4=1B)i1=4,i2=2,i3=1,i4=3C)i1=5,i2=8,i3=6,i4=1D)i1=2,i2=3,i3=1,i4=6(21)C【解析】本题的考查点是switch()语句。当switch后面括弧内的表达式的值与某一个case后面的常量的表达式的值相等时,就执行此case后面的语句,若所有的case中的常量表达式的值都没有与表达式的值匹配的,就执行default后面的语句。本题中,for循环的条件是s数组的数组元素值,只要将数组的值一一带入程序逐步求解即可。本题答案为C。(22)以下程序的输出结果是()。main(){inti=4;while(i--)printf(%d,--i);}A)42B)20C)432D)320(22)B【解析】本题的考查点是while语句的判断。i--是先使用后运算,--i是先运算后使用。i=4时,执行i--后,i变为3,执行--i后,i变为2,所以,第一次输出时,i为2;同上过程,第二次输出时,i为0。故本题答案为B。(23)下面函数:intfun1(char*x){char*y=x;while(*y++);return(y-x-1);}的功能是()。A)求字符串的长度B)字符串的比较C)字符串的复制D)字符串的连接(23)A【解析】本题的考查点是while()循环语句。这个函数的功能是求字符串的长度,需要注意的是,在返回长度时一定记住要减一,否则计算出的串长度将会多一。故本题答案是A。(24)若变量已正确定义,有以下程序段:i=0;doprintf(%d,,i);while(i++);printf(%d\n,i);其输出结果是()。A)1,1B)2,1C)0,1D)程序进入无限循环(24)C【解析】本题的考查点是do....w
本文标题:2012年9月二级C笔试密押试卷
链接地址:https://www.777doc.com/doc-3031942 .html