4.请用c语言设计程序,将一字符串进行压缩处理。编程要求如下: (1)编写一个函数int compress(char s[ ]) ,将s中连续出现的多个相同字符压缩为一个字符,统计被删除的字符个数,返回被删除的字符个数。 (2)编写函数main,从键盘输人一行字符数据存入一个字符型数组中,调用compress函数对该字符数组中存储的字符做压缩处理,输出压缩后的字符串。 测试数据: @@@@@@ I wwilll successful &&&&&& and youtoo !!!!!!##########运行结果: @ I will sucesful & and you to !# 30
时间: 2023-11-28 22:49:43 浏览: 85
C语言–压缩字符串
5星 · 资源好评率100%
以下是参考代码:
```c
#include <stdio.h>
#include <string.h>
int compress(char s[]) {
int len = strlen(s);
int del_count = 0; // 被删除的字符个数
int pos = 0; // 记录压缩后字符串的下标
for (int i = 0; i < len; i++) {
s[pos] = s[i]; // 将当前字符复制到压缩后的字符串中
pos++;
while (i + 1 < len && s[i] == s[i + 1]) {
i++; // 跳过连续出现的相同字符
del_count++; // 记录被删除的字符个数
}
}
s[pos] = '\0'; // 添加字符串结束符
return del_count;
}
int main() {
char s[100];
printf("请输入一行字符数据:");
fgets(s, 100, stdin); // 从键盘读入字符串
int del_count = compress(s);
printf("压缩后的字符串:%s\n", s);
printf("被删除的字符个数:%d\n", del_count);
return 0;
}
```
注意:本程序中使用了 `fgets()` 函数来从键盘读入字符串,而不是 `scanf()` 函数,因为 `scanf()` 函数会在读入空格或换行符时停止读入,而本程序需要读入一整行字符数据。
阅读全文