1、 二级计算机笔试选择复习题 1.下列有关数据库的描述,正确的是______。 A、数据库是一个DBF文件 B、数据库是一个关系 C、数据库是一个结构化的数据集合 D、数据库是一组文件 数据库(Database,简称DB)是数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序所共享。数据库中的数据具有"集成"、"共享"之特点。 本题答案为C。 2.下列关于栈的叙述中正确的是______。 A、在栈中只能插入数据 B、在栈中只能删除数据 C、栈是先进先出的线性表 D、栈是先进后出的线性表
2、 栈是限定在一端进行插入与删除的线性表。 栈是按照"先进后出"的或后进先出的原则组织数据的,因此,栈也被称为"先进后出"表或"后进先出"表。 本题答案是D。 3.在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是______。 A、概要设计 B、详细设计 C、可行性分析 D、需求分析 通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。 软件生命周期的主要活动阶段为: (1)可行性研究
3、和计划制定。确定待开发软件系统的开发目标和总的要求,给出它的功能、性能、可靠性以及接口等方面的可能方案,制定完成开发任务的实施计划。 (2)需求分析。对待开发软件提出的需求进行分析并给出详细定义,即准确地确定软件系统的功能。编写软件规格说明书及初步的用户手册,提交评审。 (3)软件设计。系统设计人员和程序设计人员应该在反复理解软件需求的基础上,给出软件的结构、模块的划分、功能的分配以及处理流程。 (4)软件实现。把软件设计转换成计算机可以接受的程序代码。即完成源程序的编码,编写用户手册、操作手册等面向用户的文档,编写单元测试计划。 (5)软件测试。在设计
4、测试用例的基础上,检验软件的各个组成部分。编写测试分析报告。 (6)运行和维护。将已交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改。 本题答案是D。 4. 在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是______。 A、可行性分析 B、需求分析 C、详细设计 D、程序编码 软件开发阶段包括需求分析、总体设计、详细设计、编码和测试五个阶段。其中需求分析阶段常用的工具是数据流图和数据字典。 本题答案为B。 5.以下数据结构中不属于线性数据结构的是______。
5、 A、队列 B、线性表 C、二叉树 D、栈 线性表、栈和队列等数据结构所表达和处理的数据以线性结构为组织形式。栈是一种特殊的线性表,这种线性表只能在固定的一端进行插入和删除操作,允许插入和删除的一端称为栈顶,另一端称为栈底。一个新元素只能从栈顶一端进入,删除时,只能删除栈顶的元素,即刚刚被插入的元素。所以栈又称后进先出表(Last In First Out);队列可看作是插入在一端进行,删除在另一端进行的线性表,允许插入的一端称为队尾,允许删除的一端称为队头。在队列中,只能删除队头元素,队列的最后一个元素一定是最新入队的元素。因此队列又称先进先出表(First In
6、 First Out)。 本题答案为C。 6.结构化程序设计主要强调的是______。 A、程序的规模 B、程序的易读性 C、程序的执行效率 D、程序的可移植性 结构化程序设计主要强调的是结构化程序清晰易读,可理解性好,程序员能够进行逐步求精、程序证明和测试,以保证程序的正确性。 本题答案为B。 7.下列说法中,不属于数据模型所描述的内容的是______。 A、数据结构 B、数据操作 C、数据查询 D、数据约束 数据模型所描述的内容有3个部分,它们是数据结构、数据操作和数据约束。其中,数据模型中的数据结构主要描
7、述数据的类型、内容、性质,以及数据库的联系等;数据操作主要是描述在相应数据结构上的操作类型与操作方式。 本题答案为C。 8.对长度为N的线性表进行顺序查找,在最坏情况下所需要的比较次数为______。 A、N+1 B、N C、(N+1)/2 D、N/2 在进行顺序查找过程中,如果线性表中被查的元素是线性表中的最后一个,或者被查元素根本不在线性表中,则为了查找这个元素需要与线性表中所有元素进行比较,这是顺序查找最坏的情况。 本题答案为B。 9.下面不属于软件设计原则的是______。 A、抽象 B、模块化 C、自底向上 D、信
8、息隐蔽 在软件设计过程中,必须遵循软件工程的基本原则:这些原则包括抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可靠性。 本题答案为C。 10.视图设计一般有3种设计次序,下列不属于视图设计的是______。 A、自顶向下 B、由外向内 C、由内向外 D、自底向上 视图设计一般有3种设计次序,它们分别是自顶向下、自底向上和由内向外,它们又为视图设计提供了具体的操作方法,设计者可根据实际情况灵活掌握,可以单独使用也可混合使用。 本题答案为B。 11.有以下程序 void fun(char *a, char *b) {
9、a=b; (*a)++; } main() { char c1='A',c2='a',*p1,*p2; p1=&c1; p2=&c2; fun(p1,p2); printf("%c%c\n",c1,c2); } 程序运行后的输出结果是______。 A、Ab B、aa C、Aa D、Bb 本题的考查点是函数。 fun函数用了两个指向字符型数据的指针作为形参。该功能是把b的地址赋给a,然后a存储单元里的值再加1。 (*a)++表示的是a所指向的元素值加1,注意:是元素值加1,而不是指针值。 main函数中,p1里
10、存放的是c1的地址,p2里存放的是c2的地址,fun(p1,p2)后,p2的地址赋给了p1,此时p1和p2都指向了c2,即a,(*a)++,a的值加了1,变为了b。所以此时c2的值为b,而c1的值没变,仍为A。注意,这里变的是p1的地址和c2的值。 故本题答案为A。 12.若程序中已包含头文件stdio.h,以下选项中,正确运用指针变量的程序段是______。 A、int *i=NULL; scanf("%d",i); B、float *f=NULL; *f=10.5; C、char t='m',*c=&t; *c=&t; D、long
11、L; L='\0'; 本题的考查点是指针变量的运用。 选项A、B指针定义错误,都将指针指向了NULL,都为空值。其中空指针是由对指针变量赋予0值而得到的。例如: #define NULL 0 int *p=NULL; 对指针变量赋0值和不赋值的时候意义是不同的:指针变量未赋值时,它是指向任意不确定的存储单元的,所以不能使用,否则将造成意外错误;而指针变量赋0值后,则可以使用,只是它不指向具体的变量而已。而在选项C中最后一个*c=&t;错误,&t是地址,*c是值。选项D是让指针L指向字符串的末尾,即字符串结束符。 故本题答案为D。 13.以下不能正确定义
12、二维数组的选项是______。 A、int a[2][2]={{1},{2}}; B、int a[][2]={1,2,3,4}; C、int a[2][2]={{1},2,3} D、int a[2][]={{1,2},{3,4}} 本题的考查点是二维数组的定义和初始化。 选项A定义的数组中各元素实际上是这样的: 1,0 2,0 选项B定义的数组中各元素实际上是这样的: 1,2 3,4 选项C定义的数组中各元素实际上是这样的: 1,0 2,3 选项D错在:C中在对数组进行初始化时,如果对全部元素都赋初值(即提供全部
13、初始数据),则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。 故本题答案为D。 14.以下选项中可作为C语言合法整数的是______。 A、10110B B、0386 C、0Xffa D、x2a2 本题的考查点是C语言中的整型常数。 整型常数可以用十进制、八进制或十六进制表示,并分为有符号数、无符号数和长整数。由此可知选项A错; 选项B,用0386表示八进制错误,因为八进制数为0-7八个数字,含有8是不对的; 选项D,数字前加“0x”表示十六进制数,所以D也不对。 故本题答案为C。 15.以下能正确
14、定义一维数组的选项是______。 A、int num[] B、#define N 100 int num[N] C、int num[0..100] D、int N=100; int num[N] 本题的考查点是一维数组的定义。 数组的常量表达式中可以包括整型常量和符号常量,不能包括变量。也就是说,C不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值,所以选项A不正确。而选项B事先定义一个字符常量N,所以可以在数组中作常量表达式,选项B正确。而选项C中不能用区间表示数组大小;在D中N虽然被赋为100,但N仍然为变量,
15、所以不对。
故本题答案为B。
16.以下程序中函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址。
#include
16、cmp(str[0],str[1]));/*库函数strcpy对字符串进行复制*/ strcpy(string,scmp(string,str[2])); printf("%s\n",string); } 若运行时依次输入:abcd、abba和abc三个字符串,则输出结果为______。 A、abcd B、abba C、abc D、baca 本题的考查点是返回指针值的函数。 一个函数可以带回一个整型值、字符值、实型值等,也可以带回指针型的数据,即地址。在main函数中,分别定义了一个一维和二维数组,通过循环,gets(str[i])是从终
17、端输入一个字符串到字符数组,并且得到一个函数值,该函数值是字符数组的起始地址。 strcmp(字符串1,字符串2)函数的作用是比较字符串1和字符串2。比较结果由函数值带回。如果字符串1=字符串2,函数值为0;如果字符串1>字符串2,函数值为一正整数;如果字符串1<字符串2,函数值为一负整数。 所以scmp函数的作用是比较s1和s2的大小,对函数的返回值进行判断,如果字符串1<字符串2,则返回字符串1的值,反之返回字符串2的值。所以main函数里scmp(str[0],str[1])的返回值应该是abba,strcpy(string,scmp(str[0],str[1]))再
18、把这个返回值复制到string里,所以这时string为abba。在执行strcpy(string,scmp(string,str[2])),同样scmp(string,str[2])时比较abba和abc的值,返回值为abba,所以再次复制到string里,所以最后string的值为abba。 故本题答案为B。 17.要求以下程序的功能是计算:s=1+1/2+1/3+…+1/10。 main() { int n; float s; s=1.0; for(n=10;n>1;n--) s=s+1/n; printf("%6.4f\n",s);
19、
}
程序运行后输出结果错误,导致错误结果的程序行是______。
A、s=1.0;
B、for(n=10;n>1;n--)
C、s=s+1/n;
D、printf("%6.4f\n",s);
本题的考查点是查找程序运行错误的原因。主要考察运算中字符的转换。
初看此题,可能不太容易发现错误,该题的运行结果是 1.0000,算法错误。s=s+1/n; 1/2=0,因为n为整型,所以1/n都为0。这就是导致本题出错的原因。s=s+1/n应改为s=s+1.0/n。
故本题答案为C。
18.有以下程序
#include
20、main() { char str[][20]={"Hello","Beijing"},*p=str; printf("%d\n",strlen(p+20)); } 程序运行后的输出结果是______。 A、0 B、5 C、7 D、20 本题的考查点是字符数组和指针的运用。 strlen()是测试字符串长度的函数。函数的值为字符串中实际长度,不包括'/0'在内。str[][20]={"Hello","Beijing"}实际上是定义了一个2行20列的数组,数组的首地址是str[0][0],p+20应该是向后移了20位,所以指向了数组的str[1
21、][0]处,所以此时测试函数的长度,应该时从str[1][0]开始往后,即"Beijing"的长度,所以输出结果是7。
故本题答案为C。
19.有定义语句:int a=1,b=2,c=3,x;,则以下选项中各程序段执行后,x的值不为3的是______。
A、if (c 22、
D、if (a
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818