初级程序员和程序员级水平考试应试技巧 沈仲军 1996-09-27 首先是透彻理解考试大纲。 对考试大纲的理解程度是决定每一位准备考试的人员考试成败的关键。要全面理解并掌握考试大纲要求的重点、难点、广度和深度,这样复习准备过程中才会有的放矢。要透彻理解考试大纲,其最有效、最具体的途径是熟悉历年的考试试题。通过试题分析,既可以熟悉自己所考级别的考试方式、试题形式、试题的深度和广度等,也可以通过试题来发现自己复习中的不足,有重点地进行应考准备。 其次是答题技巧。 水平考试试题形式主要有选择题和叙述题(完形填空),下面就两种题型谈谈答题技巧。 一、选择题型答题技巧 选择题一般有单项选择题和多项选择题两种形式。 1.单项选择题 在对应试者能力测试而言,此类题属识记、理解类别。一般难度不大。答此类题目应力争在提高答题速度上下功夫。如果每一题都要求对几个备选答案认真研究以后,再从中选出你认为对的答案,那是浪费时间。一般答题原则为: ①先入为主,顺序扫描备选答案,见对者就选,不必看完几个备选答案。 ②全面扫描,进行粗选,缩小选择范围,最后进行析选或猜选。这种方法对于自己不太有把握的题目适用。首先一定不能采取放弃的态度,至少应猜选出一个备选答案。采用析选的话,请尽量少用时间去“深入分析”,那是得不偿失的。 ③难度系数较大的选择题,建议应试者对其缓答,待最后视余下的时间多少进行析选或猜选。 2.多项选择题 在对应试者能力测试而言,此类题型一般仍属识记,理解分析类别。但由于每小题要从几个备选答案中选出正确的答案(一般限定个数),难度系数显然提高了。此类题型极易暴露出受试者似是而非的模糊不清的概念,每每击中受试者的弱点。因此,笔者建议受试者在应答此类题目时,应首先果断地选出你认为最正确的备选答案,余下的把握不大的备选答案可采用猜选或析选。当然,对于自己认为概念清楚,较有把握的多选题,也应当机立断,全部选出。 二、叙述题(完形填空)答题技巧 此类题目在水平考试中也称程序设计,但又不同于我们平常所说的程序设计,它给定了部分程序框架,限制了你的编程思想,你必须理解题目给定的程序。一般而言,解答这类题目难度较大,不仅考查应试者的基础知识,也考查了应试者应用知识的能力。答题时应逐个分析,首先确定程序的每部分的功能和程序的控制结构;其次分析给定“空”前后语句(指令)之间的关系,特别注意程序中的条件转移和某些程序中的程序标号。下面实例进行分析说明。 三、实例分析 1.从供选择的答案中,选出应填入下面关于dBASE叙述中 内的正确答案,把编号写在答卷的对应栏内。 向dBASE数据库输入数据的方法有A,B。 dBASE数据库文件排序是一种C。 dBASE数据库索引是一种D。dBASE数据库的检索操作由E三种基本操作组合而成。 供选择答案: A、B:①模式输入 ②数据登录 ③模式登录 ④文本文件输入 C、D:①最优排序 ②逻辑排序 ③物理排序 ④二分法排序 E:①排序、索引、统计 ②选择、投影、联结 ③检索、工作区选择、关闭数据库 ④增、删、改 分析:该题目考查应试者数据库的基本知识,对于C、D两个选择题很容易选择,因数据库文件的排序是指按第一关键字来重新排列数据库中的数据,也称物理排序;索引是按关键字表达式值从小到大顺序排列的逻辑指针的集合,也称逻辑排序;这是两个基本概念。解答A、B时,则可能会出错,数据库的数据登录是在表中记入数据。dBASE中有多条语句具有向数据库中输入数据的功能,如非程序方式下的BROWSE语句;向库中添加新记录或空记录的APPE [BLANK]语句;从其它文件中添加记录到当前数据库文件中的APPE FROM语句;向数据库中当前记录前后添加新记录或空记录时用INSERT [BLANK] [BEFORE]语句。此外,从文本文件向数据库文件输入数据通常用于dBASE与其它高级语言程序交换数据。这样的分析,此题答案显见。由于dBASE是一种关系数据库管理系统,它的基本检索用的是选择(Select)、投影(Project)和联结(JOIN),任何检索操作的实现都可以用这三种运算组合而成。 解答:A:② B:④ C:③ D:② E:② 2.阅读下列程序说明和BASIC程序,把应该填入 处的字句写在答卷的对应栏内。 本程序将十进制非负整数M(0≤M≤32767)转换为R进制(R为正整数,且2≤R≤16),并输出。 算法如下:用M除以R取余数,对于商再除以R取余数,…直到商为0,将依次所得的余数按逆序连接起来,即为所求的R进制数,最后加上R进制校识。当10≤R≤16时,余数可能出现10,11,12,…,15,此时需将它们转换为A,B,C,…,F输出。例如:M=19,R=3输出结果为201(3);M=47,R=16输出结果为27(16)。程序中,数组K和M$依次存放各次运算所得的余数及转换后的字符串。 05 DIM K(15),M$(15) 10 FOR L=1 TO 6 20 READ Q$(L) 30 NEXT L 40 DATA "A","B","C","D","E","F" 50 INPUT "M=",M 60 INPUT "R=",R 70 IF R>16 THEN PRINT "ERROR!":END 80 IF M<0 OR M>32767 THEN PRINT "ERROR!":END 90 N=M 100 I=0 110 K(I)=(1) 120 IF K(I)<10 THEN 150 130 M$(I)=(2) 140 GOTO 170 150 M$(I)=(3) 160 M$(I)=RIGHT$(M$(I),1) 170 N=INT(N/R) 180 IF N=0 THEN 120 190 I=I+1 200 (4) 210 A$=M$(I) 220 FOR J=(5) 230 A$=A$+M$(J) 240 NEXT J 250 A$=A$+(6) 260 PRINT A$:GOTO 50 270 END 分析:题目算法已给,应试者必须根据算法对程序各部分的功能进行分析。第一部分5~40语句,定义存放各次余数的数组K(15)及存放转换后的字符串数组M$(15),并将“A”,“B”,…,“F”赋给一个字符串数组Q$(L)(L=1,2,…,6)。第二部分50~80语句,输入整数M和R。70语句当R>16时,输出“ERROR!”字样并结束程序。80语句判M是否超出0≤M≤32767范围,若超出则输出“ERROR!”并结束程序。第三部分90~200语句,是本程序的实质转换部分,I用来记录了余数出现的先后次序,100语句为I赋初值。用K(I)来记录第I次余数(从0计算起)。由110语句实现除以R取余数操作。掌握了函数INT的性质就不难完成,因此(1)应为:N-INT(N/R)*R。120语句判断余数是否小于10,当其大于、等于时,还必须将它转换为“A”,“B”,“C”,…,“F”。130语句实现了大于、等于10的余数与相应字符之间的转换。由第一部分可知,在Q$(1),Q$(2),…,Q$(6)中分别存有“A”,“B”,…,“F”字符,当余数为10时,必须用Q$(1)来代替,为11时必须用Q$(2)来代替,…,为15时必须用Q$(6)来代替,分析余数值与Q$数组下标的对应关系,不难写出(2)应为Q$(K(I)-9)。若余数小于10,不作转换,150语句必须将余数转换为字符型,则易写出(3)应为STR$(K(I))。为了使以后连接起来的R进制在形式上比较紧凑,用160语句对M$(I)取最右边的一个字符送M$(I)。170语句执行后,N为除以R后的商。180语句判断商是否为0,若非0,则I递增1,应回到110语句,继续进行除R取余操作,故(4)应为GOTO 110。各次产生的余数依次保存在M$(I)中,经过若干次操作后,商为0,则转120语句以结束转换工作。第四部分为210~260语句,实现将各次产生的余数M$(I)装配起来,加上R进制标识位并输出该数。210~240语句循环的语句结构,将各次余数M$(I)按余数产生的逆序进行字符连接运算,形成一个字符串存入变量A$。据M$(I)的形成过程及A$的构成规则,这个循环应是倒循环,将后产生的余数先连接上去,直到I为0,故(5)应为:I-1 TO 0 STEP -1;250语句末尾加上R进制标识操作,由于A$是字符类型,R为数值型号,故必须使用转函数,R前后要求加上一对括号,故(6)应写作“(”+STR$(R)+“)”。