您好,欢迎访问三七文档
1、下列叙述中正确的是()。A)栈是先进先出的线性表B)队列是先进后出的线性表C)循环队列是非线性结构D)有序线性表既可以采用顺序存储结构,也可以采用链式存储结构参考答案:D【解析】栈是先进后出的线性表,所以A)错误;队列是先进先出的线性表,所以B)错误;循环队列是线性结构的线性表,所以C)错误。2、支持子程序调用的数据结构是()。A)栈B)树C)队列D)二叉树参考答案:A【解析】栈支持子程序调用。栈是一种只能在一端进行插入或删除的线性表,在主程序调用子函数时要首先保存主程序当前的状态,然后转去执行子程序,最终把子程序的执行结果返回到主程序中调用子程序的位置,继续向下执行,这种调用符合栈的特点,因此本题的答案为A)。3、某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是()。A)10B)8C)6D)4参考答案:C【解析】根据二叉树的基本性质3:在任意一棵二叉树中,度为0的叶子节点总是比度为2的节点多一个,所以本题中是5+1=6个。4、下列排序方法中,最坏情况下比较次数最少的是()。A)冒泡排序B)简单选择排序C)直接插入排序D)堆排序参考答案:D【解析】冒泡排序与简单插入排序与简单选择排序法在最坏情况下均需要比较n(n-1)/2次,而堆排序在最坏情况下需要比较的次数是5、软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是()。A)编译程序B)操作系统C)教务管理系统D)汇编程序参考答案:C【解析】编译软件、操作系统、汇编程序都属于系统软件,只有C)教务管理系统才是应用软件。6、下面叙述中错误的是()A)软件测试的目的是发现错误并改正错误B)对被调试的程序进行错误定位是程序调试的必要步骤C)程序调试通常也称为DebugD)软件测试应严格执行测试计划,排除测试的随意性参考答案:A【解析】软件测试的目的是为了发现错误而执行程序的过程,并不涉及改正错误,所以选项A)错误。程序调试的基本步骤有:错误定位、修改设计和代码,以排除错误、进行回归测试,防止引进新的错误。程序调试通常称为Debug,即排错。软件测试的基本准则有:所有测试都应追溯到需求、严格执行测试计划,排除测试的随意性、充分注意测试中的群集现象、程序员应避免检查自己的程序、穷举测试不可能、妥善保存测试计划等文件。7、耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是()。A)提高耦合性降低内聚性有利于提高模块的独立性B)降低耦合性提高内聚性有利于提高模块的独立性C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度D)内聚性是指模块间互相连接的紧密程度参考答案:B【解析】模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性,所以A)错误,B)正确。耦合性是模块间互相连接的紧密程度的度量而内聚性是指一个模块内部各个元素间彼此结合的紧密程度,所以C)与D)错误。8、数据库应用系统中的核心问题是()。A)数据库设计B)数据库系统设计C)数据库维护D)数据库管理员培训参考答案:A【解析】数据库应用系统中的核心问题是数据库的设计。9、有两个关系R,S如下:由关系R通过运算得到关系S,则所使用的运算为()。A)选择B)投影C)插入D)连接参考答案:B【解析】投影运算是指对于关系内的域指定可引入新的运算。本题中S是在原有关系R的内部进行的,是由R中原有的那些域的列所组成的关系。所以选择B)。10、将E-R图转换为关系模式时,实体和联系都可以表示为()。A)属性B)键C)关系D)域参考答案:C【解析】从E-R图到关系模式的转换是比较直接的,实体与联系都可以表示成关系,E-R图中属性也可以转换成关系的属性。11、以下叙述中错误的是()。A)使用三种基本结构构成的程序只能解决简单问题B)结构化程序由顺序、分支、循环三种基本结构组成C)C语言是一种结构化程序设计语言D)结构化程序设计提倡模块化的设计方法参考答案:A【解析】使用顺序,选择(分支),循环三种基本结构构成的程序可以解决所有问题,而不只是解决简单问题,所以A)错误。12、以下四个程序中,完全正确的是()。A)#includestdio.hmain();{/*/programming/*/printf(programming!\n);}B)#includestdio.hmain(){/*programming*/printf(programming!\n);}C)#includestdio.hmain(){/*/*programming*/*/printf(programming!\n);}D)includestdio.hmain(){/*programming*/printf(programming!\n);}参考答案:B【解析】C语言中注释语句的注释方法是:/*注释内容*/或//注释一行。所以A)与C)错误,D)选项中预编译命令includestdio.h前丢掉了#号。所以选择B)。13、C源程序中不能表示的数制是()。A)十六进制B)八进制C)十进制D)二进制参考答案:D【解析】在C语言中整型常量可以用十进制、八进制和十六进制等形式表示,但不包括二进制,所以选择D)。14、以下选项中,能用作用户标识符的是()。A)0B)88C)voidD)unsigned参考答案:A【解析】C语言中标识符由字母、下划线、数字组成,且开头必须是字母或下划线。另外,关键字不能作为标识符。B)中以数字8开头,所以错误。C)与D)中用的是关键字void与unsigned,所以错误。15、若有定义语句:intx=10;,则表达式x-=x+x的值为()。A)0B)-20C)-10D)10参考答案:C【解析】算术运算符+的优先级高于-=,且-=的结合方向为自右向左,所以表达式x-=x+x可以表示成x=x-(x+x)=10-(10+10)=-10,选择C)。16、有以下程序:#includestdio.hmain(){inta=1,b=0;printf(%d,,b=a+b);printf(%d\n,a=2*b);A)1,2B)1,0C)3,2D)0,0参考答案:A【解析】首先打印b=a+b=1+0=1的值1,此时已给b赋值为1。然后打印a=2*b=2*1=2的值2。所以结果是1,2.17、有以下程序:#includestdio.hmain(){inta1,a2;charc1,c2;scanf(%d%c%d%c,&a1,&c1,&a2,&c2);printf(%d,%c,%d,%c,a1,c1,a2,c2);}若想通过键盘输入,使得a1的值为12,a2的值为34,c1的值为字符a,c2的值为字符b,程序输出结果是:12,a,34,b则正确的输入格式是(以下代表空格,CR代表回车)()。A)12a34bCRB)12a34]bCRC)12,a,34,bCRD)12a34bCR参考答案:D【解析】在输入多个数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。所以应按选项D)的顺序输入数据。18、若变量已正确定义,在if(W)printf(%d\n,k);中,以下不可替代W的是()。A)ab+cB)ch=getchar()C)a==b+cD)a++参考答案:A【解析】选项A)是非法的表达式,C语言中没有运算符。19、有以下程序段:#includestdio.hinta,b,c;a=10;b=50;c=30;if(ab)a=b,b=c;c=a;printf(a=%db=%dc=%d\n,a,b,c);程序的输出结果是()。A)a=10b=50c=30B)a=10b=50c=10C)a=10b=30c=10D)a=50b=30c=50参考答案:B【解析】本题中ab的条件不满足,所以不执行逗号表达式a=b,b=c;的操作,而是执行c=a操作,即c的值为10。20、下列叙述中正确的是()。A)在switch语句中,不一定使用break语句B)在switch语句中必须使用defaultC)break语句必须与switch语句中的case配对使用D)break语句只能用于switch语句参考答案:A【解析】default语句在switch语句中可以省略,所以B)错误;switch语句中并非每个case后都需要使用break语句,所以C)错误;break语句还可以用于for等循环结构中,所以D)错误。21、以下不构成无限循环的语句或语句组是()。A)n=0;do{++n;}while(n=0);B)n=0;while(1){n++;}C)n=10;while(n);{n--;}D)for(n=0,i=1;;i++)n+=i;参考答案:A【解析】选项A)中do后面的语句只执行了一次便结束了循环;B)选项中条件while(1)永远成立,所以是死循环;C)选项中n的值为10,而循环体为空语句,所以while(n)永远为真,进入死循环;D)选项中for语句第二个表达式为空,所以没有判别条件,进入死循环。22、有以下程序:#includestdio.hmain(){intc=0,k;for(k=1;k3;k++)switch(k){default:c+=k;case2:c++;break;case4:c+=2;break;}printf(%d\n,c);}程序运行后的输出结果是()。A)7B)5C)3D)9参考答案:C【解析】向switch语句块传送参数后,编译器会先寻找匹配的case语句块,找到后就执行该语句块,遇到break跳出;如果没有匹配的语句块,则执行default语句块。case与default没有顺序之分。所以第一次循环k的值为1,执行c+=k,c的值为1,再执行case2后的语句c++,c的值为2,遇到break语句跳出循环;第二次循环k的值为2,执行case2后面的语句c++,c的值为3,跳出循环。23、有以下程序:#includestdio.hintf(intx,inty){return((y-x)*x);}main(){inta=3,b=4,c=5,d;d=f(f(a,b),f(a,c));printf(%d\n,d);}程序运行后的输出结果是()。A)7B)10C)8D)9参考答案:D【解析】调用f(a,b)函数返回3,调用f(a,c)函数返回6,所以外层调用f(f(a,b),f(a,c));即调用f(3,6)函数返回9。24、若有定义语句:doublea,*p=&a;以下叙述中错误的是()。A)定义语句中的*号是一个间址运算符B)定义语句中的*号是一个说明符C)定义语句中的p只能存放double类型变量的地址D)定义语句中,*p=&a把变量a的地址作为初值赋给指针变量p参考答案:A【解析】在变量定义doublea,*p=&a;中,*号是一个指针运算符,而非间址运算符,所以A)错误。25、若有定义语句:doublex,y,*px,*py;执行了px=&x;py=&y;之后,正确的输入语句是()。A)scanf(%lf%le,px,py);B)scanf(%f%f&x,&y);C)scanf(%f%f,x,y);D)scanf(%lf%lf,x,y);参考答案:A【解析】因为x,y都是double型数据,所以输入时的格式字符应为%lf,所以B)与C)错误。D)选项中scanf(%lf%lf,x,y);应为scanf(%lf%lf,&x,&y);。26、以下定义数组的语句中错误的是()。A)intnum[][3]={{1,2},3,4,5,6};B)intnum[2][4]={{1,2},{3,4},{5,6}};C)intnum[]={1,2,3,4,5,6};D)intnum[][4]={1,2,3,4,5,6};参考答案:B【解析】B)选项中定义的数组为2行4列,而赋值
本文标题:计算机二级题库4
链接地址:https://www.777doc.com/doc-8684067 .html