首页 > 电脑

c语言字符串压缩问题。求大神帮忙看一下哪里错了,为什么执行不出结果?

更新时间2019-12-25 04:35:55

问题描述

有一种简单的字符串压缩算法,对于字符串中连续出现的同一个英文字符,用该字符加上连续出现的次数来表示(连续出现次数小于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


相关标签:大神c语言

上一篇:VS2019如何编译C++

下一篇:安妮·博林说什么语言