本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。 输入格式: 输入是一个以回车结束的非空字符串(少于80个字符)。 输出格式: 输出去重排序后的结果字符串。写c语言代码
时间: 2024-12-02 22:17:49 浏览: 11
第3章-16 删除重复字符 (20分)python
5星 · 资源好评率100%
在C语言中,你可以使用数组、字符指针和ASCII值来完成这个任务。首先,你需要创建一个字符数组存储唯一的字符,并遍历输入字符串来添加新字符。然后,对添加过的字符进行排序。下面是一个简单的示例代码:
```c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// 比较函数用于ASCII排序
int compare(const void *a, const void *b) {
return (*(char *)a - *(char *)b);
}
void removeDuplicatesAndSort(char str[]) {
int len = strlen(str);
// 使用位运算去除重复字符(ASCII码小于128)
for (int i = 0; i < len; ++i) {
for (int j = i + 1; j < len; ++j) {
if ((str[i] && str[j] && str[i] == str[j]) && str[i] < 128) {
str[j] = '\0';
len--;
j--; // 要更新j,因为长度变短了
}
}
}
// 对剩下的唯一字符进行排序
char sortedChars[len + 1]; // 为了处理最后一个元素
strncpy(sortedChars, str, len);
sortedChars[len] = '\0'; // 添加终止符
qsort(sortedChars, len, sizeof(char), compare);
printf("%s", sortedChars);
}
int main() {
char input[90];
fgets(input, sizeof(input), stdin); // 获取用户输入并移除换行符
input[strcspn(input, "\n")] = '\0'; // 移除换行符
removeDuplicatesAndSort(input);
return 0;
}
```
阅读全文