C语言编程实观以下功能 任意输入一个字符串,使用递日函数反装该字符串,输出结果;然后再使用冒泡排序法将该字符串中字符从小到大排序后输出结果
时间: 2024-09-23 18:14:37 浏览: 68
在C语言中,你可以实现这个功能通过以下几个步骤:
1. **递归反转字符串**:
- 定义一个递归函数,接收字符串的首地址和长度作为参数。
- 如果字符串长度大于1,则交换首尾两个字符,然后递归处理剩余的部分。
- 最后返回处理过的字符串首地址。
```c
#include <stdio.h>
#include <string.h>
void reverse(char *str, int start, int end) {
if (start < end) {
char temp = str[start];
str[start] = str[end];
str[end] = temp;
reverse(str, start + 1, end - 1);
}
}
void print_string(char *str) {
printf("Reversed String: %s\n", str);
}
```
2. **使用冒泡排序对字符串字符排序**:
- 定义一个辅助函数`bubble_sort`来实现冒泡排序算法,遍历字符串并比较相邻的字符,如果顺序不对就交换它们。
- 主函数中先反转字符串,再调用冒泡排序,最后打印排序后的字符串。
```c
void bubble_sort(char *str) {
int len = strlen(str);
for (int i = 0; i < len - 1; i++) {
for (int j = 0; j < len - 1 - i; j++) {
if (str[j] > str[j + 1]) {
char temp = str[j];
str[j] = str[j + 1];
str[j + 1] = temp;
}
}
}
}
int main() {
char input[100];
printf("Enter a string: ");
fgets(input, sizeof(input), stdin); // 注意去除末尾的换行符
input[strlen(input) - 1] = '\0'; // 去除换行符
// 反转字符串
reverse(input, 0, strlen(input) - 1);
// 冒泡排序字符串
bubble_sort(input);
// 输出结果
print_string(input);
return 0;
}
```
阅读全文