c语言字符串压缩问题。求大神帮忙看一下哪里错了,为什么执行不出结果?
问题描述
有一种简单的字符串压缩算法,对于字符串中连续出现的同一个英文字符,用该字符加上连续出现的次数来表示(连续出现次数小于3时不压缩)。
例如,字符串aaaaabbbabaaaaaaaaaaaaabbbb可压缩为a5b3aba13b4。
请设计一个程序,将采用该压缩方法得到的字符串解压缩,还原出原字符串并输出。
下面是我的代码:
#include<stdio.h>
#include<string.h>
int main()
{
char s[50];
int i,n,c=0,j,a[100];
gets(s);
n=strlen(s);
while(s[i]){
for(i=2;i<=n-1;i++)
{
switch(s[i]){
case '0':a[i]=0;break;
case '1':a[i]=1;break;
case '2':a[i]=2;break;
case '3':a[i]=3;break;
case '4':a[i]=4;break;
case '5':a[i]=5;break;
case '6':a[i]=6;break;
case '7':a[i]=7;break;
case '8':a[i]=8;break;
case '9':a[i]=9;break;
default:break;
}
c=0;
if(s[i]>=48&&s[i]<=57&&s[i+1]>=48&&s[i+1]<=57)
{
c=a[i]*10+a[i+1];
for(j=1;j<=c;j++)
printf("%c",s[i-1]);
}
else if(s[i]>=48&&s[i]<=57&&s[i+1]<=48&&s[i+1]>=57)
{
c=a[i];
for(j=1;j<=c;j++)
printf("%c",s[i-1]);
}
}
}
return 0;
}
不看其它的,
for(j=1;j<=c;j++)
printf("%c",s[i-1]);
你的循环变量是j,而你的s下标为i
下一篇:安妮·博林说什么语言
上一篇:VS2019如何编译C++