C语言编写一个函数del(s),不管大小写,将输入的字符串s中重复出现的字符删除,只保留最后出现的字符,
时间: 2024-02-22 18:59:31 浏览: 63
好的,我来给您写一个C语言函数del(s)的示例代码,实现删除字符串中重复出现的字符,不区分大小写,只保留最后出现的字符。代码如下:
```c
void del(char s[])
{
int i, j, k;
int len = strlen(s);
for (i = 0; i < len; i++) {
for (j = i + 1; j < len;) {
if (tolower(s[j]) == tolower(s[i])) {
for (k = j; k < len; k++) {
s[k] = s[k + 1];
}
len--;
} else {
j++;
}
}
}
}
```
这个函数的实现思路与上一个函数类似,只是在比较字符是否相等时,用tolower()函数将字符转换为小写字母,这样就可以实现不区分大小写的功能。
同样的,您可以在自己的程序中调用这个函数del(s),传入需要处理的字符串s进行处理。
相关问题
C语言编写一个函数del(s),不管大小写,将输入的字符串s中重复出现的字符删除,只保留最后出现的字符,在main()函数中测试此函数:从键盘输入一个字符串,然后调用该函数进行删除重复字符串操作,将结果打印到屏幕上。
好的,以下是您所需要的C语言代码:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void del(char s[])
{
int i, j, k;
int len = strlen(s);
for (i = 0; i < len; i++) {
for (j = i + 1; j < len;) {
if (tolower(s[j]) == tolower(s[i])) {
for (k = j; k < len; k++) {
s[k] = s[k + 1];
}
len--;
} else {
j++;
}
}
}
}
int main()
{
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
del(str);
printf("删除重复字符后的字符串为:%s\n", str);
return 0;
}
```
在main()函数中,先从键盘输入一个字符串,然后调用del()函数进行删除重复字符操作,最后将结果打印到屏幕上。
您可以自己编译运行一下这个程序,输入不同的字符串进行测试。
C语言编写一个函数del(s),将输入的字符串s中重复出现的字符删除,只保留最后出现的字符,要求大小写无关(即'A'与'a'视为相同字符)。在main()函数中测试此函数:从键盘输入一个字符串,然后调用该函数进行删除重复字符串操作,将结果打印到屏幕上。
好的,这是一个编程问题,我可以回答。以下是del函数的C语言代码实现,以及在main函数中的测试代码:
```
#include <stdio.h>
#include <string.h>
void del(char* s) {
int len = strlen(s);
int dict[128] = {0}; // 用来记录每个字符最后出现的位置
for (int i = 0; i < len; i++) {
if (s[i] >= 'A' && s[i] <= 'Z') {
s[i] += 32; // 将大写字母转换为小写字母
}
dict[s[i]] = i;
}
int j = 0;
for (int i = 0; i < len; i++) {
if (i == dict[s[i]]) {
s[j++] = s[i];
}
}
s[j] = '\0'; // 字符串末尾加上'\0'
}
int main() {
char str[100];
printf("Please enter a string: ");
scanf("%s", str);
del(str);
printf("The result is: %s", str);
return 0;
}
```
你可以直接通过复制粘贴运行这段代码,然后输入一个字符串进行测试。这段代码会删除输入字符串中重复出现的字符,并保留最后出现的字符,大小写不敏感。
阅读全文