一、选择题((1)~(10)每小题2分,(11)~(50)每小题1分,共60分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。(1)数据的存储结构是指____D____。A)存储在外存中的数据B)数据所占的存储空间量C)数据在计算机中的顺序存储方式D)数据的逻辑结构在计算机中的表示答案:D评析:数据的逻辑结构在计算机存储空间中的存放形式形式称为数据的存储结构(也称数据的物理结构)。(2)下列关于栈的描述中错误的是___B_____。A)栈是先进后出的线性表B)栈只能顺序存储C)栈具有记忆作用D)对栈的插入与删除操作中,不需要改变栈底指针答案:B评析:栈是一种特殊的线性表,又称先进后出表(FILO—FirstInLastOut)。(3)对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是____D____。A)冒泡排序为n2B)冒泡排序为nC)快速排序为nD)快速排序为n(n一1)/2答案:D评析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过n/2遍的从前往后扫描和n/2遍的从后往前扫描,需要比较次数为n(n-1)/2。快速排序法的最坏情况比较次数也是n(n-1)/2。(4)对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为____C____。A)log2nB)n/2C)nD)n+l答案:C评析:顺序查找过程中,如果被查找的元素是线性表中的最后一个元素,或者元素不在线性表中,则需要与线性表中所有的元素进行比较。对长度为n的线性表进行顺序查找,在最坏情况下需要比较n次。(5)下列对于线性链表的描述中正确的是___A_____。A)存储空间不一定是连续,且各元素的存储顺序是任意的B)存储空间不一定是连续,且前件元素一定存储在后件元素的前面C)存储空间必须连续,且前件元素一定存储在后件元素的前面D)存储空间必须连续,且各元素的存储顺序是任意的答案:A评析:在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。(6)下列对于软件测试的描述中正确的是___C_____。A)软件测试的目的是证明程序是否正确B)软件测试的目的是使程序运行结果正确C)软件测试的目的是尽可能多地发现程序中的错误D)软件测试的目的是使程序符合结构化原则答案:C评析:关于软件测试的目的,GrenfordJ.Myers再《TheArtofSoftwareTesting》一书中给出了深刻的阐述,整体来说,软件测试的目的就是尽可能多地发现程序中的错误。(7)为了使模块尽可能独立,要求___B_____。A)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强B)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱D)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强答案:B评析:模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。软件设计,应尽量做到高内聚,低耦合,有利于提高模块的独立性。(8)下列描述中正确的是___D_____。A)程序就是软件B)软件开发不受计算机系统的限制C)软件既是逻辑实体,又是物理实体D)软件是程序、数据与相关文档的集合答案:D评析:计算机软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据及相关文档的完整集合。(9)数据独立性是数据库技术的重要特点之一,所谓数据独立性是指__D______。A)数据与程序独立存放B)不同的数据被存放在不同的文件中C)不同的数据只能被对应的应用程序所使用D)以上三种说法都不对答案:D评析:数据独立性是数据与程序间的互不依赖性,即数据库中数据独立于应用程序而不依赖于应用程序。也就是说,数据的逻辑结构、存储结构与存取方式的改变不会影响应用程序。选项A、B、C三种说法都是错误的。(10)用树形结构表示实体之间联系的模型是__C______。A)关系模型B)网状模型C)层次模型D)以上三个都是答案:C评析:层次模型是最早发展起来的数据库模型,它的基本结构是树形结构。(11)算法具有五个特性,以下选项中不属于算法特性的是___B_____。A)有穷性B)简洁性C)可行性D)确定性答案:B评析:有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性是算法的基本特性。(12)以下选项中可作为c语言合法常量的是___A_____。A)-80.B)-080C)-8e1.0D)-80.0e答案:A评析:c语言的常量分为整型常量、实型常量和字符型常量。选项A属于实型常量中的十进制小数形式的表示法,是合法的。(13)以下叙述中正确的是___C_____。A)用C程序实现的算法必须要有输入和输出操作B)用C程序实现的算法可以没有输出但必须要输入C)用C程序实现的算法可以没有输入但必须要有输出D)用C程序实现的算法可以既没有输入也没有输出答案:C评析:算法的特性中包括“有零个或多个输入”及“有一个或多个输出”这两个特性。一个算法得到的结果就是算法的输出,没有输出的算法是没有意义的,所以一个算法必须至少有一个输出。(14)以下不能定义为用户标识符的是___D_____。A)MainB)_0C)_intD)sizeof答案:D评析:C语言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。注意:大写字母和小写字母被认为是两个不同的字符。A中Main与主i函数名main不同。(15)以下选项中不能作为合法常量的是___B_____。A)1.234e04B)1.234e0.4C)1.234e+4D)1.234e0答案:B评析:指数形式的实型常量要求字每e(或E)之前必需有数字,且e后面的指数必须为整数,所以本题中选项B非法。(16)数字字符0的ASCII值为48,若有以下程序main(){chara=”1″,b=”2″;printf(“%c,”,b++);printf(“%d\n”,b-a);)程序运行后的输出结果是___C_____。A)3,2B)50,2C)2,2D)2,50答案:C评析l执行语句“printf(“%c,ll,b++);”后,b的值变成字符3,执行“printf(“%d\n”,b-a);”,即‘3’-‘1’。(17)有以下程序main(){intm=12,n=34;printf(“%d%d”,m++,++n);printf(“%d%d\n”,n++,++m);}程序运行后的输出结果是___A_____。A)12353514B)12353513C)12343514D)12343513答案:A评析:执行“printf(“%d%d”m++,++n);”后,输出的是m和n+l的值1235,接着执行“printf(“%d%d\n”,n++,++m);”输出n和m+l的值3514。(18)有定义语句:intb;charc[10];,则正确的输入语句是___B_____。A)scanf(%d%s,&b,&C);B)scanf(%d%s,&b,C);C)scanf(%d%s,b,C);D)scanf(%d%s,b,&C);答案:B评析:scanf函数中的“格式控制”后面应当是地址,而不是变量名。对于变量,通过地址运算符“&”求出内存中的地址;对于数组c[10],数组名c即为数组在内存中的地址。(19)有以下程序main(){intm,n,p;scanf(“m=%dn=%dp=%d”,&m,&n,&p);printf(“%d%d%d\n”,m,n,p);}若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是___A_____。A)m=123n=456p=789B)m=123n=456p=789C)m=123,n=456,p=789D)123456789答案:A评析:根据本题的数据输入形式“scanf(“m=%dn=%dp=%d”&m,&n,&p);”说明在输入数据时,必须输入“m=”、“n=”、“p=”字符,且中间不能含有空格。(20)有以下程序main(){inta,b,d=25;a=d/10%9;b=a&&(-1);printf(”%d,%d\n”,a,b);}程序运行后的输出结果是___B_____。A)6,lB)2,lC)6,0D)2,0答案:B评析:本题中“a=d/10%9;”的值为25/10%9=2;“b=a&&(-1);”为2&&(-1)=1(注意:-1表示真,只有O才表示假),所以a,b的值分别为2,1。(21)有以下程序main(){inti=1,j=2,k=3;if(i++==1&&(++j==3||k++==3))printf(“%d%d%d\n”,i,j,k);}程序运行后的输出结果是___D_____。A)l23B)234C)223.D)233答案:D评析:执行“i++==1&&(++j==3‖k++==3)”时,表达式“i++==1”嗨值为真,其值为1,表达式“++j=3”的值为真,根据短路原理,右边的表达式“k++==3”不再进行运算。括号中表达的值为l,作与运算后整个表达式的值也为l,输出i.j,k时,由于未执行过k,所以它们的值分别为2,3,3。(22)若整型变量a、b、c、d中的值依次为:1、4、3、2。则条件表达式ab?a:cd?c:d的值是___A_____。A)lB)2C)3D)4答案:A评析:条件表达式的一般形式为:表达式1?表达式2:表达式3本题先求的是ab的值,为真,所以整个表达式“ab?a:cd?c:d”的值为a的值1。(23)有以下程序main(){intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;p[]从p[0]开始自动赋值while(i++7){if(p[i]%2)j+=p[i];}printf(“%d\n”,j);}程序运行后的输出结果是___B_____。A)42B)45C)56D)60答案:B评析:本程序的作用是求除p[0]外的其它奇数的和。(24)有以下程序main(){chara[7]=“a0\OaO\0”;inti,j;i=sizeof(a);j=strlen(a);printf(“%d%d\n”,i,j);)程序运行后的输出结果是___B_____。A)22B)76C)72D)62答案:C评析:c语言中以‘\0’作为字符串的结束符,且strlen()函数计算的是‘\0’字符前的所有字符的个数。数组定义以后系统就为其分配相应大小的内存空间,而不论其中有没有内容。(25)以下能正确定义一维数组的选项是___B_____。A)inta[5]={0,1,2,3,4,5};B)chara[]={0,1,2,3,4,5};C)chara={’A’,’B’,’C’};D)inta[5]=”0123″;答案:B评析:选项A中定义的是5个数组元素,但赋值的时候赋的是6个元素,所以出错;选项c不符合数组定义形式,数组名后应加上“[]”;选项D的类型说明符错误,如果用char定义就对了;选项B中的0,1,2,3,4,5分别表示对应字符的ASCII码,所以选项B是正确的。(26)有以下程序intfl(intx,inty){returnxy?x:y;}intf2(intx,inty){returnxy?y:x;}main(){inta=4,b=3,c=5,d=2,e,f,g;e=f2(f1(a,b),f1(c,d));f=fl(f2(a,b),f2(c,d));g=a+b+c+d-e-f;printf(“%d,%d,%d\n”,e,f,g);)程序运行后的输出结果是____A____。A)4,3,7B)3,4,7C)5,2,7D)2,5,7答案:A评析:函数n的功能是返回两个数中比较大的值,f2的功能是返回两个数中比较小的值。(27)已有定义:c