(4)编写程序从键盘输入一个字符串,将字符串中重复的字符去除。如字符串 a =”abcadebfc”,去重后的字符串a =”abcdef”,输出去重后的结果。用c语言写
时间: 2024-12-20 22:29:48 浏览: 6
在 C 语言中,你可以通过遍历输入字符串、利用数组或哈希表来跟踪每个字符是否已经出现过,以此来去除重复字符。下面是一个简单的示例程序:
```c
#include <stdio.h>
#include <string.h>
#define MAX_CHAR 128 // 假设我们只处理ASCII字符
// 函数用于检查字符是否已经在seen数组中
int is_char_unique(int seen[MAX_CHAR], char c) {
return seen[c] == 0;
}
// 主函数
void remove_duplicates(char input[], char output[]) {
int i, j = 0;
int seen[MAX_CHAR] = {0}; // 初始化一个大小为MAX_CHAR的布尔数组
for (i = 0; input[i]; ++i) {
if (is_char_unique(seen, input[i])) {
output[j++] = input[i];
seen[input[i]] = 1; // 标记该字符已出现
}
}
output[j] = '\0'; // 结束字符串
printf("去重后的字符串: %s\n", output);
}
int main() {
char str[100];
printf("请输入一个字符串: ");
fgets(str, sizeof(str), stdin); // 获取用户输入,包括换行符
// 移除fgets读取的换行符
if (str[strlen(str) - 1] == '\n') {
str[strlen(str) - 1] = '\0';
}
char result[100];
remove_duplicates(str, result);
return 0;
}
```
在这个程序中,`remove_duplicates`函数会创建一个新的字符串并仅添加首次遇到的字符。`is_char_unique`辅助函数则检查给定字符是否尚未出现在seen数组中。
运行这个程序后,它会提示你输入一个字符串,然后输出去重后的字符串。
阅读全文