题目: 编写一个程序,它将从标准输入中读取一个字符串,然后按字母表顺序排序,并输出排序后的字符串。程序应该满足以下要求: 程序应该能够处理最多100个字符的字符串。如果输入的字符串超过100个字符,则程序应该给出错误提示并要求用户重新输入。程序应该使用快速排序算法来排序字符串。您可以自己实现快速排序算法或使用C语言标准库中的qsort函数。程序应该能够处理输入字符串中的空格和标点符号,并将它们放在排序后的字符串中的正确位置。程序应该能够处理大小写字母,但将它们视为同一字符。也就是说,大写字母A和小写字母a应该在排序后的字符串中被视为同一字符。代码以及实现:// 以下代码仅供参考
#include
#include
#include
#define MAX_LEN 100
void quick_sort(char arr[], int left, int right);
int partition(char arr[], int left, int right);
void swap(char* a, char* b);
void print_sorted_string(char arr[], int len);
int main() {
char str[MAX_LEN + 1];
int len;
printf("Enter a string (maximum length %d): ", MAX_LEN);
if (fgets(str, sizeof(str), stdin) == NULL) {
printf("Invalid input. Please enter a string.\n");
return 1;
}
len = strlen(str);
if (len > 0 && str[len - 1] == '\n') { // 去掉fgets函数自动添加的换行符
str[--len] = '\0';
}
if (len == 0) {
printf("No valid input.\n");
return 1;
}
if (len > MAX_LEN) {
printf("Input string is too long. Please enter a shorter string.\n");
return 1;
}
quick_sort(str, 0, len - 1);
print_sorted_string(str, len);
return 0;
}
void quick_sort(char arr[], int left, int right) {
if (left |