题目要求:
转换字符串——插入字符的个数,如字符串aaab,插入字符个数后变为aaa3b1。
代码如下:
/**/
/************************************************************************
* 转换字符串——插入字符的个数
* 如,aaab,变为aaa3b1
************************************************************************/
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
#include
<
stdlib.h
>
#include
<
stdio.h
>
#include
<
string
.h
>
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
#define
MAXCOUNT 2*100
//
输入的字符串长度不能超过100
char
*
transformation(
char
*
str)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
int len=strlen(str);
char *buf=new char[len+1]; //存放某个字符的个数即该字符后的字符串
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
char *p=str;
char *q=p+1;
int count=1;
while(*q)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
if(*p==*q)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
count++;
p++;
q++;
}
else
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
itoa(count,buf,10);
int nbits=strlen(buf);
strcat(buf,q);
*q=0;
strcat(str,buf);
q+=nbits;
p=q;
q=p+1;
count=1;
}
}
//最后一个相同字符的个数
itoa(count,buf,10);
strcat(str,buf);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
delete []buf;
buf=NULL;
return str;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
显示菜单
void
show_menu()
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
printf("--------------------------------------------- ");
printf("input command to test the program ");
printf(" i or I : input string to test ");
printf(" q or Q : quit ");
printf("--------------------------------------------- ");
printf("$ input command >");
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
void
main()
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
char sinput[10];
char str[MAXCOUNT];
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
show_menu();
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
scanf("%s",sinput);
while(stricmp(sinput,"q")!=0)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
if(stricmp(sinput,"i")==0)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
printf(" please input an string:");
scanf("%s",&str);
printf(" before transformation: %s ",str);
char *pstr=transformation(str);
printf(" after transformation: %s ",pstr);
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//输入命令
printf("$ input command >");
scanf("%s",sinput);
}
}
运行结果如下:
![](https://p-blog.csdn.net/images/p_blog_csdn_net/livelylittlefish/transformation.JPG)