7-8 删除重复字符 (20分)
本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。
输入格式:
输入是一个以回车结束的非空字符串(少于80个字符)。
输出格式:
输出去重排序后的结果字符串。
输入样例:
ad2f3adjfeainzzzv
输出样例:
23adefijnvz
作者
颜晖
单位
浙大城市学院
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<stdio.h>
void bubble(char a[],int n);
int main(void)
{
char olds[80],news[80];
int i=0;
while((olds[i]=getchar())!='\n')
i++;
olds[i]='\0';
int j,ret,k=0;;
news[k]=olds[k];
k++;
for(i=1;olds[i]!='\0';i++){
ret=1; //,对于每一个a[i],先假设与不重复
for(j=0;j<i;j++){
if(olds[i]==olds[j])
ret=0; //若有相等,则重复;
}
if(ret==1){
news[k]=olds[i];
k++;
}
}
bubble(news,k);
for(i=0;i<k;i++)
putchar(news[i]);
return 0;
}
void bubble(char a[],int n)
{
int i,j,ret,t;
for(i=1;i<n;i++){
ret=1;
for(j=0;j<n-i;j++)
if(a[j]>a[j+1]){
ret=0;
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
if(ret==1)
break;
}
}