2005年11月程序员试题结构分析
添加时间: 2007-4-8 4:10:19 作者: 程序员认证参考 阅读次数:88 来源: http://www.d9soft.com
2005年下半年(11月)考试是按照新的考试大纲所进行的第三次考试,从试题来看,难度变化不大,很多题都是基本概念题,比较容易,几乎没什么难题。
一.上午试题结构
这次考试的分值分布情况如表1所示。

从表1中我们可以清晰地看到,分值比重最大的是程序设计语言,其次是组成 原理 和体系结构、 专业英语 、数据结构。与今年上半年5月的试题相比,程序设计语言(包括面向对象方法学)增加了2分,组成原理和体系结构减少1分,而数据结构增加了2分,专业英语一直是10分,其它知识点与去年相比也都是上下差一两分,比重变化不大。大部分题都是概念题,比如第25题考察有哪些常见的面向对象程序设计语言,第32题考察子串的概念,考生只要了解熟悉这些知识就能很轻松地答上来。有几个题相对来说有点难度,比如第2题考察国标码和机内码的转换。表2是按题号排列的详细的知识点分布表。
表2 按试题号分布的考查内容

二.上午试题难点分析
相对来说,第2、7、8、40、41题比较难一点,对照表2可看到,难点主要集中在组成原理和系统结构这块。下面对这几个题进行详细分析,剖析其中的出题意图,供大家参考学习。
●例题1 已知汉字“大”的国标码为3473h,其机内码为__(2)__。
(2) a. 4483h b. 5493h c. b4f3h d. 74b3h
◆分析
国标码又称为汉字交换码,在计算机之间交换信息用,用两个字节来表示,每个字节的最高位均为0。
汉字机内码是在设备和信息处理系统内部存储、处理、传输汉字用的代码。无论使用何种输入码,进入计算机后就立即被转换为机内码。规则是将国标码的高位字节、低位字节各自加上128(十进制)或80(十六进制),也就是说,将国标码的高低位字节的最高位都从0设置为1。这样做的目的是使汉字内码区别于西文的ascii码,因为每个西文字母的ascii的高位均为0,而汉字内码的每个字节的高位均为1。
我们知道,1个十六进制位对应4个二进制位,此题中,国标码为3473h,于是高字节是34h,低字节是73h,分别加上80h之后得b4h、f3h,再合并起来便得到机内码为b4f3h。
从上述分析可看出出题者的意图在于考察考生对各种编码的转换的掌握,于是,机灵的备考者应该从中发掘出信息,自己主动去复习更全面的各种编码的转换相关知识。
●例题2 若磁盘的转速提高一倍,则__(7)__。
(7) a. 平均存取时间减半 b. 平均寻道时间减半
c. 存储道密度提高一倍 d. 平均寻道时间不变
◆分析
此主要考察磁盘转速与其它磁盘参数的关系。
首先我们来明晰一些概念。我们将硬盘的记录面划分为若干个同心圆,称为磁道,最外面的为0磁道,最内圈磁道号最大。每个磁道又被划分为若干个扇区。硬盘启动时,磁头首先处于0磁道,硬盘从接到命令到向目标扇区读取或写入数据完毕依次分为下面三个阶段:
第一阶段,磁头从0磁道开始沿径向移动,移到目标扇区所在磁道的上方(注意,不是目标扇区,而是目标扇区所在的磁道),这段时间称为寻道时间,目标扇区所在磁道跟0磁道的远近不同,寻道时间也不一样。这个时间是随机变化的,因此用平均值来表示。最大寻道时间和最小寻道时间的平均值称为平均寻道时间,有的书上称为平均定位时间,约为10毫秒。
第二阶段,找到目标磁道后通过盘片的旋转,使得要目标扇区转到磁头的下方,这段时间称为旋转延迟时间,如果目标扇区恰好在磁头下方,则无需延迟,若刚通过磁头下方,则需要延迟旋转一周的时间(盘片只往一个方向转),可见这也是个随机值,于是我们取最大最小的平均值即旋转半周的时间作为平均旋转延迟时间,有的书上称为平均等待时间。比如,一个7200(转/每分钟)的硬盘,每旋转一周所需时间为60×1000÷7200=8.33毫秒,则平均旋转延迟时间为8.33÷2=4.17毫秒。
第三阶段,向目标扇区读取或写入数据,时间约为零点几个毫秒。
由此可见,第三阶段所耗时间相对第一、二阶段可以忽略不记。于是将平均寻道时间与平均旋转延迟时间之和称为平均存取时间。决定一个硬盘读写速度的是它的平均存取时间。
通过上面的分析,很显然选d。细心的读者不难发现,这其实就是2004年上半年程序员考试试题第58题的变体。该题如下:
●磁盘存取时间包括寻道的时间、定位扇区的时向以及读写数据的时间,若磁盘的转速提高一倍,则__(58)__。
(58)a.平均存取时间减少 b.平均寻道时间减少
c.存储道密度增加一倍 d.平均寻道时间增加
可见,熟悉历年试题是很有必要的。如果考生对上述几个概念记得不很清楚,那么很容易搞混,出题者就是针对考生的这个弱点来设置“圈套”的,只要能识破他的“动机”,这个问题就变得很简单。从该题我们得出一个经验,那就是注重熟悉历年试题、概念要明晰。
●例题3 某微型机字长16位,若采用定点补码整数表示数值,最高1位为符号位,其它15位为数值部分,则所能表示的最小整数为__(8)__,最大负数为__(9)__。
(8) a. +1 b. -215 c. -1 d.-216
(9) a. +1 b. -215 c. -1 d.-216
◆分析
此题主要考察考生对定点整数补码的掌握程度。
对于第(8)空,很多考生对于b、d两个选项拿捏不定;第(9)空比较简单,选c。 让我们先来看看定点整数补码的定义:
例如:x=+0110,则[x]补= 00110; x=-0110,则[x]补= 11010。
通过上面的分析,第(8)空显然选b。如果把选项d改为-215+1或-215-1,那难度就更大了。该题类似于2004年11月的试题8~9,只不过将12位改为16位,将对原码的考察改为对补码的考察。
从上面的分析可以看出,出题者无非是想知道考生对数据编码所能表示的真值范围的掌握得如何,这对于考生的备考无疑是有指导意义的。聪明的备考者应该在看了该题后,自己动手总结一下,n位原码、反码、补码所能表示的整数或小数的真值范围,画一个表格进行对比理解记忆。
●例题4 某c语言程序中,x是一个浮点型变量,m是一个值为正整数的整型常量,表达式x%m(x被m除取余数)在__(40)__时会报错,这是一种__(41)__错误。
(40)a.编译 b.预处理 c.编辑 d.运行
(41)a.词法 b.语法 c.语义 d.运行
◆分析
动手编过c语言程序的人都知道x%m中,都要求x、m为整数,若x为浮点型的话会通不过编译,在tc中编译时会报错“illegal use of floating point ...”,根本不能运行。
ansi c标准规定可以在c语言源程序中加入一些“预处理命令”,以改进程序设计环境,提高编程效率。这些预处理命令是由ansi c统一规定的,但是它并非c语言本身的组成部分,不能直接对它们进行编译(因为编译程序不能识别它们)。必须在对程序进行通常所说的编译(包括词 法语 法分析、代码生成及优化等)之前,先对程序中这些特殊的命令进行“预处理”,即根据预处理命令对程序作相应的处理。c语言提供的预处理功能主要有以下三种:
 宏定义(#define...)
 文件包含(#include...)
 条件编译(#ifdef...#else...#endif)
在编译过程的词法分析阶段,编译程序从左到右一个字符一个字符地读入源文件,对构成源文件的字符流进行扫描和分解,识别出一个个具有具体含义的单词,即逻辑上紧密相连的字符串。在此阶段查出的错误称为词法错误,比如,当读入while保留字时,源文件中错写成了whlle,错把i写成了l。接下来是语法分析阶段,是在词法分析的基础上将单词序列分解成各类语法短语,如分解出if...else...语句、赋值语句。在此阶段查出的错误称为语法错误,此题中显然提及的错误显然为语法错误,因为在c中规定%的两侧均为整数,才有可能构成一个完整的语法整体。
语义错误,顾名思义,指的是意义上的错误,比如程序执行的结果跟原意不符。
运行错误指程序在运行过程中出现错误。例如:
int a, b, c;
scanf("%d %d", &a, &b);
c=b/a;
printf("c=%d ", c);
程序没有错,能运行,但是如果输入a的值为0,就会出现错误,在tc中会在屏幕上报错:divide error。
通过上面彻底的分析,答案一目了然,分别选a、b,而且能得出一个结论:要成为一个合格的程序员,必须积极思考,而且要动手实践。
三.总结
程序员考试上午试题覆盖面比较广,涉及许多的基本概念,这就务必要求考生要透彻理解某一概念并注意相关概念的关系和区别,这样才不至于混淆。针对“覆盖面比较广”的特点,出题者最喜欢考那些考生最容易混淆的概念,因此,备考者要从注重概念的本质和区别入手,有力地避免掉入早已设置好的“圈套”。要切实理解
这些概念,必须要动脑筋,必须要动手,要有所提高,非下苦功夫不可!
历年试题有许多相似之处,熟悉、研究、发掘、拓展历年试题对于备考大有裨益。
上一篇文章: 程序设计(初级程序员级)考试说明及范围 下一篇文章: 【专题】VisualStudio2005(3)
相关文章:

