分类: LINUX
2006-04-09 21:08:03
程序员考试科目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年到2005年上半年所有试题所涉及的考点进行列表分析
1.1 历年试题及考点分析
1.1.1 2000至2005年试题
2000年下午试题一共有4道题,25个空,所涉及的算法、知识点及数据存储结构如表1.1所示。
表1.1 2000年下午试题考点分析
题号 |
算法 |
知识点 |
存储结构 |
一 |
链表合并 |
线性表 |
指针 |
判断数组元素递增 |
数组、递归 |
数组 | |
二 |
长整数格式化 |
整数 |
数组 |
求组合 |
整数 |
数组 | |
三 |
中缀表达式转后缀 |
栈 |
指针 |
表达式计算 |
栈 |
| |
四 |
贪心算法 |
数组 |
数组 |
2001年下午试题一共5道题,25个空,所涉及的算法、知识点及数据存储结构如表1.2所示。
表1.2 2001年下午试题考点分析
题号 |
算法 |
知识点 |
存储结构 |
一 |
字符串比较 |
字符串 |
指针 |
计算鞍点 |
矩阵 |
数组 | |
二 |
链表逆置 |
线性表 |
指针 |
三 |
文件的合并与恢复 |
文件操作 |
文件 |
四 |
双向循环链表操作 |
线性表 |
指针 |
五 |
整数的分解 |
数组、递归 |
数组 |
2002年下午试题一共5道题,25个空,所涉及的算法、知识点及数据存储结构如表1.3所示。
表1.3 2002年下午试题考点分析
题号 |
算法 |
知识点 |
存储结构 |
一 |
显示器编程 |
多媒体、移位及逻辑运算 |
数组 |
二 |
字符串连接 |
字符串 |
指针 |
求数组中最大元素下标 |
数组 |
数组 | |
三 |
直接插入排序 |
排序 |
数组 |
数组逆置 |
数组、递归 |
数组 | |
四 |
素数筛选 |
素数 |
数组 |
五 |
二叉排序树结点插入 |
二叉排序树、查找、递归 |
指针 |
2003年下午试题一共5道题,25个空,所涉及的算法、知识点及数据存储结构如表1.4所示。
表1.4 2003年下午试题考点分析
题号 |
算法 |
知识点 |
存储结构 |
一 |
查找 |
折半查找、流程图 |
数组 |
二 |
查找 |
字符串 |
指针 |
查找 |
五叉排序树、非递归 |
指针 | |
三 |
排序 |
线性表、链表操作 |
指针 |
四 |
元素移动 |
数组 |
数组 |
五 |
栈和队列的操作 |
栈和队列 |
指针 |
2004年上半年下午试题一共9道题,可以选做其中的25个空(或问题),所涉及的算法、知识点及数据存储结构如表1.5所示。
表1.5 2004年上半年下午试题考点分析
题号 |
算法 |
知识点 |
存储结构 | |
一 |
快速排序 |
快速排序、N-S图、递归 |
数组 | |
任选一题 |
二 |
判断回文 |
字符串 |
指针 |
字符串处理 |
字符串 |
数组 | ||
三 |
VB基础 |
VB基础知识 |
| |
任选一题 |
四 |
进制转换 |
数组、栈操作 |
数组 |
五 |
VB组件应用 |
下拉列表框、文本框 |
| |
任选一题 |
六 |
链表操作 |
线性表 |
指针 |
七 |
VB窗口操作 |
时间组件 |
| |
任选一题 |
八 |
所得税计算 |
数组 |
数组 |
九 |
VB个人税计算 |
选择结构程序设计 |
|
2004年下半年下午试题一共8道题,可以选做其中的25个空(或问题),所涉及的算法、知识点及数据存储结构如表1.6所示。
表1.6 2004年下半年下午试题考点分析
题号 |
算法 |
知识点 |
存储结构 | |
一 |
二进制求补 |
流程图 |
数组 | |
二 |
排序 |
交换排序及其效率 |
数组 | |
三 |
元素移动 |
指针运算、链表操作 |
链表 | |
任选一题 |
四 |
统计竞赛结果 |
结构体、选择排序 |
结构体、数组 |
五 |
VB(程序内容和第四题C语言一样) |
常用控件、基本函数 |
| |
任选一题 |
六 |
C++基础 |
继承、抽象类、动态绑定 |
|
七 |
VB数据库应用 |
文本框、命令按钮、数据控件 |
| |
八 |
Java基础 |
继承、抽象类、动态绑定 |
|
2005年上半年下午试题一共8道题,可以选做其中的25个空(或问题),所涉及的算法、知识点及数据存储结构如表1.7所示。
表1.7 2005年上半年下午试题考点分析
题号 |
算法 |
知识点 |
存储结构 | |
一 |
奇偶校验 |
异或运算、流程图 |
| |
二 |
最大公约数 |
最大公约数 |
| |
字符串处理 |
字符串 |
指针 | ||
三 |
二叉树节点的查找与删除 |
二叉树 |
二叉树 | |
任选一题 |
四 |
子方阵查找 |
二维数组 |
数组 |
五 |
VB基础组件 |
列表框的常用属性 |
| |
任选一题 |
六 |
Java应用程序 |
Java Applet类 |
|
七 |
VB基础组件 |
VB内部组件DriveListBox、DirListBox、FileListBox |
| |
八 |
C++基础 |
枚举类型 |
|
2005年下半年下午试题一共8道题,可以选做其中的25个空(或问题),所涉及的算法、知识点及数据存储结构如表1.8所示。
表1.8 2005年下半年下午试题考点分析
题号 |
算法 |
知识点 |
存储结构 | |
一 |
字符串处理 |
字符串处理、流程图 |
数组 | |
二 |
线性表查找 |
线性表 |
数组 | |
三 |
二分法查找 |
线性表、二分查找 |
数组 | |
任选一题 |
四 |
VB基础 |
标签、文本框、命令按钮 |
|
五 |
二叉排序树 |
创建二叉排序树 |
树 | |
任选一题 |
六 |
C++基础 |
类的定义、查错 |
|
七 |
VB基础 |
时钟组件及图形编程 |
| |
八 |
Java类基础 |
Stock类和JavaMain类 |
|
1.1.2 命题方向的变化及分析
对上面的列表进行分析,我们可以看出一些程序员考试命题方向的变化,现从几方面列举如下。
1. 语言的选择上
从96年以前的C语言和CASL汇编语言,到C语言和FORTRAN语言,再到只考C语言,以及到现在的在C语言和C++、Java、VB中进行选择,可见软考始终紧跟着社会的需要,也紧跟着编程语言的发展方向,唯有发展与改变才能让软考充满活力。这也许是软考越来越受到社会认同的一个重要原因吧!
下面我们再来看一个表,分析一下所考语言的选择上有什么变化,如表1.10所示。
表1.10 程序语言题量变化表(单位:空)
时间 |
C |
VB |
C++ |
Java |
最多可选C语言数量 |
最多可选VB数量 |
最多可选Java数量 |
最多可选C++数量 |
2000年 |
25 |
0 |
0 |
0 |
25 |
0 |
0 |
0 |
2001年 |
25 |
0 |
0 |
0 |
25 |
0 |
0 |
0 |
2002年 |
25 |
0 |
0 |
0 |
25 |
0 |
0 |
0 |
2003年 |
25 |
0 |
0 |
0 |
25 |
0 |
0 |
0 |
2004年上半年 |
25 |
20 |
0 |
0 |
25 |
20 |
0 |
0 |
2004年下半年 |
20 |
10 |
5 |
5 |
20 |
10 |
5 |
5 |
2005年上半年 |
20 |
10 |
5 |
5 |
20 |
10 |
5 |
5 |
2005年下半年 |
20 |
10 |
5 |
5 |
20 |
10 |
5 |
5 |
从上面的表里面我们可以得到一个信息:C语言始终是考试的最重点,在2004年上半年改了考纲后的第一次考试中,最多可以选择20个VB空,而只选5个C语言的空,但在接下来的下半年考试中,这个情况就马上改了,最多只可选10个VB空,最少要做15个C语言空,而且一直延用至今。在考纲所增加的几种语言当中,Java语言具有面向对象、平台无关性、安全、稳定和多线程等优良特性,是目前软件设计中极为强大的编程语言。Java语言不仅可以用来开发大型的应用程序,而且特别适合Internet的应用开发。尤其是JavaSwing推出之后,不仅使Java的功能更加强大,而且使Java具备了“处处可用”的特点,Java已成为网络时代最重要的语言之一。出于以上的原因,本书将以绝大多数的篇幅来讲解C语言及数据结构,并且在最后一章讲解Java语言。希望可以为读者冲刺程序员考试提供一定的帮助。
2.知识点的选择上
从2000年到2005年试题所考查的知识点上来看,C语言及数据结构的主要考查的知识点上没有太大的变化,线性表、链表、字符串、二叉树、排序和查找等几大主要知识点在不断的轮着出现。所以,本书将对这些主要知识点在解题中的运用进行重点讲解和分析,但关于这些知识点本身的基本概念则只略提,读者可通过查阅数据结构的相关教材去复习那些基础知识。
3.题型的选择上
从软考的题型来看,2002年以前的考试基本上是以传统题型为主,2002年的下午第一题就不再以传统的方式出题,而是以算法分析的方式,或是说程序文档化的方式进行考查,要求能够读懂对问题的分析。这是一个很大的突破,要求应试者不只是会做一些传统的题目,还要学会分析一个问题,从而得出解决问题的算法。到2003年的下午第一题,在02年的基础上,题型进一步改成以伪代码的形式。到2004年上半年新考纲后,下午第一题变为用N-S盒图形式描述算法的题型,由于流程图、N-S图都是用来描述算法的非常科学而且经典的方法,所以从2004年上半年出现这种题型后,一直到2005年下半年的考试,每次的下午题第一题都是这种题型,相信以后这种题型还会继续出现。
其它的一些题目的题型上也有一定的变化,以前传统的各种较为经典的算法越来越少出现,取而代之的是各种比较新的应用型的题目,或者是把各种经典的算法集中到一起出一些比较综合性质的题目。
当然,只要我们把基础的算法都较为熟练的掌握后,题型上的变化并不会给我们解题带来多大的影响。
1.2 个人经验总结及应试建议
1.2.1 作者对程序员考试下午题的见解