输入一个长度不超过 100 的字符串,删除串中的重复字符。例如输入:aabbccdddeeeff,输出abcdef。用c语言输出
时间: 2024-12-20 22:21:22 浏览: 5
在C语言中,可以使用一个哈希表(如数组或关联数组)来实现这个功能,因为我们需要跟踪每个字符是否已经出现过。以下是简单的步骤:
```c
#include <stdio.h>
#include <string.h>
#define MAX_CHAR 128 // 假设ASCII字符集
// 创建一个布尔型数组,用于记录字符是否出现过
int visited[MAX_CHAR] = {0};
void removeDuplicates(char str[], int n) {
for (int i = 0; i < n; i++) {
if (!visited[str[i]]) { // 如果字符未访问过
printf("%c", str[i]); // 输出该字符并标记为已访问
visited[str[i]] = 1;
}
}
}
int main() {
char input[] = "aabbccdddeeeff";
int len = strlen(input);
removeDuplicates(input, len);
return 0;
}
```
当你运行上述程序,它会输出 `abcdef`。注意这个简单实现假设字符串只包含ASCII字符,并且忽略了空格和特殊字符。如果需要处理更复杂的情况,比如Unicode或其他字符集,你需要相应地调整数组大小。
相关问题
用c语言编写程序从键盘输入一个字符串,将字符串中重复的字符去除。如字符串 a =”abcadebfc”,去重后的字符串a =”abcdef”,输出去重后的结果。
在C语言中,我们可以使用数组和循环结构来实现这个功能。下面是一个简单的示例程序,它会从用户那里获取输入字符串,然后创建一个新的字符串,只包含原始字符串中不重复的字符:
```c
#include <stdio.h>
#include <string.h>
// 函数声明用于处理字符去重
void removeDuplicates(char* str);
int main() {
char input[100];
printf("请输入一个字符串: ");
fgets(input, sizeof(input), stdin); // 读取用户输入并包括换行符
input[strcspn(input, "\n")] = '\0'; // 去除fgets添加的换行符
removeDuplicates(input);
printf("去重后的字符串: %s\n", input); // 输出结果
return 0;
}
// 函数实现:去重字符
void removeDuplicates(char* str) {
int len = strlen(str);
for (int i = 0; i < len; ++i) {
if (str[i] != '\0') { // 避免检查结束标志'\0'
for (int j = i + 1; j < len; ++j) {
if (str[j] == str[i]) {
str[j] = '\0'; // 将重复的字符设为结束标志
}
}
}
}
}
```
当你运行这个程序,输入字符串 "abcadebfc" 后,它会输出 "abcdef"。
(4)编写程序从键盘输入一个字符串,将字符串中重复的字符去除。如字符串 a =”abcadebfc”,去重后的字符串a =”abcdef”,输出去重后的结果。用c语言写
在 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数组中。
运行这个程序后,它会提示你输入一个字符串,然后输出去重后的字符串。
阅读全文