资源描述:
《1999年度程序员级下午试卷》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1999年度程序员级下午试卷试题一函数strcpy(char*to,char*from)将字符串from复制到字符串to.voidstrcpy(char*to,char*from){while(____(1)____);}函数merge(inta[],intn,intb[],intm,int*c)是将两个从小到大有序数组,a和b复制合并出一个有序整数序列c,其中形参n和m分别是数组a和b的元素个数.voidmerge(inta[],intn,intb[],intm,int*c){inti,j; for(i=j=0;i *c++=a[i]
2、 while(____(2)____)*c++=a[i++]; while(____(3)____)*c++=b[j++]; } 递归函数sum(inta[],intn)的返回值是数组a[]的前n个元素之和intsum(inta[],intn){if(n>0)return____(4)____; else____(5)_____;}试题二阅读下列函数说明和C代码,将应填入____(n)____处的子句写在答卷的对应栏内. 本题中的函数encode()和decode()分别实现对字符串的变换和复原.变换函数encode()顺序考察已
3、知字符串的字符,按以下规则逐组生成新字符串: (1)若已知字符串的当前字符不是数字字符,则复制该字符于新字符串中. (2)若已知字符串的当前字符是一个数字字符,且它之后没有后继字符,则简单地将它复制到新字符串中 (3)若已知字符串的当前字符是一个数字字符,并且还有后继字符,设该数字字符的面值为n,则将它的后继字符(包括后继字符是一个数字字符)重复复制n+1次到新字符串中. (4)以上述一次变换为一组,在不同组之间另插入一个下划线'_'用于分隔.例如:encode()函数对字符串26a3t2的变换结果为666_a_tttt_2 复原
4、函数decode()做变换函数encode()的相反的工作.即复制不连续相同的单个字符,而将一组连续相同的字符(不超过10个)变换成一个用于表示重复次数的数字符和一个重复出现的字符,并在复原过程中掠过变换函数为不同组之间添加的一个下划线字符. 假定调用变换函数encode()时的已知字符串中不含下划线字符.intencode(char*instr,char*outstr){ char*ip,*op,c;intk,n; ip=instr;op=outstr; while(*ip){ if(*ip>='0'&&*ip n=____(1
5、)____; c=____(2)____; for(k=0;k *op++=c; }else____(3)____; *op++='_'; ip++; } if(op>outstr)op--; ____(4)____; returnop-outstr;}intdecode(char*instr,char*outstr){ char*ip,*op,c; intn; ip=instr;op=outstr; while(*ip){ c=*ip;n=0; while(*ip==c&&n if
6、(____(5)_____)*op++='0'+n-1; *op++=c; if(____(6)____)ip++; } *op=' '; returnop-outstr; }试题三 本程序从正文文件text.ini读入一篇英文短文,统计该短文中不同单词和它的出现次数,并按词典编辑顺序将单词及它的出现次数输出到正文文件word.out中. 程序用一棵有序二叉树存储这些单词及其出现的次数,一边读入一边建立.然后中序遍历该二叉树,将遍历经过的二叉树上结点的内容输出. 程序中的外部函数 intgetword(FILE*fpt,c
7、har*word)从与fpt所对应的文件中读取单词置入word,并返回1;若读单词遇文件尾,已无单词可读时,则返回0. #include #include #include #include #defineINF"TEXT.IN" #defineOUTF"WORD.OUT" typedefstructtreenode{char*word; intcount; structtreenode*left,*right; }BNODE;intgetwo
8、rd(FILE*fpt,char*word);voidbinary_tree(BNODE**t,char*word){BNODE*ptr,*p;intcmpres; p=NULL