7-60 删除重复字符 (20 分)
问题描述:
本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。
输入格式:
输入是一个以回车结束的非空字符串(少于80个字符)。
输出格式:
输出去重排序后的结果字符串。
输入样例:
ad2f3adjfeainzzzv
输出样例:
23adefijnvz
#include<stdio.h>
int main()
{
char a[90];
int i=0; //记录字符数组的长度=i+1
while((a[i]=getchar())!='\n')
{
i++;
} //其中a[i]='\n'
int num;
char b;
for(int n=i-1;n>0;n--) //选择排序,重复i-1次
{
b=a[i-1-n];
num=i-1-n;
for(int j=i-1-n;j<=i-1;j++)
{
if(b-a[j]>0)
{
b=a[j];
num=j;
}
}
a[num]=a[i-1-n];
a[i-1-n]=b; //每次找出最小值交换位置
}
for(int n=0;n<=i-1;n++)
{
if(a[n]!=a[n+1]) //输出不重复的字符串
{
printf("%c",a[n]);
}
}
return 0;
}
心得:
1.选择排序交换次数少
2.排序后不用删除重复的字符。