本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。
输入格式:
输入是一个以回车结束的非空字符串(少于80个字符)。
输出格式:
输出去重排序后的结果字符串。
输入样例:
ad2f3adjfeainzzzv
结尾无空行
输出样例:
23adefijnvz
结尾无空行
代码段示例如下
#include <stdio.h>
int main()
{
int i=0,j=0,k=0,t;
char str1[80],str2[81]={'1',0};//让第二个数组的第零项为1,其余项都为0方便执行判断
gets(str1);
while(str1[i]!='\0')
{
for(j=0;str2[j]!=0;j++)
{
if(str1[i]==str2[j]) break;
}
if(str2[j]==0) str2[j]=str1[i];
i++;
}
//选择法排序
for(j=1;str2[j]!=0;j++)//第0项为1做判断使用未赋值,所以不给第0项排序
{
for(k=j+1;str2[k]!=0;k++)
{
if(str2[j]>str2[k])
{
t=str2[j];str2[j]=str2[k];str2[k]=t;
}
}
}
for(j=1;str2[j]!=0;j++)//第0项为1,不输出
{
printf("%c",str2[j]);
}
return 0;
}