将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。
输入样例:
ad2f3adjfeainzzzv
输出样例:
23adefijnvz
思路:1.用两重循环删除有重复的字母,并将删除后的新的字符存入另一个字符串
2.用冒泡排序或选择比较排序对新的字符串排序
#include<stdio.h>
#include<string.h>
int main()
{
int i,j,n,k=0,t;
char s[85],end[85];
gets(s);
n=strlen(s);
for(i=0;i<n;i++) //删除后面有重复的字符,只保留一个
{
int flag=0;
for(j=i+1;j<n;j++)
{
if(s[i]==s[j])
{flag=1;
break;
}
}
if(flag==0)
end[k++]=s[i];
}
end[k]='\0'; //必须在字符串尾部添加结束符,否则答案错误
for(i=0;i<k-1;i++)
{
for(j=0;j<k-1-i;j++) //用冒泡排序法将字符进行排序
{
if(end[j]>end[j+1])
{
t=end[j];
end[j]=end[j+1];
end[j+1]=t;
}
}
}
puts(end);
return 0;
}
补充:选择比较法:
for(i=0; i<k; i++)//用选择比较法比较字符大小,将其排序
{
int t;
for(j=i+1; j<k; j++)
{
if(end[i]>end[j])
{
t=end[j];
end[j]=end[i];
end[i]=t;
}
}
}
printf("%s",end);