7-60 删除重复字符 (20 分)
本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。
输入格式:
输入是一个以回车结束的非空字符串(少于80个字符)。
输出格式:
输出去重排序后的结果字符串。
输入样例:
ad2f3adjfeainzzzv
输出样例:
23adefijnvz
这题关键在于删除多个连续相同的字符
#include <stdio.h>
void del (char *str);
void order (char *str);
int main () {
char str[80];
gets(str);
del (str);
order (str);
puts(str);
return 0 ;
}
void del ( char *str ){ //删除重复
int i,t,j,len,temp;
len = strlen(str);
for ( i=0; i<len-1; i++) {
for ( t=i+1; t<len; ){
if ( *(str+i) != *(str+t)) //防止多个连续相同的数
t++;
else {
for ( j=t+1; j<len; j++)
*(str+j-1) = *(str+j);
len --;
}
}
}
*(str+len) = '\0';
}
void order ( char *str){ //排序
int i,j,len;
char t;
len = strlen(str);
for ( j=len; j>0; j--){
for ( i=1; i<j; i++)
if ( *(str+i-1) > *(str+i)) {
t = *(str+i-1);
*(str+i-1) = *(str+i);
*(str+i) = t;
}
}
}