【问题描述】 编写一个函数del(s),将输入的字符串s中重复出现的字符删除,只保留最后出现的字符,要求大小写无关(即'A'与'a'视为相同字符)。在main()函数中测试此函数:从键盘输入一个字符串,然后调用该函数进行删除重复字符串操作,将结果打印到屏幕上。 【输入形式】 从键盘输入一个字符串。 【输出形式】 在屏幕上输出删除重复字符以后的字符串。
时间: 2024-02-15 22:04:48 浏览: 225
删除一个字符串中重复的字符
4星 · 用户满意度95%
以下是C语言的代码实现:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void del(char s[]) {
int i, j, k, len;
len = strlen(s);
for (i = 0; i < len; i++) {
s[i] = tolower(s[i]); // 转换为小写字母
}
for (i = 0; i < len; i++) {
for (j = i + 1; j < len; j++) {
if (s[j] == s[i]) {
for (k = j; k < len; k++) {
s[k] = s[k + 1]; // 删除重复字符
}
len--;
j--; // 后面的字符前移一位
}
}
}
}
int main() {
char s[101];
fgets(s, 101, stdin);
del(s);
printf("%s", s);
return 0;
}
```
首先定义一个`del`函数,接收一个字符数组参数`s`,用来存放待删除重复字符的字符串。在函数内部,先将字符串中的所有字母转换为小写字母,这样可以忽略大小写。然后使用两层循环遍历字符串,如果发现重复的字符,就将后面的字符依次前移一位,最后将字符串的长度减一。这样就可以将所有重复的字符删除,只保留最后出现的字符。
在主程序中,先读入待处理的字符串`s`,使用`fgets`函数可以读入包含空格的字符串。然后调用`del`函数进行删除重复字符操作,并将结果输出即可。
阅读全文