给定一个字符串,实现一个函数void change(char *str)若字符下一个字符与此字符不同,原样输出,否则先输出此字符,再输出字符连续出现次数
时间: 2024-12-12 17:16:53 浏览: 19
在C语言中,你可以通过遍历输入字符串并利用指针操作来实现这个功能。这里是一个简单的函数`change`的示例,它会满足题目描述的需求:
```c
#include <stdio.h>
#include <ctype.h> // 包含处理字符的头文件
// 函数原型
void change(char *str);
int main() {
char input[100]; // 存储输入字符串
printf("请输入一个字符串: ");
fgets(input, sizeof(input), stdin); // 从标准输入读取字符串
input[strcspn(input, "\n")] = '\0'; // 删除换行符
change(input);
return 0;
}
void change(char *str) {
int count = 1; // 当前字符计数
for (int i = 1; str[i] != '\0'; i++) { // 遍历字符串(跳过第一个字符)
if (str[i - 1] != str[i]) { // 检查当前字符是否与前一个不同
printf("%c", str[i - 1]); // 输出不同字符
if (count > 1) printf("出现了 %d 次", count); // 如果之前有连字符,打印次数
count = 1; // 重置计数
} else {
count++; // 同一个字符计数加一
}
}
// 输出最后一个字符及其计数,假设不是单独出现
if (count > 1) printf("%c出现了 %d 次", str[strlen(str) - 1], count);
}
```
在这个函数中,我们遍历输入字符串,如果遇到的字符与前一个不同,则打印该字符并(如果有需要)打印之前的计数;接着更新计数器。如果遇到相同的字符,就简单地增加计数。最后,在循环结束后,我们会检查是否还有未输出的连续字符,并相应地打印它们。
阅读全文