logo - 刷刷题
下载APP
【简答题】

【函数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;
}

举报
参考答案:
参考解析:
.
刷刷题刷刷变学霸
举一反三

【单选题】设char str[10]="World",*p=str;,能正确输出字符串的语句是()

A.
str=puts();
B.
putchar(str);
C.
printf("%s\n",p);
D.
printf("%c\n",*p);

【单选题】函数String(n,字符串)的功能是

A.
把数值型数据转换为字符串
B.
返回由n个字符组成的字符串
C.
从字符串中取出n个字符
D.
从字符串中第n个字符的位置开始取子字符串
相关题目:
【单选题】设char str[10]="World",*p=str;,能正确输出字符串的语句是()
A.
str=puts();
B.
putchar(str);
C.
printf("%s\n",p);
D.
printf("%c\n",*p);
【单选题】函数String(n,字符串)的功能是
A.
把数值型数据转换为字符串
B.
返回由n个字符组成的字符串
C.
从字符串中取出n个字符
D.
从字符串中第n个字符的位置开始取子字符串