还剩10页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
第1章程序员试题历年考试情况分析
1.1上午题历年试题及考点分析程序员考试科目1——计算机软硬件基础知识,也就是程序员上午题,是以选择题的方式进行考试的,其知识点包括计算机科学基础、计算机硬件基础知识、计算机软件基础知识、软件开发和维护、计算机安全知识、标准化基础知识、专业英语等方面在上午题的知识点中,主要以记忆为主,要比较全面地进行复习,在复习的时候不必太深究相对于下午题来说,上午题是比较简单的表
1.1是从2000年到2006年上半年所有上午试题的知识点分布表
1.1上午试题知识点分布从表
1.1中可以看出,知识点的考点分布没有太大的变化,基本上覆盖了大学本科计算机专业的所有专业课程近三四次的考试中,还出现了一些日常操作中的题目,如Windows的操作及Office系列软件的操作,当然,这些对考生来说不是什么难题,因为大家整天都在使用在复习的时候不宜过早地复习上午试题,因为容易忘记,编者建议在考试前半个月开始复习上午题,多看书,多看练习,特别是一些练习题后面的解答,都是复习和记忆的重点La图
1.1链表结点移动
②找到r指针
③找到s指针
④r-next=s-next把Aj结点连接到K2结点之前
⑤s-next=q把K1结点连接到原来Lb中K2结点的前一个结点的后面注意经过
④、
⑤两步操作,即实现了移动操作
⑥要注意的是现在La链表已经断开,也必须重新连接上但是注意一下程序,就会发现里面有很多判断,主要是看判断是否可以移动我们考虑后也可以看程序发现,在以下几种情况下,操作不能进行
①La或Lb是空链表
②len表示个数的值,因此不能不大于0
③La中不存在keyl的结点
④La中从key!结点开始的结点个数小于len个
⑤Lb中不存在key2的结点3现在是看程序结构是不是和我们自己考虑的算法符合程序段5〜8其中有p指针在向后移动,一直到keyl为止,因此,它们的功能就是找到指向keyl结点的指针;同时一,另有一个指针prep一直在p的后面,因此它就是指向keyl的前一个结点的指针程序段10〜13其中有一个k变量,每次循环后增加1因此它是一个计数器通过计数len次,就可以找到从keyl结点开始的第len个结点这时,应该有一个指针q同时移动,使得这个指针就是指向第len个结点的指针程序段15〜18其中有s指针在向后移动,一直到key2为止,因此,它们的功能就是找到指向key2的前一个结点的指针程序段20〜22就是移动La中的结点到Lb并把La中断开的链表连接从上述的分析发现,程序结构是和我们自己考虑的算法一致的4考虑细节,并填空
①我们的目的是找指向第len个结点的指针,找到后循环应该结束,因此,要填kleno有同学可能会考虑填kv=len这时,大家可以用一个实例试一下譬如len=3你会发现指针其实只要移动两次就可以了因此,k=len是错的
②q指针应该同时移动,故应填q=q-nexto
③这一段程序的功能是找到指向key2的前一个结点的指针其中s指针是指向key2结点的,而pres指针跟在s后面但是pres指针缺少初值,因此,这儿应该给pres赋值故应填pres=Lb0
④程序块
20、
21、22的功能是移动La中的结点到Lb并把La中断开的链表连接根据链表操作的方法,显然20是把La中断开的链表连接,因此,4应该填prep-next而2122是移动La中的结点到Lb因此,5应该填pres-next在做下午题的时候,注意以下事项1做下午的试题禁忌是无耐性,下午试题并不是你想象得那么难,每个题都是有几个空是很简单的,不要被长长的题目所吓倒,一般来说,两个半小时的时间是足够做完所有题目的2当你觉得程序块已经很完整,没有什么要填的时候,应考虑是否是有变量没初始化,这时要检查一下有哪些变量是没有赋初值就使用了从历次考试看,几乎每年都有3当你觉得某个空怎么填也不合适的时候,应该考虑这里是否填函数递归的调用4做指针链表时,心一定要静、细,把各指针代表的含义明确,最好画图来明确,以便于理解5做下午的试题往往有做不下去的情况,这时仔细重看题目条件和题目所给出的注释也许会有所感悟6不要过分沉迷于题中某一段,要全局看问题,整体把握程序员考试的代码段结构一般都是非常合理的,每一小段的功能都是分得很清楚,如果有些空填不出来,可以改看另一小段,它们之间的联系一般不会太紧密,跳过那些做不出来的,改做那些可以做出来的不能在一个题中得到满分,那么得到六成的分也就不错了7程序题目中所提到的特殊情况或分支是考试的重点看题时,一定要注意题中有哪些特殊情况,然后一一对应到程序中去8填完空时,检查一下下标,是否真的填对了,或缺一多一,下标是一个重点特别是下标中有变量的,要注意是否有些情况漏掉或是多填了9做完题检查时,应重新审题,而不是只检查答案,程序与题目是否相对应做完后模拟运行一次,看是否有遗漏的地方还有就是要把近两三年的试题都要看一遍、做一遍,这样比较容易把握以后的出题方向
1.2下午题历年试题及考点分析程序员考试科目2——程序设计,也就是我们常说的下午题,是以笔试填空的方式进行考试,1996年以前是考C语言和CASL汇编语言,1996年到1998年考C语言和FORTRAN语言,1999年到2004年都只考C语言,2004年出了新考纲后就扩充到必选C可选C++、Java、VB中的一种语言,并且一年考试两次,让考生有更多的机会参加这个考试1999年以后,程序员考纲上所涉及的面比较广,但实际上所考的内容主要是C语言基础上的数据结构,在2004年新考纲之前,虽然有提及C++和面向对象的设计方法,但实际上考试的内容全部是C语言,新考纲出来之后,试题的题型结构有所改变,可以选做部分试题,加入了面向对象的程序设计,使用的语言也从单一的C语言扩充到C++、Java、VB让考生有更多的选择机会,但同时也增加了一定的难度,使得考生必须在掌握C语言之外还要掌握一门面向对象的程序设计语言当然,这也是程序设计语言的一个必然的发展方向下面从2000年到2006年上半年所有试题所涉及的考点进行列表分析2000年至2006年试题2000年下午试题一共有4道题,25个空,所涉及的算法、知识点及数据存储结构如表
1.2所示表
1.22000年下午试题考点分析2001年下午试题一共5道题,25个空,所涉及的算法、知识点及数据存储结构如表表所不2002年下午试题一共5道题,25个空,所涉及的算法、知识点及数据存储结构如表
1.4所示2003年下午试题一共5道题,25个空,所涉及的算法、知识点及数据存储结构如表
1.5所示表L32001年下午试题考点分析表
1.42002年下午试题考点分析表
1.52003年下午试题考点分析2004年上半年下午试题一共9道题,可以选做其中的25个空(或问题),所涉及的算法、知识点及数据存储结构如表L6所示表L62004年上半年下午试题考点分析续表2004年下半年下午试题一共8道题,可以选做其中的25个空(或问题),所涉及的算法、知识点及数据存储结构如表L7所示表L72004年下半年下午试题考点分析2005年上半年下午试题一共8道题,可以选做其中的25个空(或问题),所涉及的算法、知识点及数据存储结构如表
1.8所示表
1.82005年上半年下午试题考点分析2005年下半年下午试题一共8道题,可以选做其中的25个空(或问题),所涉及的算法、知识点及数据存储结构如表
1.9所示2006年上半年下午试题一共8道题,可以选做其中的25个空(或问题),所涉及的算法、知识点及数据存储结构如表
1.10所示表
1.92005年下半年下午试题考点分析表
1.102006年上半年下午试题考点分析命题方向的变化及分析对上面的列表进行分析,我们可以看出一些程序员考试命题方向的变化,现从几方面列举如下.语言的选择从1996年以前的C语言和CASL汇编语言,到C语言和FORTRAN语言,再到只考C语言,以及到现在的在C语言和C++、Java、VB中进行选择,可见软考始终紧跟着社会的需要,也紧跟着编程语言的发展方向,唯有发展与改变才能让软考充满活力这也许是软考越来越受到社会认同的一个重要原因!下面我们再来看一个表,分析一下所考语言在选择上有什么变化,如表
1.11所示从表
1.11中可以得到一个信息C语言始终是考试的最为突出的重点例如,在2004年上半年改了考纲后的第一次考试中,最多可以选择20个VB空,而只选5个C语言的空,但在接下来的下半年考试中,这个情况就马上改了,最多只可选10个VB空,最少要做15个C语言空,而且一直延用至今在考纲所增加的几种语言当中,VisualBasic是可表
1.11程序语言题量变化表(单位空)供选题较多的一种,它是Microsoft公司开发的基于BASIC的可视化程序设计语言,它在其编程系统中采用了面向对象、事件驱动的编程机制,用一种巧妙的方法把Windows编程的复杂性封装起来,提供了一种所见即所得的可视化程序设计方法,为广大的计算机专业学习人员、编程爱好者的程序编写带来了极大的方便所以,本书在最后一章为考生讲解VisualBasic程序设计,希望可以为读者冲刺程序员考试提供一定的帮助.知识点的选择从2000年到2006年试题所考查的知识点上来看,C语言及数据结构的主要考查的知识点没有太大的变化,线性表、链表、字符串、二叉树、排序和查找等几大主要知识点在不断的轮着出现所以,本书将对这些主要知识点在解题中的运用进行重点讲解和分析,但关于这些知识点本身的基本概念则只是略提,读者可通过查阅数据结构的相关教材去复习那些基础知识.题型的选择从软考的题型来看,2002年以前的考试基本上是以传统题型为主,多数考经典算法,只对各种常用算法熟练掌握即可通过但从2002年以后,题型逐渐开始变化如2002年的下午第一题就不再以传统的方式出题,而是以算法分析的方式,或是说程序文档化的方式进行考查,要求能够读懂对问题的分析这是一个很大的突破,要求应试者不只是会做一些传统的题目,还要学会分析一个问题,从而得出解决问题的算法到2003年的下午第一题,在2002年的基础上,题型进一步改成以伪代码的形式到2004年上半年新考纲后下午第一题变为用N-S图形式描述算法的题型,由于流程图、N-S图都是用来描述算法的非常科学而且经典的方法,所以从2004年上半年出现这种题型后,一直到2006年上半年的考试,每次的下午题第一题都是这种题型,相信以后这种题型还会继续出现其他一些题目的题型上也有一定的变化,以前传统的各种较为经典的算法出现得越来越少,取而代之的是各种比较新的应用型的题目,或者是把各种经典的算法集中到一起出一些比较综合性质的题目特别是一些处理比较现实问题的题目,通常都是以比较大篇幅的题目出现这类型的题目所用到的算法不会难,主要是要求考生比较快就可以理解题目的意思,从而把握出题者的思路,快速地做出解答当然,只要我们把基础的算法都较为熟练地掌握后,题型上的变化并不会给我们解题带来多大的影响
1.3个人经验及应试建议作者辅导经验C语言是下午题的难点,如果C语言学得比较好,在上午题的基础知识上下一些功夫再学一种面向对象的编程,如VB、C++或Java我个人觉得VB比较简单本科大
二、大三的学生用一到两个月的课余时间来作准备,一般来说通过率是比较高的专科生相对来说时间要长一点,认真的话,半年也差不多了当然,这不是绝对的,我遇到过复习两个星期就通过的学生,因为他的C语言和数据结构学得很好笔者有过多年的程序员辅导经验,发现在程序员的应试准备过程中,最大难度的还是C语言及数据结构,如果用两个月的时间来准备,那么要用一个半月的时间来复习C语言和数据结构,另外在考试前的半个月,认真地复习上午试题的基础部分以这种时间安排方式,相对来说,比较容易通过程序员考试除本书外,个人建议参考资料两本一本是清华大学出版社出版的《程序员教程》,此教程比较详细地讲解了上午题的内容另一本是清华大学出版社出版的《C语言程序设计(第二版)》,谭浩强著,此书对C语言的讲解可谓是经典之作学习C语言的时候,要多进行练习,这个是基础,把基础打好后,再进入到数据结构的学习学习数据结构的最好办法是认真地看算法,仔细分析算法的运行过程,体会各种数据结构的定义、用途及其基本操作对各种不同的数据结构的常规算法要非常熟练,如树、链表、栈等结构的基本操作是要熟记下来的应试建议程序员解题速度是练出来的,熟能生巧,只有通过大量的习题的调试或解答才能够达到比较快的速度和以不变应万变的程度不要认为大量练习只是简单的题海战术,在任何学习过程中,只有经过大量的练习,才能达到从量变到质变的过程学习从来都是没有捷径可寻的特别要锻炼的是读别人程序的能力,能够从程序中比较快速地读出程序编写者的意图也就成功了一半一个比较好的建议就是,在看本书提供的一些算法的时候,先不要看提示,只看代码,练习从代码就可以看出整个题目的意思刚开始会比较难,但习惯一段时间后,对将来做程序员的试题有很大的帮助本书的最大特点是编排了大量的练习题,特别是程序题可以这样说,只要把本书所列的程序做熟并理解,下午题的C语言部分就不用担心了从最近两年的试题变化来看,C语言试题呈现出偏重基础题,偏重于应用,而难度不会太大做完题之后要检查,如果变量多的话,列一个变量表,模拟检查运行情况,看变量的变化,用这种方法可以比较准确地查出程序是否出错解题方法我们在做下午题的时候,可以大概依照如下的思路来做解答.理解题意主要是根据问题的描述来确定问题的已知条件,并了解算法程序要达到的目的通俗地讲,就是要知道问题的输入和输出.确定算法每个题目在前面都有描述,通过对描述的分析,要确定题目应该属于哪一类数据结构以及相应的算法有些题目可能不属于任何数据结构,则它可能与某类算法有关;但也有一些算法纯粹是数学方法题目前面描述是非常重要的,对试题的解答起着重要的指导作用在描述中同时要理解算法过程在分析算法时,可以以某个具体实例来试验在有些时候,即使看不懂整道程序题,还是可以根据提示看懂其中的部分代码段,也可以完成一定的空格的填写.理解程序分析程序结构,如果有很多子函数,首先弄清楚各函数之间的关系和各函数的作用;如果程序较长,则应该根据算法过程,把每个程序段与算法的每个过程对应起来,确定相应的程序段功能在程序中,已经定义了某些变量,则在理解程序时,首先必须理解这些变量的含义.根据C语言的语法填空示例2004年上半年程序员下午试题试题六函数DelAInsBLinkedListLaLinkedListLbintkey1intkey2intlen的功能是将线性表A中关键码为keyl的结点开始的len个结点,按原顺序移至线性表B中关键码为key2的结点之前,若移动成功,则返回0;否则返回-1线性表的存储结构为带头结点的单链表,La为表A的头指针,Lb为表B的头指针单链表结点的类型定义为typedefstructnodeintkey;structnode*next;}*LinkedList;[函数]1intDelllnsBLinkedLiStLaLinkedListLbintkeylintkey2intlenreturn0;解
(1)理解题目已知条件为两个链表La和Lb最后得到的结果也是两个链表,只不过是La中的部分结点移动到Lb中,因此,本问题主要是解决是怎么移动的
(2)算法在题目中没有给出结点移动的算法,我们先可以结合实例自己设计一个算法,然后看是不是与程序中的算法一致如果不是,则再找算法在自己设计算法的时候,最好的办法是先看一看题目给出的算法提示,在给出的代码中,总是有一些蛛丝马迹可以让我们找到突破口的,这些地方一般都会给出题目所用算法的暗示如图
1.1所示,如果我们找到实线的指针,它们分别指向La中的keyl结点(p指针)、keyl的前一个结点(q指针)、Aj(从keyl结点开始的第len个结点,r指针)和Lb中的key2的前一个结点(s指针),则根据链表操作,用图中的虚线指针连接,我们就可以把La中从keyl结点开始的len个结点全部移动到Lb链表中因此算法大致如下所示
①找至IJp和q指针2000年2001年2002年2003年2004年(上)2004年(下)2005年(上)2005年(下)2006年(上)数据结构10106888799信息技术基础004965645操作系统555555655程序设计语言558556676软件工程559646746面向对象093333010数据库原理10107556756多媒体553333433计算机硬件基础202015151615131615网络原理555555466其他000053564专业英语101010101010101010合计758475747575757675题号算法知识点存储结构链表合并线性表指针判断数组元素递增数组、递归数组长整数格式化整数数组求组合整数数组―■中缀表达式转后缀栈指针表达式计算栈数组四贪心算法数组数组题号算法知识点存储结构字符串比较字符串指针计算鞍点矩阵数组链表逆置线性表指针―,文件的合并与恢复文件操作文件四双向循环链表操作线性表指针五整数的分解数组、递归数组题号算法知识点存储结构显示器编程多媒体、移位及逻辑运算数组字符串连接字符串指针求数组中最大元素下标数组数组―•直接插入排序排序数组数组逆置数组、递归数组四素数筛选素数数组/L二叉排序树结点插入二叉排序树、查找、递归指针题号算法知识点存储结构查找折半查找、流程图数组查找字符串指针查找五叉排序树、非递归指针--排序线性表、链表操作指针四元素移动数组数组五栈和队列的操作栈和队列指针题号算法知识点存储结构快速排序快速排序、N-S图、递归数组任选一题*判断回文字符串指针字符串处理字符串数组—•VB基础VB基础知识任选一题四进制转换数组、栈操作数组五VB组件应用下拉列表框、文本框题号算法知识点存储结构任选一题六链表操作线性表指针七VB窗口操作时间组件任选一题八所得税计算数组数组九VB个人税计算选择结构程序设计题号算法知识点存储结构二进制求补流程图数组排序交换排序及其效率数组—*兀素移动指针运算、链表操作链表任选一题四统计竞赛结果结构体、选择排序结构体、数组五VB(程序内容和第四题C语言一样)常用控件、基本函数任选一题六C++基础继承、抽象类、动态绑定七VB数据库应用文本框、命令按钮、数据控件八Java基础继承、抽象类、动态绑定题号算法知识点存储结构奇偶校验异或运算、流程图最大公约数最大公约数字符串处理字符串指针—二叉树结点的查找与删除二叉树二叉树任选一题四子方阵查找二维数组数组五VB基础组件列表框的常用属性任选一题六Java应用程序JavaApplet类七VB基础组件VB内部组件DriveListBox、DirListBoxFileListBox八C++基础枚举类型题号算法知识点存储结构字符串处理字符串处理、流程图数组线性表查找线性表数组—二分法查找线性表、二分查找数组任选一题四VB基础标签、文本框、命令按钮五二叉排序树创建二叉排序树树任选一题六C++基础类的定义、查错七VB基础时钟组件及图形编程八Java类基础Stock类和JavaMain类题号算法知识点存储结构*矩阵转置矩阵、流程图矩阵普通数据处理循环—•栈操作栈的操作栈任选一题四数据处理结构体数组处理结构体数组五VB基本控件基本控件任选一题六C++基础类的定义、查错七VB基础时钟组件及图形编程八Java类基础类、查错时间CVBC++Java最多可选C语言数量最多可选VB数量最多可选Java数量最多可选C++数量2000年25000250002001年25000250002002年25000250002003年25000250002004年上半年2520002520002004年下半年2010552010552005年上半年2010552010552005年下半年2010552010552006年上半年201055201055。
个人认证
优秀文档
获得点赞 0