2003年程序员下午试题.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2003年程序员下午试题.doc

 HYPERLINK  收集整理 2003年程序员下午试题 试题一 阅读下列算法说明和算法,将应填入__(n)__处的字句写在答卷的对应栏内。 [算法说明] 某英汉词典文件包含N个记录(N1),每个记录有两个字段:一个是英文单词,另一个是相应的汉语解释。各个记录按英文单词的词典顺序排列,各英文单词并不重复。 本算法用于维护、更新该英汉词典文件。维护、更新的方法是:首先输入一个英文单词及其汉语解释,然后在该词典中查找输入的英文单词,若找到,则用输入的汉语解释更新原有的解释;若找不到,则需要将输入的英文单词及其汉语解释插入到该词典的适当位置,使各记录仍按英文单词的词典顺序排列。 [算法] 第一步 读入英汉词典文件,并将读入的N个英文单词依次存放在字符串数组ENG中,将相应的汉语解释依次存放在字符串数组CN中。数组元素CN(i)给出了数组元素ENG(i)的解释。 第二步 输入英文单词及其汉语解释,将它们分别存放在字符串变量E和C中。若E为空串或都是空格,则转向第四步。 第三步 根据变量E的值,用二分法在数组ENG中查找。具体步骤如下: (1)1 --L,N --H (2)INT((L+H)/2) --K (3)若E = ENG(K),则C -- CN(K),转向第二步 若E ENG(K),则K-1 --__(1)__; 若E ENG(K),则K+1 --__(2)__ (4)若HL则 对I = N,L,-1(始值,终值,增量)循环执行: ENG(I) -- ENG(I+1) CN(I) --CN(I+1) 然后,将E和C分别存入__(3)__和__(4)__,N+1 -- N 最后转向第二步 否则,转向___(5)___ 第四步 将数组ENG和CN输出,形成新的英汉词典文件,算法结束. 试题二 阅读下列函数说明和C代码,将应填入__(n)___处的字句写在答题纸的对应栏内。 [函数2.1说明] 函数char *strrchr(char*s,char ch)的功能是在字符串s中寻找字符ch若ch出现在字符串s中,则返回最后一次出现时的位置,否则返回NULL。 [函数2.1] char *strrchr(char *s,char ch) { char*p; p = __(1)__; `/*p指向字符串s的结束标志*/ while( --p = s) if(__(2)__) return p; return NULL; } [函数2.2说明] 函数BTREE *SortTreeSearch(BTREE *tree,int d)采用非递归方法,在二叉排序 树(二叉查找树)中查找键值为d的结点。若找到,则返回键值所在结点的指针,否则 返回NULL。 二叉查找树的结点类型为: typedef struct node{ int data; /*结点的键值*/ struct node *left; struct node *right; }BTREE; [函数2.2] BTREE *SortTreeSearch(BTREE *tree,int d) { BTREE *ptr = tree; while(ptr != NULL d != ptr-data){ if(d ptr-data) __(3)__; else __(4)__; } return__(5)___; } 试题三 阅读下列函数说明和C代码,将应填入__(n)__处的字句写在答题纸的对应栏内。 [函数3说明] 函数ELEM *proc(FILE *fp)从文件fp中逐个读入职工的工号及其完成的产品数量,对相同工号的产品数量计入该职工完成的产品总数,并且按照产品总数降序排列,若多个职工完成的产品总数相同,则按工号升序排列。 函数中建立了一个有序链表,来存储每个职工的工号和完成产品总数等数据,其结点类型为: typedef struct ELE{ int no; /*职工工号*/ int num; /*完成的产品总数*/ struct ELE *next; }ELEM; [函数3] ELEM *proc(FILE *fp) { int m,n; ELEM *u,*v,*p,*base; base = NULL; /*base是链表的首指针*/ while(fscanf(fp,%d%d,n,m) == 2){ /*链表中是否存在工号为n的结点*/ for(v = base;v != NULL v-no != n; __(1)___); if(v != NULL) {/*若链表中已有工号为n的结点v,则将其从链表中脱钩*/ if(__(2)__ base = v-next; else u-next = v-next; v-num += m;

文档评论(0)

170****0532 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8015033021000003

1亿VIP精品文档

相关文档