试题 1 分析
本题考查应用程序的运行情况。
现在常见的操作系统是Windows系列操作系统,就以它为例,它是一种多任务的分时操作系统,即它允许多个应用程序同时在一台机器上运行,这样就有个界面问题,是否只有显示在我们视线里的应用程序才能被执行呢?事实不是这样的,当我们将运行中的应用程序窗口最小化以后,程序仍然占有它的资源,在后台运行。
试题 2 分析
本题考查ROM的基本概念。
ROM是只读内存(Read-Only Memory)的简称,是一种只能读出事先所存数据的固态半导体存储器。其特性是一旦存储资料就无法再将其改变或删除,并且资料不会因断电而消失。
试题 3~4 分析
本题考查Excel的基本操作和应用。
在Excel中,公式必须以等号“=”开头,系统将“=”后面的字符串识别为公式。计算求和的函数是SUM,根据题意,若要计算表中每个学生的最终成绩,那么可在E2单元格中填写“=SUM(C2*30%,D2*70 %)”,如下表所示。
在Excel中有规律数据可以进行快速填充,灵活地使用自动填充功能可以避免重复输入数据。若用户需要对某个Excel工作表的E2: E7 区域快速计算最终成绩,可以采用的方法是在E2 单元格中填写“=SUM(C2*30%,D2*70 %)”或“=SUM(C2*30%:D2*70 %)”,并将鼠标移到E2 单元格的右下角,并拖至E7,此时则可自动算出这些学生的最终成绩,如下表所示。
试题 5~6 分析
本题考查文件的一些属性和操作。
文件的扩展名是帮助用户识别文件性质的标志,其中的内容一般是显示文件的类型,是文件的一种不可或缺的属性。
“打印预览”的作用就是预先看一下打印出来的效果,防止打印出来的内容和格式不符合要求。
试题 7~8 分析
本题考查数制转换,是常考的一种题目。
要比较题目中不同进制数的大小,我们可以把它们都转化成同种进制以后再比较就很清楚了,这就需要对数制转换熟悉。对于任意一个R进制数,它的每一位数值等于该位的数码乘以该位的权数。权数由一个幂R k 表示,即幂的底数是R,指数为k,k与该位和小数点之间的距离有关。当该位位于小数点左边时,k值是该位和小数点之间数码的个数;而当该位位于小数点右边时,k值是负值,其绝对值是该位和小数点之间数码的个数加 1。例如二进制数 11010110=1×2 7 +1×2 6 +1×2 4 +1×2 2 +1×2 1 =214(十进制数),同理可以求八进制数 327=3×8 2 +2×8 1 +7×8 0 =215(十进制数),11F=1×16 2 + 1×16 1 +15×16 0 =287(十进制数)。
因此,从大到小排列依次是(11F) 16 ,(327) 8 ,(11010110) 2 ,(213) 10 。
试题 9 分析
本题考查奇偶校验的特点。
奇校验是校核数据完整性的一种方法。从直观的角度而言,奇校验的规则是:信息数据中各位中 1 的个数为偶数,则校验码为 1,从而保证总的 1 的个数为奇数。否则,校验码为 0。偶校验则与奇校验恰好相反。题目编码中 1 的个数为偶数(4 个 1),校验码应该为 1,并将奇校验位放在最低位,那么结果为 11110001。
试题 10~12 分析
本题考查磁盘格式化和基本结构。
磁盘的读/写是通过磁盘驱动器完成的。磁盘片的存储格式是指盘片的每面划分为很多个同心圆式的磁道,而每个磁道划分成很多个存储信息的扇区。磁道按从小到大的顺序从外圈磁道向内圈磁道进行编号,磁道上的扇区数是在磁盘格式化时就被决定了的,每个磁道上的扇区数是相等的。
试题 13 分析
本题考查冯·诺依曼结构计算机的特点。
现在所使用的计算机大多数基于冯·诺依曼结构,它的基本特点是:
(1)计算机由运算器、控制器、存储器、输入设备和输出设备组成;
(2)采用存储程序的方式,程序和数据放在同一个存储器中,指令和数据都可以送进运算器运算;
(3)数据以二进制数表示;
(4)指令由操作码和地址码组成;
(5)指令按照顺序存储,由指令计数器指明当前需要执行指令的地址,通过改变指令计数器来改变程序的流程;
(6)计算机以运算器为中心,输入/输出设备和存储器之间的数据传送需要通过运算器。
试题 14~16 分析
本题考查存储管理方式。
存储管理主要是指对内存储器的管理,负责对内存的分配和回收、内存的保护和内存的扩充。其中主要经历了单一连续区管理、分区存储管理、页式存储管理、段式存储管理和段页式存储管理等几种方法。
(1)单一连续区管理是将内存分配成一个区域,供一个程序使用。
(2)分区存储管理包括固定分区和可变分区两种。固定分区是把内存空间固定地划分为若干个大小不等的区域,划分的原则由系统决定。而可变分区分配方法是把内存空间按用户要求动态地划分成若干个分区,克服了固定分区分配方法中的小作业占据大分区后产生碎片的浪费问题。
(3)页式存储管理的基本思想是把程序的逻辑空间和内存的物理空间按照同样的大小划分成若干页面,以页面为单位进行分配,从而进一步提高了内存的利用率。
(4)段式存储管理与页式存储管理相似。分段的基本思想是把用户作业按逻辑意义上有完整意义的段来划分,以段为单位作为内、外存交换的空间尺度。
(5)段页式存储管理是段式和页式两种管理方法结合的产物,综合了段式组织与页式组织的特点,根据程序模块分段,段内再分页,内存被划分成定长的页。这种存储管理能充分提高内存空间的利用率。
无论存储管理方式怎么改变,它的首要目的都是为了提高内存空间的利用率来满足用户需要。
试题 17 分析
本题考查计算机的硬件构成。
计算机硬件由输入系统、输出系统、运算器和控制器及存储器组成。而运算器和控制器统称中央处理器。运算器的主要功能是在控制器的控制下完成各种算术运算、逻辑运算和其他操作,它的英文名字是Arithmetic Logic Unit,简称ALU。控制器是中央处理器的核心,它控制和协调整个计算机的动作。存储器是计算机中用来存储数据的设备,而寄存器是一种数据处理速度非常快的存储设备,一般用来存放有用的临时信息。
试题 18 分析
本题考查内存储器的级联。
串联是指将具有相同位的存储器联在一起形成具有更大容量的存储器。并联是指将具有相同容量的存储器联在一起形成能同时处理更多位的存储器。从题目来看,组成 2M×8 位的内存可以用 2M×4 位进行并联或 1M×8 位进行串联。
试题 19 分析
本题考查存储周期的概念。
存储周期是指连续启动两次操作所需间隔的最小时间,即两次独立的存取操作之间所需的最短时间。
试题 20 分析
本题考查计算机中进程的创建。
进程是可以与其他程序并发执行的一段程序的一次执行过程,是系统进行资源分配和调度的基本单位。进程实体由程序块、进程控制块和数据块三部分组成。进程在计算机中可以处于执行、就绪和阻塞这三种基本状态中的一种,只有在进程处于执行状态时,进程才占有CPU。
进程一般由创建原语创建,不管是系统创建还是父进程创建都必须调用创建原语。进程一旦被创建就处于就绪状态,处于就绪状态的进程分配到了除处理机以外的必需的资源。因此创建进程时并没有为进程分配CPU。
试题 21 分析
本题考查数据表示方面的基础知识。
汉字种类繁多,编码比拼音文字困难,而且在一个汉字处理系统中,输入、内部处理、存储和输出对汉字代码的要求不尽相同,所以采用的编码也不同。汉字的输入码主要分为三类:数字编码、拼音码和字形码。
用点阵表示字形时,若点阵大小确定,对于不同汉字,其点阵信息量是相同的。
汉字的矢量表示法是将汉字看做是由笔画组成的图形,提取每个笔画的坐标值,这些坐标值就可以决定每一笔画的位置,将每一个汉字的所有坐标值信息组合起来就是该汉字字形的矢量信息。显然,汉字的字形不同,其矢量信息也就不同,每个汉字都有自己的矢量信息。
试题 22 分析
本题考查操作系统中内存资源的分配。
进程和线程是我们容易搞混的两个概念。
进程是可以与其他程序并发执行的一段程序的一次执行过程,是系统进行资源分配和调度的基本单位。线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其他线程共享进程所拥有的全部资源。一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行。
试题 23 分析
本题考查UML图的使用场景。
协作图强调收发消息的对象之间的结构组织;序列图描述了在一个用例或操作的执行过程中以时间顺序组织的对象之间的交互活动;对象图展现了一组对象以及它们之间的关系,描述了在类图中所建立的事物的实例的静态快照;活动图是一种特殊的状态图,展现了在系统内从一个活动到另一个活动的流程。活动图专注于系统的动态视图,它对于系统的功能建模特别重要,并强调对象间的控制流程。
试题 24 分析
本题考查测试过程的内容。
测试是软件开发过程中一个独立且非常重要的阶段,一个规范化的测试过程通常包括如下基本的测试活动:拟定测试计划、编制测试大纲、生成测试用例、实施测试和生成测试报告。拟定测试计划的内容主要有测试的内容、进度安排、测试所需的环境和条件、测试培训安排等。
试题 25~26 分析
本题考查实体联系模型的基本内容。
在实体联系模型中,联系被定义为表示实体之间的关系。一个联系可以与一个或多个实体有关,而实体之间的联系可以是一对一、一对多或多对多的关系。
试题 27~28 分析
本题考查TCP/IP协议及传输的数据单元在各层的形式。
TCP/IP协议是一组包括TCP协议和IP协议、UDP协议和其他一些协议的协议组。其中TCP协议是传输层的服务协议,而IP协议是网络层的服务协议。
在物理层传输的是原始比特,在数据链路层传输的是帧,在网络层传输的是分组,而信元是ATM网络的基本数据单元。
试题 29 分析
本题考查几个常见Internet应用协议的功能。
Telnet(远程登录协议)的基本功能是允许用户登录进入远程主机系统进行操作和管理。Telnet的应用不仅方便了我们进行远程登录,也为黑客提供了一种入侵的手段和后门。
FTP(文件传输协议)是在Internet上使用最广泛的文件传输协议,允许传输任意文件,并且允许文件具有所有权与访问权限。
SMTP(简单邮件传输协议),是一种提供可靠且有效电子邮件传输的协议,使用SMTP,可实现相同网络上处理机之间的邮件传输,也可通过中继器或网关实现某处理机与其他网络之间的邮件传输。
RAS(远程访问服务)主要用来配置企业的远程用户对企业内部网络的访问。
试题 30 分析
本题考查通过IP地址和子网掩码来计算网络号的方法。
IP地址的长度为 32 位,它分为网络号和主机号两部分。网络号标识一个网络,一般网络号由互联网络信息中心统一分配。主机号用来标识网络中的一个主机,它一般由网络中的管理员来具体分配。子网掩码与IP地址一一对应,是用来区分IP地址中的网络号和主机号的。网络号部分对应的子网掩码全为 1,而主机号部分则全为 0。
在本题中,先将子网掩码转化成二进制数,为 11111111 11111111 11110001 00000000,而高位的 1 对应IP地址中的部分为网络号,因此IP地址中的前 20 位是网络号部分,后12 位是主机号部分,这样,可以得出题目中主机所在的网络号为 192.168.240.0。
试题 31 分析
本题考查语音信号数据量的采集。
对语音信号的采集,一般是在声道中量化每秒钟采样到的信号。在题目中,已经告诉我们采样频率为 22.05kHz,量化精度为 8 位,且是双声道,因此每秒可得到的数据量是 22.05kHz×8B×2=352.8KB,因此,10 分钟的数据量 352.8KB×600s/8=26460000B。
试题 32~33 分析
本题考查MPEG格式的存储技术。
MPEG是活动图像专家组的英文简写,MPEG标准主要有以下 5 个:MPEG-1、MPEG-2、MPEG-4、MPEG-7 及MPEG-21。MPEG标准的视频压缩编码技术主要利用了具有运动补偿的帧间压缩编码技术以减小时间冗余度,利用DCT技术以减小图像的空间冗余度。影响帧间压缩编码技术对图像数据压缩比的主要因素是图像序列变化的程度。
试题 34 分析
本题考查单链表的基本操作——结点删除。
单链表中的每个结点不但要存储线性表结点的信息,还要用一个域存储其后继结点的指针。单向链表通过链接指针来体现线性表中结点的先后次序关系。
题目中要求删除P结点的后继结点,这要求我们在删除P结点的后继结点后要仍然保证此链表是一个单链表,即需要将P结点后继结点的后继结点指针赋给P→next,即P→next=P→next→next。
试题 35 分析
本题考查队列的基本知识。
队列也是一种特殊的线性表,只允许在一端进行插入,另一端进行删除运算。循环队列就是将实现队列的A[m]的第一个元素A[0]与最后一个元素A[m–1]连接起来。在循环队列中用队头和队尾表示队列满的条件是(Q.rear+1)%m == Q.front。
试题 36 分析
本题考查的内容实质是二叉树的遍历。
在算术表达式的二叉树中,运算符占据着根结点的位置,而被运算的数都是树中的叶子结点。中缀表达式反映出了表达式的运算次序,如题目中的表达式A-(B+C/D)*E,首先运算括号里面的,再运算乘法,最后才是减法。在二叉树中,最先运算的操作是子树,最后运算的操作才是根结点。根据中缀表达式A-(B+C/D)*E,我们很容易画出其对应的二叉树,再对此二叉树进行后序遍历得到ABCD/+E*-。
试题 37~38 分析
本题考查二叉树的遍历。
已知二叉树的前序序列和中序序列分别为GFDBHCEA和DFHBGCAE,根据前序序列的定义,可知G为根,然后再根据中序序列可知DFHB为G的左子树,CAE为G的右子树。
我们首先看左子树DFHB,其对应的前序序列为FDBH,因此F为根,D为F的左子树,HB为B的右子树。同理,HB对应的前序序列为BH,所以B为根,H为B的左子树。
同理,可以得出右子树CAE的构造。CAE对应的前序序列为CEA,所以C为根,EA为C的右子树。EA对应的前序序列为EA,因此E为根,A为F的左子树。
至此,我们就构造出了这棵二叉树,因此,我们可以知道二叉树的后序序列为DHBFAECG。层次序列是将树的结点从上到下,从左到右依次写出,即GFCDBEHA。
试题 39 分析
本题考查哈希表的查找。
哈希表的目的是建立希望不经过任何比较,一次存取便能取得所查的记录。在哈希表存储时,一般是通过在记录的存储位置和它的关键字之间建立一个确定的对应关系,使得每个关键字和结构中的一个唯一的存储位置对应,而这个对应关系就是哈希函数。
哈希表记录类型是指哈希表中记录的数据类型,与哈希表的查找过程没有什么关系。装填因子=表中填入的记录个数/哈希表的长度。
试题 40 分析
本题考查排序的基本概念和对一些排序方法的掌握。
所谓排序就是要整理文件中的记录,使之按关键字递增(或递减)次序排列起来。
直接插入排序的过程为在插入第i个记录时,R 1 ,R 2 ,…,R i-1 已经排好序,将第i个记录的排序码k i 依次和R 1 ,R 2 ,…,R i-1 的排序码逐个进行比较,找到适当的位置。在这个排序过程中,如果发现两个数相等,则在已排好序的数前面插入这个相等的数,这样与原序列发生了颠倒,是不稳定的排序算法。
试题 41 分析
本题考查数据结构基础知识。
邻接矩阵表示法利用一个矩阵来表示图中顶点之间的关系。对于具有n个顶点的图G=(V,E)来说,其邻接矩阵是一个n阶方阵,且满足
在无向图中,顶点v i 到v j 有一条边,则v j 到v i 也一定有边,因此,无向图的邻接矩阵是对称的,而有向图的邻接矩阵则不具有该性质。
试题 42~43 分析
本题考查有向图与无向图的邻接矩阵存储结构。
邻接矩阵反映顶点间邻接关系,设G=(V,E)是具有n(n≥1)个顶点的图,G的邻接矩阵M是一个n行n列的矩阵,并有若(i,j)或<i,j>∈E,则M[i][j]=1;否则,M[i][j]=0。
由邻接矩阵的定义可知,无向图的邻接矩阵是对称的,有向图的邻接矩阵不一定对称。对于无向图,其邻接矩阵第i行元素的和即为顶点i的度。对于有向图,其邻接矩阵的第i行元素之和为顶点i的出度,而邻接矩阵的第j列元素之和为顶点j的入度。
由邻接矩阵A可知,各顶点的出度和是 4,如果是有向图,每条弧对应一个出度和一个入度,因此,图中有 4 条弧。如果是无向图,每条边对应两个度,因此,图中只有两条边。
试题 44 分析
本题考查C语言的基本语法知识。
在C语言中,NULL是一个关键字,它的默认值是 0,题目中的代码是输出变量NULL的值,因此,结果为 0。
试题 45 分析
本题考查C语言中指针与数组的应用。
在C语言中,定义指针数组的方法是(数据类型 * 指针数组名[常量表达式]),而题目中给出的说明是int(*ptr)[M],因此,不是定义指针数组的方法,而是定义一个指向具有M个整型元素的一维数组的指针。
试题 46 分析
本题考查C语言字符数组的相关知识。
C语言中的字符数组是对字符串有特殊处理能力的数组,数组的赋值操作是不能整体操作的,而需要对其中元素逐个赋值,字符数组也不例外。字符数组就是用来对字符串进行操作的,当然可以存放字符串,且字符串可以整体输入、输出。
试题 47~48 分析
本题考查软件开发模型中几个模型的关系和作用。
在众多软件开发模型中,瀑布模型的优点是强迫开发人员采用规范的方法并严格规定了各阶段必须提交的文档,其缺点是缺乏灵活性;演化模型是一种原型化开发方法,其开发过程是从初始模型逐步演化为最终软件产品的渐进过程;螺旋模型综合了瀑布模型和演化模型的优点,还增加了风险分析;喷泉模型主要用于描述面向对象的开发过程,喷泉一词体现了面向对象开发过程的迭代和无间隙特征。
试题 49 分析
本题考查标准的分类。
标准是为了在一定的范围内获得最佳秩序,对活动或其结果规定共同的和重复使用的规则、导则或特性的文件。标准根据其性质可以分为技术标准、管理标准和工作标准。
试题 50 分析
本题考查知识产权的知识。
著作权法规定:将中国公民、法人或者其他组织已经发表的以汉语言文字创作的作品翻译成少数民族语言文字作品在国内出版发行。可以不经著作权人许可,不向其支付报酬,但应当指明作者姓名、作品名称,并且不得侵犯著作权人依照本法享有的其他权利。题目中小李将希赛IT教育研发中心的软考书籍翻译成为蒙古语并出版,在这个过程中,他的行为不构成侵权。
试题 51~52 分析
本题考查结构化分析方法的特点。
结构化分析方法是一种面向数据流的需求分析方法,其预先严格定义需求。它的基本思想是自顶向下逐层分解,把一个大问题分解成若干个小问题,每个小问题再分解成若干个更小的问题。经过逐层分解,每个最底层的问题都是足够简单、容易解决的,于是复杂的问题也就迎刃而解了。
试题 53 分析
本题考查面向对象分析与结构化分析的基本概念。
面向对象分析的主要任务是描述用户需求,构建一个准确的、一致的模型以描述软件需要解决的问题,其结果是软件系统的分析模型;面向对象设计的主要任务则是描述系统如何解决问题,其结果是软件系统的设计模型。
试题 54 分析
本题考查面向对象程序设计语言中的一些常见技术。
继承:这是我们非常熟悉的概念,是子类从父类派生,继承父类的特点并拥有自己新的特点,体现了特殊与一般的关系。
模板:是对具有相同特性的函数或类的再抽象,是一种参数化的多态性工具。模板的使用为各种逻辑功能相同而数据类型不同的程序提供一种代码共享的机制。
动态绑定:是面向对象程序设计语言中的一种机制,是一种方法的定义与具体的对象无关,而对方法的调用则可以关联于具体的对象的机制。
试题 55 分析
本题考查产生死锁的 4 个必要条件。
死锁是系统的一种出错状态,应该尽量预防和避免。产生死锁的主要原因是供共享的系统资源不足、资源分配策略和进程的推进顺序不当。产生死锁的必要条件是:互斥、保持和等待、不可剥夺及环路等待。
试题 56~57 分析
本题考查类库的概念和特点。
类库是一种事先定义好的程序库,它以程序模块的形式,按照类的功能把一组类的定义和实现组织在一起。封装为类库的建立提供了强有力的支持,因为类库的特点是能够单独完成一定的功能,对用户一般是透明的,用户并不了解类库的内部结构,只需知道其调用接口即可,而封装则能帮助类库实现这些功能。
试题 58~59 分析
本题考查I/O设备在进行输入、输出时的缓冲技术。
在用I/O设备对数据进行输入、输出时,由于CPU的处理速度过快,我们需要一种技术来协调这个速度不匹配问题,这种技术就是缓冲技术。它的实现方式是在内存中建立缓冲池来存放数据,当CPU处理数据时,直接从缓冲池中进行存取。
试题 60 分析
本题考查令牌总线访问控制方法的相关内容。
令牌总线网是令牌环网的一种变形,令牌环网是IBM公司于 20 世纪 70 年代开发出来的,至今仍然沿用于IBM内部局域网的一种局域网技术。它在局域网中的流行性仅次于以太网。
IEEE 802.4 制订了令牌总线访问控制方法的标准。
IEEE 802.3 制订了以太网访问控制方法的标准。
IEEE 802.5 的实现是基于星型拓扑结构的,几乎和令牌环网标准完全一样。
IEEE 802.6 制订了光纤网络的一系列标准。
试题 61 分析
本题考查面向对象建模方法OMT的模型。
OMT方法是一种面向对象的建模方法,它包括对象模型、动态模型和功能模型。这三个模型分别从三个不同侧面描述了所要开发的系统:功能模型指明了系统应该“做什么”;动态模型明确了什么时候(即在何种状态下接受了什么事件的触发)做;对象模型则定义了做事情的实体。
(1)对象模型表示静态的、结构化的系统的“数据”性质,它是对模拟客观世界实体的对象,以及对象彼此间的关系的映射,描述了系统的静态结构。通常用类图表示。
(2)动态模型表示瞬时的、行为化的系统的“控制”性质,它规定了对象模型中对象的合法变化序列。通常用状态图表示。
(3)功能模型表示变化的系统的“功能”性质,它指明了系统应该“做什么”,因此更直接地反映了用户对目标系统的需求。通常用数据流图表示。
试题 62 分析
本题考查调制解调器的功能。
调制解调器是现代网络中常见的设备,它的另一个名字叫“猫”,一般在拨号上网时用到。由于计算机内部使用的是数字信号,而通过电话线路传输的信号是模拟信号,语言不通。因此,需要有一个翻译在中间搭桥牵线。而Modem正是这个翻译,它的作用就是当计算机发送信息时,将计算机内部使用的数字信号转换成可以用电话线传输的模拟信号,通过电话线发送出去;接收信息时,把电话线上传来的模拟信号转换成数字信号传送给计算机,供其接收和处理。
试题 63~68 分析
本题考查关系模式与SQL语句基础知识。
试题 (63) ,根据题意,关系P中商品名不能为空和商品名是唯一的,故应用NOT NULL UNIQUE来约束。
试题 (64) ,根据题意,“条形码”唯一标识关系P中的每一个元组,所以条形码是主键,故应用PRIMARY KEY来约束。
试题 (65) ,根据题意,供应商号是关系P的外键,故应用FOREIGN KEY来约束。
试题 (66) ,根据题意,查询供应商及价格小于等于 2500 元且大于等于 1280 元的“电冰箱”的数量的SQL语句应该采用“Between…AND…”,故完整的SQL语句为:
试题 (67) ,根据题意,将供应商号“12021”所供应的商品价格上涨 3%的SQL语句应该采用“SET…”,故完整的SQL语句为:
试题 (68) ,根据题意,查询供应商地址包含“西安”的供应商名及电话的SQL语句应该采用“like…”,故完整的SQL语句为:
试题 69 分析
本题考查进程的调度算法。
进程调度的算法是服务于系统目标的策略,对于不同的系统与系统目标,常采用不同的调度算法,常见的调度算法有如下几种。
(1)先来先服务调度算法(FCFS):按进程提交的先后次序调度。
(2)优先数调度算法:优先数反映了进程优先级,就绪队列按优先数排队,有两种确定优先级的方法,即静态优先级和动态优先级。静态优先级是指进程的优先级在进程开始执行前确定,执行过程中不变;而动态优先级则可以在进程执行过程中改变。
(3)定时轮转法:就绪队列按FCFS方式排队。每个进程执行一次占有处理器时间都不超过规定的时间单位(时间片),若超过,则自行释放自己所占有的CPU而排到就绪队列的末尾,等待下一次调度。同时,进程调度程序又去调度当前就绪队列中的第一个进程。
(4)短作业优先调度算法:按作业的估计运行时间调度,估计运行时间短的作业优先调度。该算法不利于长作业,可能会使一个估计运行时间长的作业迟迟得不到服务。此调度算法一般用于页面调度,不用于进程调度。
根据上述各算法的性质,我们知道,为了对紧急进程或重要进程进行及时调度,应该采用优先级进程调度算法,给紧急进程或重要进程赋予高的优先级,这样就能保证该进程能立即得到调度。
试题 70 分析
本题考查软件的一些特性。
继承性是面向对象程序设计思想出现以后才有的特性,是面向对象方法学中的一个十分重要的概念,其定义是:特殊类(或称子类、派生类)的对象拥有其一般类(或称父类、基类)的全部属性与服务,是提高软件开发效率的重要原因之一。
共享性主要要求软件中的代码和数据资源能够被多个对象所共同使用,也是提高软件开发效率的重要原因之一。
封装性是面向对象程序设计方法的又一个重要原则,它将对象的属性和行为代码封装在对象的内部,形成一个独立的单位,并尽可能隐蔽对象的内部细节,通过对外接口来使软件的内部实现与外部可访问性分离。
抽象性一般是指将具有共同特征的事物抽象成类。
试题 71~75 分析
本题考查专业英语应用能力。
(1)单词与词汇
business strategy:业务策略;seamlessly:无缝的;interoperable:互操作;Web browser-oriented:面向Web浏览器。
(2)选项分析
collection:聚集,根据上下文意思,这里应该是说明它聚集了什么功能。
programming:编程,此空与第(71)空是结合在一起的,说明.NET聚集了支持Web编程的功能。
seamlessly:无缝的,此空很明显缺一个形容词来修饰后面的互操作。
platform:平台,.NET platform意思是.NET平台,从上下文的意思可以看出。
verification:证实、认证。在前面提到过账号,而此空的前面是单词identity,意思是身份,联系起来应该是身份认证。
(3)参考译文
.NET技术是微软的业务策略,同时也是微软为著名的Web服务提供的编程平台,它能让Web为你的计算机提供各种各样的服务。微软的目的是为个人和商业用户提供一个无缝的互操作,为应用程序和计算设备提供上网功能的界面,并使计算活动越来越多地面向网页浏览器。.NET平台包括服务器,构建组件服务,如基于Web的数据存储、设备软件等,它也包括通行证,微软只要填写一次的身份认证服务。
试题一分析
本题考查程序流程图对三角函数sinx的计算。
首先我们来分析一下三角函数sinx的计算过程。对三角函数sinx的计算是根据题目中给出的展开式来进行的,每次计算是在原来的基础上加上一项,其初始项为x。通过判断第k步与第k+1 步结果的差的绝对值与精度e的大小来决定计算是否继续。如果结果的差大于精度e,计算继续,反之则停止。再有就是如果结果的差一直大于精度e,则计算到n步后停止。由上述描述我们知道,对三角函数sinx的计算需要一个条件循环,且循环的条件应该是第k步与第k+1 步结果的差与精度e的大小关系和计算步数与n的大小关系。
下面,我们来看程序流程图。在流程图中,首先输入x,e,n的值,接下来申请了几个临时变量sin,temp,i,t。第(1)空在条件循环的开始处,很明显是要填控制循环的条件,由上面的分析我们知道,循环的条件应该是第k步与第k+1 步结果的差的绝对值与精度e的大小关系和计算步数与n的大小关系,但是,在此处我们还没弄清楚变量sin,temp,i,t分别用来存放什么内容,因此,此空最好是在做完后面的以后再回头来完成。
第(2)空处是要将一个值赋给变量t,变量t的初始赋值语句是t=x,这是将展开式的第一项赋给了变量t,因此变量t有可能是用来存放第 1 步的运算结果,也很有可能用来存放每次要加的项。结合这个流程图来看,变量t中存放的是每次要加的项,确定了这个后,再结合展开式中第k项与第k+1 项的特点和通项公式,不难看出第(2)空应该填“-t*x*x/((2*i)*(2*i+1 ))”。
第(3)空是紧接着第(2)空而来的,是将一个值赋给变量sin,变量sin的初始赋值语句是sin=0,结合整个流程可以知道,第(3)空与第(4)空应该结合起来完成,变量sin与temp分别用于存放第k步与第k+1 步的运算结果,由它们的初值我们可以判断出,变量sin用来存放第k步的运算结果,而temp用来存放第k步的运算结果与增加项的和,即第k+1 步的运算结果。在每次运算前,我们都把其结果保存在变量sin中。因此,第(3)空的答案为“temp”,第(4)空的答案为“sin+t”。
结合程序全过程来看,可以知道第(5)空处是用来控制计算步数的。每计算一次后程序的计算步数应该就增加了 1,在流程图中,变量i是用来统计计算步数的,因此,第(5)空的答案是“i++”。
在知道变了量sin,temp,i,t的作用后,第(1)空就很简单了,答案应该为“i<=n&& abs(sin-temp)>e”。
试题二分析
本题考查C语言中一些运算的实现。
在程序 2.1 中要求求出满足如下条件的所有三位数:它除以 11 得的商等于它各位数字的平方和。要想求出所有结果,我们应该对每个三位数进行计算来判断它是否符合题目中的要求,只有在除以 11 的商等于各位数字的平方和时,才是我们要求的数。
有了上述分析后,我们再来看程序 2.1 的代码,代码中首先声明了几个临时变量i,j,n,s。接下来是一个循环,其目的是对从 100 到 999 的所有三位数来进行运算。再接下来的代码是将当前的这个三位数存放在变量n中,将除以 11 得到的商存放在j中。
第(1)空所在的位置是循环的判断条件,根据我们上面的分析和整个程序代码来看,这个循环应该是用来计算三位数中各位数字的平方和用的,再看循环中语句n/=10,其作用是将n的值除以 10,因为n是整型变量,保存数据时是直接去除小数点后面的数而只保留前面的整数部分,这个操作其本质是对数字降位,去除最低位(个位)。在对其进行此操作前应该对数字中的最低位进行求平方计算,这也应该是第(2)空的任务,要求个位数的方法是n%10,因此,第(2)空答案应该是“s=s+(n%10)*(n%10);”。
第(3)空所在的位置是条件选择语句的条件,如果此条件成立,就输出变量i的值,i中存放的是当前参与计算的三位数,只有满足除以 11 得到的商等于它各位数字的平方和的三位数才能被输出,那么条件选择语句中的条件应该是判断除以 11 得的商是否等于它各位数字的平方和。因此,第(3)空的答案为“j==s”。
在程序 2.2 中要求将输入的一字符串中的大写字母改变成小写字母,那么我们首先要了解C语言中大小写字母的转换规则。在C语言中字母的运算其实是字母对应的ASCII码码值的运算,其中小写字母a对应的ASCII码值为97,a后面的小写字母的ASCII码值依次增加 1,而大写字母A的ASCII码值为 65,A后面的大写ASCII码值也依次增加。这样,我们就知道了小写字母比对应的大写字母的ASCII码值大 32,在将小写字母转化为大写字母时,我们只要相应地将小写字母的ASCII码值减去 32 或加上 32 的相反数即可。
下面,我们来看程序 2.2 的代码,在代码中,声明了一个长度为 120 的字符型数组S存放输入的字符串,下面有一个循环语句,第(4)空是循环语句的循环条件,结合整个程序,我们可以知道,循环语句要实现字符串中大写字母改变成小写字母的功能,所以循环的条件应该是判断在操作时是否取到了字符,而字符是存放在数组中的,因此,此空答案应该是“s[i]”。第(5)空是一个条件选择语句的条件,如果条件成立就执行将大写字母改变成小写字母操作,因此,是判断取到的字符是否为大写字母,所以此空答案为“s[i]>='A'&&s[i]<='Z'”。
试题三分析
本题考查C语言中具体算法的实现。
题目中要求将 3n+2 个球互连,并用自然数 1~3n+2 分别为这些球编号,使相连的两球编号之差的绝对值正好是数列 1,2,…,3n+1 中的各数。题目中还给出了具体的填自然数的思想。我们要完成的工作就是用C语言描述出题目中给出的思想。首先我们需要对其思想有个正确的认识,这是关键所在。
下面,我们来分析代码。结合整段程序代码,我们可以分析出,二维数组a用来存放我们要填的数字,第一维表示行数,总行数应该是 3。第二维表示列数,总列数应该是n+2。其中的第(1)空所在的位置是表示一个条件判断语句的条件,在这之前已经对第 1 列的中间 1 个进行了填数,那么根据“先自左向右,第 1 列中间 1 个填数,然后第 2 列上、下 2 个填数,每次 2 列”的思想,再结合下面的填数程序语句,我们可以知道,此语句就是用来实现先在第 1 列中间 1 个填数后,对第 2 列上、下 2 个进行填数,每次 2 列这个思想的。因此,第(2)空的答案就出来了,是对第 2 列下(第 3 行)进行填数,因此,答案为“a[2][2*i+1]=k;”。因为条件判断语句下面是进行了 2 次填数,因此可以判断n应该是个奇数,因为若n为偶数,最后 1 次只排第 1 列中间一个数,就不需要这个操作了。因此,第(1)空的作用应该是用来判断n是奇数,所以此空答案为“(n%2==1)”。
第(3)空所在的位置在条件n%2==1 成立的情况下才执行,条件n%2==1 成立表明n是奇数,根据若n是奇数,再右第 2 列中间填数的思想,我们可以知道,此处应该是对右第 2 列中间填数,因此,答案为“a[1][n+1]=k;”。
第(4)空所在的位置是条件n%2==1 不成立的情况下才执行,在上面我们知道n%2==1 是用来判断n是否为奇数,如果n不是奇数,我们不做什么,但为了方便后面的操作,应该将n+1 的值保存起来,因此,此空的答案为“m=n+1;”。
根据思想:若n是奇数,再右第 2 列中间填数。然后依次右第 1 列上、下 2 个填数,再右第 2 列中间 1 个填数,直到左第 2 列为止。在前面程序中,我们已经完成了前面部分,第(5)空所在的循环体就是用来完成后面部分的,在循环体中已经实现了对中、下进行填数,缺一个对上进行填数的代码,因此,第(5)空要完成的任务就是对上行进行填数,因此,答案为“a[0][m-2*i-1]=k;”。
试题四分析
本题考查C语言中计算n的合数方法的实现。
题目要求计算n的合数,我们首先来了解一下什么是n的合数。在正整数n的所有不同的划分中,将最大加数n 1 不大于m的划分个数记作q(n,m)。可以建立q(n,m)的如下递推关系。
(1)q(n,1)=1,n≥1
当最大数n 1 不大于 1 时,任何正整数只有一种划分形式,就是全 1。
(2)q(n,m)= q(n,n) ,m≥n
最大加数n 1 实际上不能大于n。因此,q(1,m)=1。
(3)q(n,n)=1+ q(n,n-1)
正整数n的划分由n 1 = n的划分和n 1 ≤n-1 的划分组成。
(4)q(n,m)= q(n,m-1)+ q(n-m,m),n>m>1
正整数n的最大加数n 1 不大于m的划分由n 1 =m的划分和n 1 ≤m-1 的划分组成。要想求出所有解,只有递归到最底层即全为 1 为止。
知道了上述特性,下面我们来看代码。在代码中首先声明一个数组和两个全局变量k,m。结合程序可以看出,其中数组n[i]中存放的是当前划分的最大加数,而m中存放的是当前被划分的数。程序代码中有三个函数,一个主函数、一个output_sum()函数和一个sum()函数,函数output_sum()的功能很简单,就是输出一次划分结果,在sum()函数中被调用。
经过分析不难发现,函数sum()的作用是实现整数的划分。在函数体中,首先是一个条件判断语句,其作用是判断当前被划分的数m是否小于当前最大加数的两倍,如果条件成立,说明数被划分为两个数后,其最大加数大于另一个数,而另一个数应该存放在数组中。此时执行语句m=m-n[i]来求出另一个数,接下来应该是保存这个数到数组中的下个位置,第(1)空就用来完成这个任务,因此,答案为“n[i+1]=m;”。
第(2)空所在的位置是条件不成立的情况下运行的语句,条件不成立,说明数被划分为两个数后,其最大加数小于另一个数,数可以有更大的最大加数,因此,将当前的最大加数保存到数组中的下个位置,此空答案为“n[i+1]=n[i];”。
第(3)空也在一个条件选择语句下面,此条件语句用于判断当前最大加数是否大于 1,如果大于 1,则需要接着划分,因此要调用函数sum(),其参数是i,所以此空答案为“sum(i);”。
第(4)空是条件不成立即当前最大加数为 1 的情况下执行的语句,当最大加数为 1时,说明递归到了最底层,此时,递归应该往回走了,这需要还原当前最大划分数m(为这个数的其他划分做准备),因此,这个空的答案为“m+=n[i];”。
第(5)空是在条件i!=0 为真的情况下执行的语句,如果条件为真,说明递归还没有回到最上层,应该求当前被划分数在当前最大加数变小后的其他划分情况,因此,此空答案为“n[i]--;”。
试题五分析
本题考查C++程序设计语言中结构化异常的错误处理机制。
要正确解答该题目,需要掌握C++中try...catch… finally与exception的概念与用法。
一般而言,try语句块中编写正常工作的语句,catch语句块中主要编写用于处理异常情况发生时的语句,而finally块中则包含不论是否发生异常都需要执行的语句。
本题中,Department类包含了一个受保护的方法average用于计算参数x除以y的值,在计算的过程中,如果y等于 0。则会抛出一个异常,空(1)处仅仅根据average本身无法判断异常的值与类型。因为Department类的caculate方法调用了average方法,并且在使用的过程中,需要捕获average方法产生的异常,空(2)处首先需要填写关键字catch,另外因为其捕获的异常类型为整型,因此,空(1)处应该抛出一个整型值,但在代码的逻辑判读中,判断的是e是否为 0 的情况,因此空(1)处应该抛出 0或者y值。
main方法中又使用了Department类的caculate方法,在使用变量d之前必须声明和定义,所以空(3)处应该为Departmentd。空(4)处仍然填写catch关键字。
若输入的数据为 6000 和 5,则整个程序能够计算出其平均值为 1200,并且输出caculate中的输出语句,结果为“平均工资:1200.0”。若输入的数据为 6000 和 0,则程序中caculate方法中的catch语句会首先捕获到average抛出的异常,要求重新输入数据,并再次调用average方法,由于输入的数据为 0 和 0,所以average会再次抛出异常,这个异常将由main方法中的catch捕获。
试题六分析
本题考查Java程序设计语言中结构化异常的错误处理机制。
要正确解答该题目,需要掌握Java中try…catch…finally与exception的概念与用法。
一般而言,try语句块中编写的是正常工作的语句,catch语句块中主要编写的是用于处理异常情况发生时的语句,而finally块中包含不论是否发生异常都需要执行的语句。
本题中,JavaMain类包含了一个静态的方法average,用于计算参数x除以y的值,在计算的过程中,如果y等于 0,则会抛出一个异常,空(1)处仅仅根据average本身无法判断异常所包含的信息。因为caculate方法调用了average方法,并且在使用的过程中,需要捕获average方法产生的异常,空(3)处首先需要填写关键字catch,另外因为其捕获异常后判断其值为'zero',因此,空(l)处应该填写一个字符串'zero '。空(2)处需要构造一个扫描器对象,该对象需要一个输入流作为参数,因此可以使用System.in。main方法中调用了caculate方法,空(4)处仍然填写catch关键字。
程序运行的过程中,若输入的数据为 6000 和 5,则整个程序能够计算出其平均值为1200,并且执行caculate中的输出语句,结果为“平均工资:1200.0”。若输入的数据为6000 和 0,则程序中caculate方法中的catch语句会首先捕获到average抛出的异常,要求重新输入数据,并再次调用average方法,由于输入的数据为 0 和 0,所以average会再次抛出异常,这个异常将由main方法中的catch捕获。