本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。
输入格式:
输入是一个以回车结束的非空字符串(少于80个字符)。
输出格式:
输出去重排序后的结果字符串。
我的答案:
#include<stdio.h>
int main()
{
char str1[80], str2[80];//输入的数组,处理后的数组
int i, j, len;
char temp;
gets(str1);//输入数组
len = strlen(str1);//得到数组长度
for (i = 0; i < len; i++)//把数组排序
{
for (j = i+1; j < len; j++)// 注意从i+1开始比较
{
if (str1[i] > str1[j])//交换值
{
temp = str1[i];
str1[i] = str1[j];
str1[j] = temp;
}
}
}
str2[0] = str1[0];
j = 0;
for (i = 1; i < len; i++)//消去重复元素
{
if (str2[j] == str1[i]) continue;//如果重复,跳出本次循环,数组2不记录该值
else//不重复则记录该值
{
j++;
str2[j] = str1[i];
}
}
str2[j + 1] = '\0';
puts(str2);
return 0;
}