[IT认证]计算机二级试题.doc

上传人:音乐台 文档编号:1965240 上传时间:2019-01-27 格式:DOC 页数:224 大小:534KB
返回 下载 相关 举报
[IT认证]计算机二级试题.doc_第1页
第1页 / 共224页
[IT认证]计算机二级试题.doc_第2页
第2页 / 共224页
[IT认证]计算机二级试题.doc_第3页
第3页 / 共224页
亲,该文档总共224页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《[IT认证]计算机二级试题.doc》由会员分享,可在线阅读,更多相关《[IT认证]计算机二级试题.doc(224页珍藏版)》请在三一文库上搜索。

1、选择题( (1)-(10)、(21)-(40)每题2分,(11)-(20)每题1分,共70分 )(1)栈和队列的共同特点是()。A)都是先进先出B)都是先进后出C)只允许在端点处插入和删除元素D)没有共同点(2)线性表是一个()。A)有限序列,可以为空B)有限序列,不能为空C)无限序列,可以为空D)无限序列,不能为空(3)设有下列二叉树:对此二叉树前序遍历的结果为()。A)ZBTYCPXAB)ATBZXCYPC)ZBTACYXPD)ATBZXCPY(4)下列叙述中,不属于软件需求规格说明书的作用的是()。A)便于用户、开发人员进行理解和交流B)反映出用户问题的结构,可以作为软件开发工作的基础和

2、依据C)作为确认测试和验收的依据D)便于开发人员进行需求分析(5)结构化程序设计主要强调的是()。A)程序的规模B)程序的效率C)程序设计语言的先进性D)程序易读性(6)下列选项中,不属于模块间耦合的是()。A)数据耦合B)标记耦合C)异构耦合D)公共耦合(7)在数据管理技术的发展过程中,可实现数据共享的是()。A)人工管理阶段B)文件系统阶段C)数据库系统阶段D)系统管理阶段(8)下列叙述中,正确的是()。A)用E-R图能够表示实体集间一对一的联系、一对多的联系和多对多的联系B)用E-R图只能表示实体集之间一对一的联系C)用E-R图只能表示实体集之间一对多的联系D)用E-R图表示的概念数据模

3、型只能转换为关系数据模型(9)有三个关系R、S和T如下: RBCDa0k1b1n1 SBCDf3h2a0k1n2x1 TBCDa0k1由关系R和S通过运算得到关系T,则所使用的运算为()。A)并B)自然连接C)笛卡儿积D)交(10)以下不属于对象的基本特点的是()。A)分类性B)多态性C)继承性D)封装性(11)以下叙述中正确的是()。A)用C 程序实现的算法必须要有输入和输出操作B)用C 程序实现的算法可以没有输出但必须要有输入C)用C 程序实现的算法可以没有输入但必须要有输出D)用C 程序实现的算法可以既没有输入也没有输出(12)以下4 个选项中,不能看成一条语句的是()。A);B)a=5

4、,b=2. 5,c=3. 6;C)if(a5);D)if(b! =5)x=2; y=6;(13)以下选项中可作为C 语言合法常量的是()。A)-80B)-080C)-8e1.0D)-80.0e(14)以下选项中,不能作为合法常量的是()。A)1.234e04B)1.234e0.4C)1.234e4D)1.234e0(15)若变量均已正确定义并赋值,以下合法的C 语言赋值语句是()。A)x=y;B)x=n5%2.5;C)x+n=i;D)x=5=4+1;(16)有定义语句:int x,y;。若要通过scanf(%d,%d,&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式

5、中,错误的是()。A)11 12B)11,12C)11, 12D)11,12(17)如下程序的输出结果是()#includemain()float x=2.0,y;if(x0.0)y=0.0;else if(x10.0)y=1.0/x;else y=1.0;printf(%fn,y);A)0.000000B)0.250000C)0.500000D)1.000000(18)下面程序中有错误的行是(每行程序前面的数字表示行号)()。1 main()2 3 int a3 =1;4 int i;5 scanf( %d,&A);6 for(i=1; i3;i+)a0 =a0+ai;7 printf( a

6、0 =%dn ,a0);8 A)3B)6C)7D)5(19)请阅读以下程序:#includemain() int x=1,y=0,a=0,b=0;switch(x) case 1:switch(y) case 0:a+;break; case 2:a+,b+;break; printf( a=%d,b=%dn,a,B);上面程序的输出结果是()。A)a=2,b=1B)a=1,b=1C)a=1,b=0D)a=2,b=2(20)当变量c的值不为2、4、6时,值也为“真”的表达式是()。A)(c=2)|(c=4)|(c=6)B)(c=2 & c=2 & c=2 & c=6)&(c%2!=1)(21)

7、有以下程序:#includemain() char p =a, b, c,q10 = a, b, c;printf(%d%dn,strlen(p),strlen(q); 以下叙述中正确的是()。A)在给p 和q 数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3B)由于p 数组中没有字符串结束符,长度不能确定,但q 数组中字符串长度为3C)由于q 数组中没有字符串结束符,长度不能确定,但p 数组中字符串长度为3D)由于p 和q 数组中都没有字符串结束符,故长度都不能确定(22)有以下程序:main() int i,s=1;for (i=1;i50;i+)if(! (i%5)&! (i

8、%3)s+=i;printf(%dn,s); 程序的输出结果是()。A)409B)277C)1D)91(23)有以下程序:#include main()char c1=1,c2=2;c1=getchar(); c2=getchar(); putchar(c1); putchar(c2);当运行时输入a后,以下叙述正确的是()。A)变量c1被赋予字符a,c2被赋予回车符B)程序将等待用户输入第2个字符C)变量c1被赋予字符a,c2中仍是原有字符2D)变量c1被赋予字符a,c2中将无确定值(24)有定义语句:char s10;,若要从终端给s 输入5 个字符,错误的输入语句是()。A)gets(&

9、s0);B)scanf(%s,s+1);C)gets(s);D)scanf(%s,s1);(25)阅读下列程序,当运行函数时,输入asd af aa z67,则输出为()。#include #include #include int fun (char *str) int i,j=0;for(i=0;stri! =0;i+)if(stri! =)strj+=stri;strj= 0;main() char str81;int n;printf(Input a string : );gets(str);puts(str);fun(str);printf(%sn,str);A)asdafaaz67

10、B)asd af aa z67C)asdD)z67(26)有如下程序:#include main() char c1,c2,c3,c4,c5,c6;scanf(%c%c%c%c,&c1,&c2,&c3,&c4);c5=getchar(); c6=getchar();putchar(c1); putchar(c2);printf(%c%cn,c5,c6);程序运行后,若从键盘输入(从第1列开始):12345678则输出结果是()。A)1267B)1256C)1278D)1245(27)下列程序的运行结果是()。#include stdio. hmain() int x=-9,y=5,z=8;if

11、(xy)if(y0)z=0;else z+=1;printf(%dn,z);A)6B)7C)8D)9(28)有如下程序:main() char ch25 =6937,8254,*p2;int i,j,s=0;for(i=0;i2;i+)pi =chi;for(i=0;i0;j+=2)s=10*s+pij-0;printf(%dn,s);该程序的输出结果是()。A)69862358B)5825C)6385D)693825(29)已有定义:char a=xyz, b=x, y, z; ,以下叙述中正确的是()。A)数组a和b的长度相同B)a数组长度小于b数组长度C)a数组长度大于b数组长度D)以述

12、说法都不对(30)有以下程序:#include main() int y=9;for( ;y0;y-)if(y%3= =0)printf(%d,-y);程序的运行结果是()。A)741B)963C)852D)875421(31)以下程序中调用scanf 函数给变量a 输入数值的方法是错误的,其错误原因是()。main() int *p,*q,a,b;p=&a;printf(input a:);scanf(%d,*p); A)*p 表示的是指针变量p 的地址B)*p 表示的是变量a 的值,而不是变量a 的地址C)*p 表示的是指针变量p 的值D)*p 只能用来说明p 是一个指针变量(32)有以下

13、程序:#include int f(int x) int y;if(x= =0 | | x= =1)return(3);y=x*x-f(x-2);return y;main() int z;z=f(3); printf(%dn ,z);程序的运行结果是()。A)0B)9C)6D)8(33)下列程序执行后的输出结果是()。void func1(int i);void func2(int i);char st = hello,friend! ;void func1(int i) printf( % c ,sti);if(i3)i+ =2;func2(i);void func2(int i) pri

14、ntf( % c ,sti);if(i3)i+ =2;func1(i);main() int i=0; func1(i); printf(n);A)hlloB)heelC)hloD)hlm(34)下面的程序段运行后,输出结果是()。int i,j,x=0;static int a88;for (i=0;i3;i+)for (j=0;j3;j+)aij=2*i+j;for(i=0;i8;i+)x+=aij;printf(%d,x);A)9B)不确定值C)0D)18(35)有以下程序:#include #define N 5#define M N+1#define f(x)(x*M)main()

15、int i1,i2;i1=f(2);i2=f(1+1);printf(%d %dn, i1,i2);程序的运行结果是()。A)12 12B)11 7C)11 11D)12 7(36)C 语言结构体类型变量在程序运行期间()。A)TC 环境在内存中仅仅开辟一个存放结构体变量地址的单元B)所有的成员一直驻留在内存中C)只有最开始的成员驻留在内存中D)部分成员驻留在内存中(37)以下程序的输出结果是()。#include struct st int x;int *y;*p;int dt4=10,20,30,40;struct st aa4=50,&dt0,60,&dt0,60,&dt0,60,&dt

16、0,; main() p=aa; printf( % dn ,+(p-x); A)10B)11C)51D)60(38)现有以下结构体说明和变量定义,如下图所示,指针p、q、r分别指向一个链表中连续的三个结点。struct node char data;struct node *next; *p, *q, *r;现要将q和r所指结点交换前后位置,同时要保持链表的连续,以下不能完成此操作的语句是()。A)q-next=r-next; p-next=r; r-next=q;B)p-next=r; q-next=r-next; r-next=q;C)q-next=r-next; r-next= q;

17、p-next=r;D)r-next=q; p-next=r; q-next=r-next;(39)在位运算中,操作数每右移一位,其结果相当于()A)操作数乘以2B)操作数除以2C)操作数除以16D)操作数乘以16(40)如果需要打开一个已经存在的非空文件“Demo”进行修改,下面选项中正确的是()。A)fp=fopen(Demo,r);B)fp=fopen(Demo,ab+);C)fp=fopen(Demo,w+);D)fp=fopen(Demo,r+);二、填空题(每空2分,共30分)(1)在长度为n的线性表中,寻找最大项至少需要比较_【1】_次。(2)某二叉树中度为2的结点有n个,则该二叉

18、树中有_【2】_个叶子结点。(3)常用的黑箱测试有等价分类法、_【3】_、因果图法和错误推测法4种。(4)数据库管理系统常见的数据模型有层次模型、网状模型和 _【4】_ 3种。(5)在E-R图中,矩形表示_【5】_。(6)设变量a和b已正确定义并赋初值。请写出与a-=a+b等价的赋值表达式_【6】_。(7)以下程序的输出结果是_【7】_。main() char c=z;printf(%c,c-25); (8)以下程序运行后的输出结果是_【8】_。main()int a,b,c;a = 25;b = 025;c = 0x25;printf(%d %d %dn,a,b,C);(9)以下程序运行后的

19、输出结果是_【9】_。main() int x,a=1,b=2,c=3,d=4;x=(aB)? a : b; x=(xx)? x : d;printf(%dn,x);(10)以下程序运行后的输出结果是_【10】_。main() int a=1,b=2,c=3;if(c=A)printf(%dn,C);else printf(%dn,B);(11)下面程序的功能是:计算1 10 之间的奇数之和与偶数之和,请填空。#includemain() int a,b,c, i;a=c=0;for(i=0;i=10;i+=2) a+=i;_【11】_;c+=b; printf(偶数之和=%dn,A);pri

20、ntf(奇数之和=%dn,c-11); (12)以下程序运行后的输出结果是_【12】_。main()char a=123456789,*p;int i=0;p=a;while(*p)if (i%2 = 0)*p=*;p+; i+;puts(A);(13)以下程序的输出结果是_【13】_。#include main() int i;for(i=a;if;i+,i+)printf(%c,i-a+A);printf(n);(14)已有定义:double *p;,请写出完整的语句,利用malloc函数使p指向一个双精度型的动态存储单元【14】。(15)以下程序的运行结果是_【15】_。#include

21、 main()FILE *fp; int a10 =1,2,3,0,0,i;fp =fopen( d2. dat , wb);fwrite(a,sizeof(int),5,fp);fwrite(a,sizeof(int),5,fp);fclose(fp);fp =fopen( d2. dat , rb);fread(a,sizeof(int),10,fp);fclose(fp);for(i =0;i10;i+)printf( % d ,ai);参考答案及解析一、选择题( (1)-(10)、(21)-(40)每题2分,(11)-(20)每题1分,共70分 )1.答案:C【解析】考查栈和队列概念的

22、掌握。栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的一端进行插入或删除操作,是一种“后进先出”的线性表;而队列只允许在表的一端进行插入操作,在另一端进行删除操作,是一种“先进先出”的线性表。2.答案:A【解析】如果一个非空的数据结构满足下列两个条件:第一,有且只有一个根结点;第二,每一个结点最多有一个前件,也最多有一个后件,则称该数据结构为线性结构。线性结构又称线性表。3.答案:B【解析】本题考查二叉树的遍历。所谓二叉树的前序遍历(DLR)是指在访问根结点、遍历左子树与遍历右子树这3者中,首先访问根结点,然后遍历左子树,最后遍历右子树,并且,

23、在遍历左右子树时,上述规则同样适用,即“根左右”,故该二叉树的前序遍历结果为“ATBZXCYP”。4.答案:D【解析】软件需求规格说明书(Software Requirement Specification,SRS)是需求分析阶段的最后成果,是软件开发中的重要文档之一。它具有以下几个方面的作用: 便于用户、开发人员进行理解和交流; 反映出用户问题的结构,可以作为软件开发工作的基础和依据; 作为确认测试和验收的依据。5.答案:D【解析】结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、模块化及限制使用goto语句,总的来说可使程序结构良好、易读、易理解、易维护。6.答案:C【解析】模块之

24、间的耦合程度反映了模块的独立性,也反映了系统分解后的复杂程度。按照耦合程度从强到弱分别是:内容耦合、公共耦合、外部耦合、控制耦合、标记耦合、数据耦合和非直接耦合,没有异构耦合这种方式。7.答案:C【解析】数据库技术的主要目的是有效地管理和存取数据资源,包括提供数据的共享性,使多个用户能够同时访问数据库中的数据;减少数据的冗余度,以提交数据的一致性和完整性;提供数据与应用程序的独立性,从而减少应用程序的开发和维护代价。8.答案:A【解析】两个实体之间的联系实际上是实体集合的函数关系,这种函数关系可以有下面几种,即一对一的联系、一对多(或多对一)的联系和多对多的联系;概念模型便于向各种模型转换。由

25、于概念模型不依赖于具体的数据库管理系统,因此,容易向关系模型、网状模型和层次模型等各种模型转换。9.答案:D【解析】关系R与S经交运算后所得到的关系T是由那些既在R内又在S内的有序组所组成。10.答案:C【解析】对象的基本特点:标识唯一性、分类性、多态性、封装性和模块独立性。11.答案:C【解析】算法具有的5 个特性是:有穷性;确定性;可行性;有0个或多个输入;有一个或多个输出。所以说,用C 程序实现的算法可以没有输入但必须要有输出。12.答案:D【解析】选项D)为两条语句。13.答案:A【解析】选项B)中,以0 开头表示是一个八进制数,而八进制数的取值范围是0 7,所以-080 是不合法的;

26、选项C)和D)中,e 后面的指数必须是整数,所以也不合法。14.答案:B【解析】C语言的语法规定,字母e(E)之前必须有数字,且e(E)后面的指数必须是整数,而选项B)中,e(E)后面的指数是小数,所以不合法。15.答案:A【解析】赋值运算符左侧的操作数必须是一个变量,而不能是表达式或者常量,选项C)和D)错误。“%”运算符两侧都应当是整型数据,选项B)错误。16.答案:A【解析】本题的考查点是格式输入函数。格式输入函数的一般形式:scanf( 格式控制,地址表列) 。需要注意的是:如果在“格式控制”字符串中除了格式说明以外还有其他字符,则在输入数据时应输入与这些字符相同的字符。所以输入的两个

27、数字之间的逗号是不可少的。故本题答案为A)。17.答案:C【解析】本题考查的知识点是:if else的配对原则。else语句总是与前面最近的不带else的if相结合,故本题选C)。18.答案:D【解析】主要考查了一维数组的定义、初始化及元素的引用方法。第5 行代码中scanf 输入数据时,要求输入项为地址,而数组名即为数组的首地址,所以不应该再在前面加取地址符号&。19.答案:A【解析】考查switch 语句的使用。switch 语句的执行过程为:进入switch 结构后,对条件表达式进行运算,然后从上至下去找与条件表达式值相匹配的case,以此作为入口,执行switch 结构中后面的各语句,

28、直到遇到break语句,则跳出switch 语句,如果各case 都不匹配时,则执行default 后面的语句。20.答案:B【解析】本题主要考查的是逻辑表达式。选项A)中表达式的意思是:当c等于2或4或6时,表达式的值为真,否则为假。所以不满足题意。选项C)中表达式的意思是:当c大于等于2且小于等于6,并且c不是奇数时,表达式的值为真,否则为假。这样,满足该表达式的c,只能取值为2、4、6了,所以也不满足题意。选项D)中后面一个子表达式(c%2!=1)和选项C)中的!(c%2)是等价的。都是判断c不是奇数。因此也不满足题意。故本题正确答案为B)。21.答案:A【解析】在给p 和q 数组赋初值

29、时,系统会自动添加字符串结束符,从题目中可以看出数组p 和q 都有3 个字符,所以长度均为3。22.答案:D【解析】本题是计算50 之内的自然数相加之和,题中if 语句括号中的条件表达式! (i%5)&! (i%3)表明只有能同时被5 和3 整除的数才符合相加的条件,1 49 之间满足这个条件的只有15、30 和45,因为s 的初始值为1,所以s=1+15+30+45=91。23.答案:A【解析】本题考查的是输入输出函数。函数getchar()的作用是从终端(或系统隐含指定的输入设备)输入一个字符,且只能接受一个字符(回车符也算是一个字符)。故本题中变量c1被赋予字符a,c2被赋予回车符。故本

30、题答案为A)。24.答案:D【解析】在格式输入中,要求给出的是变量的地址,而D)答案中给出的s1是一个值的表达式。25.答案:A【解析】本题题意要求删除所有空格,即除了空格以外的其他所有字符都要留下。由于C 语言中没有直接删除字符的操作,所以我们对于删除字符的操作都是采用留下字符的算法,以前的题目亦是如此。用stri从串头到串尾逐一走动,每走到一个字符都判断其是否为空格,若不是空格(注意在if()的单引号之间有一个空格),则将其保存strj中。注意j 的下标变化、初值及最后加串结束符 0 。26.答案:D【解析】本题考查的是字符输入输出函数的应用。getchar()函数只能接收一个字符,即使输

31、入多个字符后再按回车还是只能将第一个字符读入。scanf()和printf()是按格式输入输出的函数,当输入123,scanf()分别读入字符“1”、“2”、“3”、“”;接下来输入45678,则getchar()读入字符“4”赋值给c5,字符“5” 赋值给c6,所以输出语句输出结果为1245。故本题答案为D)。27.答案:D【解析】ifelse 语句的执行过程如下,首先计算if 后面一对圆括号内表达式的值,若表达式的值为非0,执行if 子句,然后跳过else 子句,去执行if 语句后的下一条语句;若表达式的值为0,跳过if 子句,去执行else 子句,接着去执行if 语句后的下一条语句。C

32、语言的语法规定,else子句总是与前面最近的不带else 的if 匹配,与书写格式无关,本题目的后一个if-else 相当于嵌套在第一个if 子句里,相当于xy&y0 时,z=0;当x=0 时,z=z+1。28.答案:C【解析】该题稍微难一点。主要要搞清楚以下几点:定义了一个指针数组char *p2后,程序中第一个循环for(i=0;i0 是指pij中的字符只要不是字符串结束标志0 就继续循环,语句j+=2;是使下标j 每次增加2,也即一个隔一个地从pi所指向的字符串中取出字符。经过上述解析后,不难看出,该程序首先从p0所指向的字符串“6937”中一个隔一个地取出字符,分别是6 和3 ,然后从

33、p1所指向的字符串“8254”中一个隔一个地取出字符,分别是8 和5 ,同时经过转换和相加运算后,结果s中的值应该是6385。29.答案:C【解析】本题考查的是字符型一维数组的初始化。对字符型一维数组在定义时初始化,既可以使用初始化列表,也可以使用字符串常量。不过由于字符串常量会自动在结尾添加0字符做结束标志,所以用字符串常量的初始化列表项个数是字符串的长度加1。因此题目中的char a=xyz;等价于char a=x,y,z,0;,所以a数组长度大于b数组长度,应该选C)。30.答案:C【解析】本题考查变量的自加“+”和自减“-”问题。当y 的值为9、6 或3 时,if 语句的条件成立,执行

34、输出语句,输出表达式-y 的值,y 的自减要先于输出语句执行,故输出结果为8 5 2。31.答案:B【解析】考查格式输入语句scanf 的使用。本题经过定义语句和赋值后,p 表示的是变量a 的地址,*p 表示的是变量a 的值。32.答案:C【解析】函数int f(int x)是一个递归函数调用,当x 的值等于0 或1 时,函数值等于3,其他情况下y=x2-f(x-2),所以在主函数中执行语句z=f(3)时,y=3*3-f(3-2)= 9-f(1)= 9-3 =6。33.答案:C【解析】考查函数的调用。函数调用的一般形式为:函数名(实参列表)。首先调用函数func1(0),输出st0 =h。i

35、值变为2,并调用函数func2(2),输出st2 =l。i 值此时变为4,又调用函数func1(4),输出st4=o。此时i 值大于等于3,执行完毕,因此,输出结果为hlo。34.答案:C【解析】本题主要考查的是用二维数组首地址和下标来引用二维数组元素的方法。通过分析可知,程序中的双重循环定义了一个如下的二维数组:0 1 22 3 44 5 6由于数组的下标是从0 开始的,所以二维数组元素aij表示的是二维数组a 的第i+1 行、第j+1 列对应位置的元素。35.答案:B【解析】根据宏替换的替换规则,我们可知,f(2)= 2*N+1=2*5+1=11,f(1+1)= 1+1*N+1=1+1*5+1=7。36.答案:B【解析】结构体类型的变量在程序运行期间要作为一个整体占用连续的内存单元。37.答案:C【解析】考查结构体成员数据的引用方法。通过指针来引用结构体成员的方法是(指针变量)结构体

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1