用c语言编写程序:输入任意一串字符,字符若连续出现多次,则只保留一个字符删除多余的字符

输入任意一串字符,字符若连续出现多次,则只保留一个字符删除多余的字符(不考虑压缩后的句子含义的完整性),统计被删除的字符个数

第1个回答  推荐于2017-12-15

#include<stdio.h>
#include<string.h>
void main()
{
char a[100],b[100];
int j=0,n,len,flag,s=0;
printf("请输入一个字符串:\n");
scanf("%s",a);
printf("删除前的字符串:\n");
printf("%s\n",a);
n=strlen(a); // 获取输入字符串的长度
b[0] = a[0]; // 将 a 字符串的第一个值给 b 字符串
len = 1; // 初始化 b 字符串的长度
for(int i=1;i<n;i++) 
{
flag = 0; // 添加标识(为0则表示值不同,为1则表示值相同)
for(int j=0;j<len;j++) 
{
if(a[i] == b[j]) // 当前 a 字符串中与 b 字符串中相同时跳出循环并且 flag 设置为 1
{
flag = 1;
s++; // 计算出相同的值的数量
break;
}
}
if (!flag) // 当前 a[i] 字符串中与 b 字符串无相等时,将其加入到 b 字符串中
{
b[len++] = a[i];
}
}
b[len]='\0'; // 给 b 字符串添加结束符
printf("\n删除后的字符串:");
printf("%s\n",b);
printf("被删除的个数有%d\n",s);
}

看到下面评论有兄弟说,之前的错误,今天一看确实是有问题,之前没有考虑周到,只是删除了前后重复的并没有到达题目的要求,现如今更新最新的代码并添加了备注。附上一张截图

本回答被提问者采纳
相似回答