本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。
输入格式:
输入是一个以回车结束的非空字符串(少于80个字符)。
输出格式:
输出去重排序后的结果字符串。
输入样例:
ad2f3adjfeainzzzv
输出样例:
23adefijnvz
#include<stdio.h>
#include<string.h>
int main() {
char s[90], s2[90];
int o = 0, flag = 0;
gets(s);
for (int i = 0; s[i] != '\0'; i++) {
flag = 0;
for (int k = i + 1; s[k] != '\0'; k++) {
if (s[i] == s[k]) {
flag = 1; // 如果有重复,标记
break;
}
}
if (flag == 0)
s2[o++] = s[i]; // 如果不重复,存入数组
}
s2[o] = '\0'; // 给结果字符串添加结束符
// 选择排序 s2 数组
for (int i = 0; s2[i] != '\0'; i++) {
char min = s2[i];
int minIndex = i;
for (int j = i + 1; s2[j] != '\0'; j++) {
if (min > s2[j]) {
min = s2[j];
minIndex = j;
}
}
// 交换 s2[i] 和 s2[minIndex]
if (minIndex != i) {
char temp = s2[i];
s2[i] = s2[minIndex];
s2[minIndex] = temp;
}
}
puts(s2);
return 0;
}