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

(爱问答)

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


相关标签:大神c语言

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

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

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?