C语言本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。 输入格式: 输入是一个以回车结束的非空字符串(少于80个字符)。 输出格式: 输出去重排序后的结果字符串。 输入样例: ad2f3adjfeainzzzv 输出样例: 23adefijnvz
时间: 2024-03-23 10:42:05 浏览: 84
C语言程序设计-对长度为8个字符的字符串,将8个字符按降序排列;例如:原来的字符串为CEAedcab,排序后输出为edcbaE
5星 · 资源好评率100%
好的,以下是用C语言实现的程序:
```c
#include <stdio.h>
#include <string.h>
void sort(char* s);
int main() {
char s[81]; // 字符串长度不超过80
fgets(s, 81, stdin); // 读入字符串
s[strcspn(s, "\n")] = '\0'; // 去除换行符
sort(s); // 排序
puts(s); // 输出结果
return 0;
}
void sort(char* s) {
int len = strlen(s);
int count[256] = {0}; // 计数数组
for (int i = 0; i < len; i++) {
count[(int)s[i]]++; // 统计每个字符出现的次数
}
int pos = 0;
for (int i = 0; i < 256; i++) {
if (count[i] > 0) {
s[pos++] = (char)i; // 按照ASCII码顺序将字符写回原字符串
}
}
s[pos] = '\0'; // 结尾添加'\0'
}
```
这个程序先读入字符串,然后去除换行符,接着调用 `sort` 函数进行排序,最后输出结果。`sort` 函数先使用计数排序统计每个字符出现的次数,然后按照ASCII码顺序将字符写回原字符串。
阅读全文