阅读下列函数说明和C代码,把应填入其中n处的字句写在答卷的对应栏内。 【函数2说明】 本题中的函数encode()和decode()分别实现对字符串的变换和复原。变换函数encode()顺序考察已知字符串的字符,按以下规则逐组生成新字符串:

admin2009-05-15  24

问题 阅读下列函数说明和C代码,把应填入其中n处的字句写在答卷的对应栏内。
   【函数2说明】
   本题中的函数encode()和decode()分别实现对字符串的变换和复原。变换函数encode()顺序考察已知字符串的字符,按以下规则逐组生成新字符串:
   1.若已知字符串的当前字符不是数字字符,则复制该字符于新字符串中。
   2.若已知字符串的当前字符是一个数字字符,且它之后没有后继字符,则简单地将它自己复制到新字符串中。
   3.若已知字符串的当前字符是一个数字字符,并且还有后继字符,设该数字字符的面值为n,则将它的后续字符(包括后续字符是一个数字字符)重复复制n+1次到新字符串中。
   4.以上述一次变换为一组,在不同组之间另插入一个下划线字符“-”用于分隔。例如。encode()函数对字符串26a3t2的变换结果为666_a_tttt_2
   复原函数decode()做变换函数encode()的相反的工作。即复制不连续相同的单个字符,而将一组连续相同的字符(不超过10个)变换成一个用于表示重复次数的数字字符和一个重复出现的字符,并在复原过程中掠过变换函数为不同组之间添加的一个下划线字符。
   假定调用变换函数encode()时的已知字符串中不包含下划线字符。
   【函数2】
   int encode(char*instr,char * outstr)
   {
   char*ip,*op,c;int k,n;
   ip=instr;op=outstr;
   while(*ip){
   if (1)  &&*(ip+1){
   n= *ip -’0’+  1;
   c= *++ip;
   for(k=0;k<=n;k++)
    (2);
   }
   else (3);
   *op++ =’-’;
   ip++;
   }
   if(op>outstr) (4);
   *op=’\0’;
   return op-outstr;
   }
   int decode(char * instr,char * outstr)
   {char*ip,*op,c;int n;
   ip=instr;op=outstr;
   while(*ip){
   c= *ip;n=0;
   while(*ip==c && n<=10){ip++;n++;}
   if (5)  *op++=’0’+n-1;
   *op++=c;
   if(* ip==’_’,) (6);
   }
   * op=’\0’;
   return op-outstr;
   }

选项

答案(4)op--

解析 到op的最后了,往前移一个单元加入结束符。
转载请注明原文地址:https://kaotiyun.com/show/OujZ777K
0

相关试题推荐
最新回复(0)