本题要求编写C程序,将给定字符串中的字符,按照ASCII码顺序从小到大排序后输出。 输入格式: 输入是一个以回车结束的非空字符串(少于80个字符)。 输出格式: 输出排序后的结果字符串。
时间: 2024-12-11 09:25:08 浏览: 21
要编写一个C程序来完成这个任务,你可以使用以下步骤:
```c
#include <stdio.h>
#include <string.h>
// 函数声明用于比较ASCII值
int compare(const char *a, const char *b);
int main() {
char str[90]; // 预留一些空间防止溢出
fgets(str, sizeof(str), stdin); // 从标准输入读取字符串,包括回车
// 删除字符串末尾的换行符
if (str[strlen(str) - 1] == '\n') {
str[strlen(str) - 1] = '\0';
}
// 使用qsort对字符串中的字符进行排序
char sorted[strlen(str)];
strncpy(sorted, str, strlen(str));
qsort(sorted, strlen(str), sizeof(char), compare);
printf("排序后的字符串: %s\n", sorted);
return 0;
}
// 比较函数,用于qsort排序
int compare(const char *a, const char *b) {
return *(unsigned char*)a - *(unsigned char*)b; // 按ASCII值进行比较
}
```
在这个程序中,我们首先定义了一个`compare`函数来比较两个字符的ASCII值。然后,在`main`函数中,我们从用户那里获取输入,并使用`fgets`读入字符串。接着,我们使用`qsort`函数,传入我们的字符串以及自定义的`compare`函数来进行排序。最后,打印出排序后的字符串。
阅读全文