从键盘输入一个字符串,遇到#结束。 去掉字符串中重复的字符。 然后用冒泡排序法对字符串中的字符按ASCII码值从小到大排序。 并输出排序后的结果(例如,输入47thu9tzzr6hm4d3,输出34679dhmrtuz)。c语言
时间: 2024-12-16 12:16:00 浏览: 13
在C语言中,你可以按照以下步骤实现这个功能:
1. 首先,创建一个函数接收用户输入的字符串,并删除重复的字符。这需要遍历字符串,同时利用一个集合数据结构(如哈希表或数组)来检查每个字符是否已经存在,不存在则添加到结果字符串中。
```c
#include <stdio.h>
#include <stdbool.h>
char* remove_duplicates(char* str) {
int len = strlen(str);
bool seen[256] = {false}; // ASCII有256个字符
char result[len+1];
int j = 0;
for (int i = 0; i < len; ++i) {
if (!seen[str[i]]) {
seen[str[i]] = true;
result[j++] = str[i];
}
}
result[j] = '\0'; // 结束符
return result;
}
```
2. 接下来,使用冒泡排序算法对剩下的字符按ASCII码进行排序。这里我们假设字符串长度不大,适合手动排序。
```c
void bubble_sort(char* str) {
int n = strlen(str);
for (int i = 0; i < n - 1; ++i) {
for (int j = 0; j < n - i - 1; ++j) {
if (str[j] > str[j + 1]) {
char temp = str[j];
str[j] = str[j + 1];
str[j + 1] = temp;
}
}
}
}
```
3. 最后,打印排序后的结果。
```c
int main() {
char input[100];
printf("请输入字符串,以#结束:");
fgets(input, sizeof(input), stdin); // 去除换行符
input[strlen(input)-1] = '\0'; // 删除末尾的换行符
input = remove_duplicates(input);
bubble_sort(input);
printf("排序后的结果:%s\n", input);
return 0;
}
```
阅读全文