本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。
输入格式:
输入是一个以回车结束的非空字符串(少于80个字符)。
输出格式:
输出去重排序后的结果字符串。
样例:
ad2f3adjfeainzzzv
输出样例:
23adefijnvz
问题分析:
我们先对输入字符串进行数一下有几个字符,数出来之后对其进行排序,排序后相同的字符就被放到了一起我们就方便对重复的字符进行删除处理了,对其每一个字符保存到另一个字符数组内如果遇上跟上一个字符相同就不进行复制直到复制完整个数组。
代码实现:
#include<stdio.h>
int main(){
char c1[81],c2[81];
gets(c1);
int i=0,j=0;
while(c1[j]!='\0'){
j++;
}
for(i=0;i<j-1;i++){
for(int k=i+1;k<j;k++){
if(c1[i]>c1[k]){
char temp=c1[i];
c1[i]=c1[k];
c1[k]=temp;
}
}
}
i=0,j=0;
while(c1[i]!='\0'){
if(i==0){
c2[i]=c1[i];
i++;
j++;
}else{
if(c1[i]!=c2[j-1]){
c2[j]=c1[i];
i++;
j++;
}else{
i++;
}
}
}
c2[j]='\0';
printf("%s",c2);
return 0;
}
提交结果: