08年下半年程序员下午试卷.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
08年下半年程序员下午试卷

2008年下半年程序员下午试卷 试题一(共15分)   阅读以下说明和流程图,填补流程图中的空缺(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)组成,其中n≥m0。在串A中查找串B的基本算法如下:从串A 的首字符A(0)开始,取子串A(0)A(1)…A(m-1)与串B比较;若不同,则再取子串A(1)A(2)…A(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)、…逐对字符进行比较。若发现不同,则需要取下一个子串进行比较,依此类推。 [流程图] 试题二(共15分)   阅读以下说明和C 程序代码,将应填入 (n) 处的字句写在答题纸的对应栏内。   [说明]   下面C 程序代码的功能是:对于输入的一个正整数n(100≤n1000),先判断其是否是回文数(正读反读都一样的数)。若不是,则将 n 与其反序数相加,再判断得到的和数是否为回文数,若还不是,再将该和数与其反序数相加并进行判断,依此类推,直到得到一个回文数为止。例如,278 不是回文数,其反序数为 872,相加后得到的 1150还不是回文数,再将1150与其反序数511相加,得到的1661是回文数。   函数int isPalm(long m)的功能是:将正整数m的各位数字取出存入数组中,然后判断其是否为回文数。若m是回文数则返回1,否则返回0。   [C 程序代码]   #include   #include   int isPalm(long m)   { /*判断m是否为回文数*/   int i = 0, k = 0;   char str[32];   while (m 0) { /*从个位数开始逐个取出m的各位数字并存入字符数组str*/   str[k++] = (1) + 0;   m = m / 10;   }   for(i = 0; i k/2; i++) /*判断str中的k个数字字符序列是否是回文*/   if ( str[i] != str[ (2) ] ) return 0;   return 1;   }   int main( )   {   long n, a, t;   printf(input a positive integer:); scanf(%ld,n);   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(%ld\n,n);   system(pause); return 0;   } 试题三(共15 分)   阅读以下说明和C 函数,将应填入 (n) 处的字句写在答题纸的对应栏内。   [说明]   已知某二叉树的非叶子结点都有两个孩子结点,现将该二叉树存储在结构数组 Ht中。结点结构及数组Ht的定义如下:   #define MAXLEAFNUM 30   struct node{   char ch; /*当前结点表示的字符,对于非叶子结点,此域不用*/   char *pstr; /*当前结点的编码指针,非叶子结点不用*/   int parent; /*当前结点的父结点,为0时表示无父结点*/   int lchild,rchild;   /*当前结点的左、右孩子结点,为0时表示无对应的孩子结点*/   };   struct node Ht[2 * MAXLEAFNUM]; /*数组元素Ht[0]不用*/   该二叉树的n个叶子结点存储在下标为1~n的Ht数组元素中。例如,某二叉树如图3-1所示,其存储结构如图3-2所示,其中,与叶子结点a对应的数组元素下标为1

文档评论(0)

asd522513656 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档