[计算机类试卷]2008年下半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷及答案与解析.doc
《[计算机类试卷]2008年下半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]2008年下半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷及答案与解析.doc(14页珍藏版)》请在麦多课文档分享上搜索。
1、2008年下半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷及答案与解析 1 阅读以下说明和流程图,填补流程图中的空缺 (1) (5),将解答填入对应栏内。【说明】 下面流程图的功能是:在已知字符串 A中查找特定字符串 B,如果存在,则输出 B串首字符在 A串中的位置,否则输出 -1。设串 A由 n个字符 A(0),A(1), , A(n-1)组成,串 B由 m个字符 B(0), B(1), , B(m-1)组成,其中 nm 0。在串 A中查找串 B的基本算法如下:从串 A的首字符 A(0)开始,取子串A(0)A(1)A(m -1)与串 B比较;若不同,则再取子串 A(1)A(2)A
2、(m) 与串 B比较,依次类推。 例如,字符串 “CABBRFFD”中存在字符子串 “BRF”(输出 3),不存在字符子串 “RFD”(输出 -1)。 在流程图中, i用于访问串 A中的字符 (i=0, 1, ,n-1), j用于访问串 B中的字符 (j=0, 1, , m-1)。在比较 A(i)A(i/1)A(i+m -1)与B(0)B(1)B(m -1)时,需要对 A(i)与 B(0)、 A(i+1)与 B(1)、 、 A(i+j)与 B(j)等逐对字符进行比较。若发现不同,则需要取下一个子串进 行比较,依此类推。【流程图】 2 阅读以下说明和 C程序代码,将应填入 (n)处的字句写在对应
3、栏内。 【说明】 下面 C程序代码的功能是:对于输入的一个正整数 n(100n 1000),先判断其是否是回文数 (正读反读都一样的数 )。若不是,则将 n与其反序数相加,再判断得到的和数是否为回文数,若还不是,再将该和数与其反序数相加并进行判断,依此类推,直到得到一个回文数为止。例如, 278不是回文数,其反序数为 872,相加后得到的 1150还不是回文数,再将 1150与其反序数 511相加,得到的 1661是回文数 。 函数 int isPalm(long m)的功能是:将正整数 m的各位数字取出存入数组中,然后判断其是否为回文数。若 m是回文数则返回 1,否则返回 0。 【 C程序代
4、码】 #include stdio.h #include stdlib.h int isPalm(long m) /*判断 m是否为回文数 */ int i = 0, k = 0; char str32; while (m 0) /*从个位数开始逐个取出 m的各位数字并存入字符数组 str*/ strk+ =(1)+ 0; m = m / 10; for(i = 0; i k/2; i+) /*判断 str中的 k个数字字符序列是否是回文 */ if ( stri != str(2) ) return 0; return 1; int main ( ) long n, a, t; printf
5、(“input a positive integer:“); scanf(“%ld“, if (n 100 | n =1000) return -1 ; while(3) /*n不是回文数时执行循环 */ printf(“%ld- “, n); for(a = 0, t = n; t 0; ) /*计算 n的反序数并存入 a*/ a =(4)*10 + t % 10; t = t / 10; /*end of for*/ n =(5); /*与反序数求和 */ /*end of while*/ printf (“%idn“,n); system(“pause“); return 0; 3 阅读
6、以下说明和 C函数,将应填入 (n)处的字句写在对应栏内。【说明】 已知某二叉树的非叶子结点都有两个孩子结点,现将该二叉树存储在结构数组 Ht中。结点结构及数组 Ht的定义如下: #define MAXLEAFNUM 30 struct node char ch; /*当前结点表示的字符,对于非叶子结点,此域 不用 */ char *pstr; /*当前结点的编码指针,非叶子结点不用 */ int parent; /*当前结点的父结点,为 0时表示无父结点 */ int lchild,rchild; /*当前结点的左、右孩子结点,为 0时表示无对应的孩子结点 */ ; struct node
7、Ht2*MAXLEAFNUM; /*数组元素 Ht0不用 */ 该二叉树的 n个叶子结点存储在下标为 1 n的 Ht数组元素中。例如,某二叉树如果其存储结构如下图所示,其中,与叶子结点 a对应的数组元素下标为 1, a的父结点存储在 Ht5,表示为 Ht1.parent=5。 Ht7.parent=0表示 7号结点是树根, Ht7.child=3、Ht7.rchild=6分别表示 7号结点的左孩子是 3号结点、右孩子是 6号结点。 如果用 0或 1分别标识二叉树的左分支和右分支 (如上图所示 ),从根结点开始到叶子结点为止,按所经过分支的次序将相应标识依次排列,可得到一个 0、 1序列,称之为
8、对应叶子结点的编码。例如,上图中 a, b, c, d的编码分别是 100, 101,0, 11。 函数 LeafCode(Ht,n)的功能是:求解存储在 Ht中的二叉树中所 有叶子结点 (n个 )的编码,叶子结点存储在 Ht1 Htn中,求出的编码存储区由对应的数组元素 pstr域指示。 函数 LeafCode从叶子到根逆向求叶子结点的编码。例如,对上图中叶子结点 a求编码的过程如下图所示。 typedef enum Status ERROR,OK Status;【 C函数】 Status LeafCode(struct node Ht, int n)int pc, pf; /*pc用于指出
9、树中的结点, pf则指出 pc所对应结点的父结点 */int i,start;char tstr31 = 0; /*临时存储给定叶子结点的编码,从高下标开始存入 */ for(i = 1;(1); i+) /*对所有叶子结点求编码, i表示叶结点在 HT数组中的下标 */ start = 29; pc = i; pf = Hti.parent; while (pf !=(2) /*没有到达树根时,继续求编码*/ if (3).lchild = pc ) /*pc所表示的结点是其父结点的左孩子 */ tstr-start = 0; elsetstr-start = 1;pc =(4); pf =
10、 Htpf.parent; /*pc和 pf分别向根方向回退一层 */ /* end of while */ Hti.pstr = (char *) malloc(31-start); if (!Hti.pstr) return ERROR; strcpy(Hti.pstr,(5); /* end of for */ return OK;/* and of LeafCode */ 4 阅读以下说明和 C函数代码,回答问题并将解答写在对应栏内。【说 明】 著名的菲波那契数列定义式为 f1=1 f2=1 fn=fn-1+fn-2 (n=3, 4, ) 因此,从第 1项开始的该数列为 1, 1, 2
11、, 3, 5, 8, 13, 21, 。函数 fibl和 fib2分别用递归方式和迭代方式求解菲波那契数列的第 n项 (调用 fib1、 fib2时可确保参数 n获得一个正整数 )。【 C函数代码】 4 函数 fib1和 fib2存在错误,只需分别修改其中的一行代码即可改正错误。 (1)函数 fib1不能通过编译,请写出 fib1中错误所在行修改正确后的完整代码。 (2)函数 fib2在 n2时不能获得正确结果,请写出 fib2中错误所在行修改正确后的完整代码。 5 将函数 fib1和 fib2改正后进行测试,发现前 46项都正确,而第 47项的值是一个负数,请说明原因。 6 函数 fib1、
12、 fib2求得菲波那契数列第 n项 (n 40)的速度并不相同,请指出速度慢的函数名,并简要说明原因。 7 阅读以下应用说明、属性设置以及 Visual Basic程序代码,将解答写在对应栏内。 【应用说明】 本应用运行时,由用户输入一个正整数 n后自动产生 n个正整数,然后按照用户的指定要求对该组数进行处理。该应 用的运行界面如下图所示: 1窗体中有两个文本框。 (txtSrc, txtObj)、两个标签 (lblSrc, lblObj)、三个命令按钮(cmdGendat, cmdProc, cmdQuit)和一个弹出式菜单 (procMenu,初始时不可见 )。 2文本框 txtSrc(由
13、标签 lblSrc提示 )用于显示产生的数据,文本框 txtObj(由标签lblObj提示 )用于显示处理结果,要求每行显示一个整数。 3程序启动时,命令按钮 cmdProc(运算要求 )不可用。单击命令按钮 cmdGendat(产生数据 )后,提示用户输入一个 n的值并生成 n个正整数存入数组元素 a(1) a(n),然后将数据逐行显示在txtSrc中,并设置命令按钮 cmdProc可用。 4单击命令按钮 cmdProc(运算要求 )后弹出菜单。选择菜单项并单击后,进行相应处理并将结果显示在 txtObj中,同时将 lblObj的标题改为该菜单项表示的处理命令。 弹出式菜单 “运算要求 ”的
14、结构如下表所示:一个整数序列的中位数是指对该序列进行非递减 (增 )排列后最中间位置上的元素。若序列长度为偶数,则取中间两个元素的平均值为其中位数。【属性设置】 为实现单击命令按钮 cmdProc后弹出 “运算要求 ”菜单 (procMenu),设计时需将 procMenu的 (1)属性设置成 false。 供 (1)选择的属性: Default Enabled ScaleMode Style Visible【 Visual Basic程序代码】 Dim a() AS Integer, n As IntegerPrivate Sub Form_Load() txtSrc.Text = “: t
15、xtObj.Text = “: (2) = FalseEnd SubPrivate Sub cmdGendat_Click () 生成正整数序列并存入数组 a On Error GoTo Error handler n = InputBox$ (“请输入数组元素个数: “, “输入序列长度 “) If (n 1) Then MsgBox “输入数据错误 !“, vbOKOnly, “提示: “ GoTo Error handler: End If ReDim a(n) As Integer s = “ For i = 1 To n 将生成的正整数存入 a(1) a(n)中 a(i) = Int
16、(Rnd * 10000) : s = s typedef vector (2) INTVECTOR; const int ARRAY_SIZE = 6; void ShowVector (INTVECTOR int main() INTVECTOR theVector; / 初始化 theVector, 将 theVector的元素依次设置为 0至 5 for (int cEachItem = 0; cEachItem ARRAY_SIZE; cEachItem+ theVector.push_back(3); ShowVector(theVector); / 依次输出theVector中的
17、元素 theVector.erase (theVector.begin () + 3; ShowVector(theVector); void ShowVector (INTVECTOR return; INTVECTOR:iterator (4); for (theIterator=theVector.begin(); theIterator !=theVector.end(); theIterator+) cout *theIterator; if (theIterator != theVector.end()-1) cout “, “; cout end1; 该程序运行后的输出结果为:
18、0, 1, 2, 3, 4, 5 (5) 9 阅读以下说明和 Java代码,将应填入 (n)处的字句写在对应栏内。 【说明】 java.util库中提供了 Vector模板类,可作为动态数组使用,并可容纳任意数据类型。该类的部分方法说明如下表所示:【 Java代码】 import (1); public class JavaMain static private final int (2)= 6; public static void main(String args) Vector Integer theVector = new Vector (3) (); / 初始化 theVector,
19、 将 theVector的元素设置为 0至 5 for (int cEachItem = 0; cEachItem ARRAY_SIZE; cEachItem+) theVector.add(4); showVector(theVector); / 依次输出 theVector中的元素 theVector.removeElementAt(3); showVector(theVector); public static void showVector(Vector Integer theVector if (theVector.isEmpty() System.out.println(“theV
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 2008 年下 半年 软件 水平 考试 初级 程序员 下午 应用技术 试题 答案 解析 DOC

链接地址:http://www.mydoc123.com/p-492759.html