帮我用c语言编写程序,将给定字符串去掉重复的字符后,按照字付ASCI码顺序从小到大排序后输出. 输入格式: 输入是一个以回车结束的非空字符串(少于80个字符)。 输出格式: 输出去重排序后的结果字符串。
时间: 2024-03-17 10:46:43 浏览: 111
好的,下面是C语言程序实现:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[80];
int len, i, j, k;
scanf("%s", str);
len = strlen(str);
for (i = 0; i < len; i++) {
for (j = i + 1; j < len;) {
if (str[i] == str[j]) {
for (k = j; k < len; k++) {
str[k] = str[k + 1];
}
len--;
} else {
j++;
}
}
}
for (i = 0; i < len; i++) {
for (j = i + 1; j < len; j++) {
if ((int) str[i] > (int) str[j]) {
char temp = str[i];
str[i] = str[j];
str[j] = temp;
}
}
}
printf("%s\n", str);
return 0;
}
```
思路解析:
1. 首先输入字符串并获取字符串长度。
2. 然后使用两层循环,将重复的字符删除,即在第一层循环中,将字符串中每个字符与其之后的字符进行比较,如果有相同的字符,则将后面的字符删除。删除的方式是将后面的字符往前移动一位,最后将字符串长度减一。第二层循环是为了将所有的重复字符都删除。
3. 最后使用冒泡排序的方式将字符串中的字符按照ASCII码从小到大排序。冒泡排序的原理是将相邻的两个元素进行比较,如果前面的元素大于后面的元素,则交换它们的位置。每一轮比较会将当前最大的元素移动到最后。
4. 输出去重排序后的字符串。
注意事项:
1. 输入的字符串长度不超过80个字符。
2. 由于需要在原字符串上进行删除和排序操作,所以需要使用字符数组来存储字符串。
3. 在比较和交换字符时,需要将字符转换为其对应的ASCII码,可以使用强制类型转换的方式实现。
阅读全文