酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

本题要求实现一个字符串压缩的简单函数。压缩规则是:如果某个字符x连续出现n(n>1)次,则将这n个字符x替换为nx的形式;否则保持不变。 函数接口定义: void zip( char *p ); 函数zip对p指向的字符串进行压缩操作。 裁判测试程序样例: #include <stdio.h> #define maxs 20 void zip( char *p ); void readstring( char *s ); /* 由裁判实现,略去不表 */ int main() { char s[maxs]; readstring(s); zip(s); printf("%s\n", s); return 0; } /* 请在这里填写答案 */ 输入样例: mississippi 输出样例: mi2si2si2pi

```c #include <stdio.h> #include <string.h> #define maxs 20 void zip( char *p ) { int len = strlen(p); // 获取字符串长度 int i = 0, j = 0; // 两个指针,i 用于遍历原始字符串,j 用于构建压缩后的字符串 while (i < len) { int count = 1; // 统计相同字符连续出现的次数 while (i + 1 < len && p[i] == p[i + 1]) { // 找到连续相同的字符 count++; i++; } if (count > 1) { // 如果连续次数大于 1,进行压缩 p[j++] = p[i]; p[j++] = count + '0'; // 将数字转换为字符存储 } else { // 否则直接复制原字符 p[j++] = p[i]; } i++; } p[j] = '\0'; // 结束字符串 } void readstring( char *s ) { scanf("%s", s); } int main() { char s[maxs]; readstring(s); zip(s); printf("%s\n", s); return 0; } ``` 额外需要注意的逻辑点: 1. 注意字符串结束符的处理,确保压缩后的字符串正确结束。 2. 处理连续字符时,要准确计算连续的次数。 3. 注意指针的移动,避免越界访问。 [2024-12-06 09:55:06 | AI写代码神器 | 360点数解答]

相关提问