本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。
输入格式:
输入是一个以回车结束的非空字符串(少于80个字符)。
输出格式:
输出去重排序后的结果字符串。
输入样例:
ad2f3adjfeainzzzv
输出样例:
23adefijnvz
#include <stdio.h>
#include<string.h>
//排序
int sort(char num[],int n){
char t;
for(int i=0;i<(n-1);i++)
for(int j=i+1;j<n;j++)
if(num[i]>num[j]) {
t=num[i];
num[i]=num[j];
num[j]=t;
}
for(int i=0;i<n;i++) printf("%c",num[i]);
}
int main(){
char num[100];
gets(num);
int n=strlen(num);
//去重
for(int i=0;i<(n-1);i++){
for(int j=i+1;j<n;){
if(num[i]==num[j]){
for(int t=j;t<(n-1);t++) num[t]=num[t+1];
n--;
j--; //如果紧挨着的几个字母相同会出现跳过情况,继而漏掉重的元素,所以对j做一定的处理
}
j++;
}
}
sort(num,n);
return 0;
}