输入三行每行n个字符串 按由小到大排列 用c编写
时间: 2023-06-26 18:10:28 浏览: 52
以下是一个示例代码,可以实现输入三行每行n个字符串,按照字典序从小到大排序输出:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 100 // 定义字符串最大长度
int cmp(const void *a, const void *b) {
return strcmp(*(const char **)a, *(const char **)b);
}
int main() {
char *str[3][N]; // 用指针数组保存字符串
int n = 0; // 字符串长度
for (int i = 0; i < 3; i++) {
printf("输入第%d行字符串(每行%d个):\n", i + 1, N);
for (int j = 0; j < N; j++) {
str[i][j] = (char *)malloc(N * sizeof(char));
scanf("%s", str[i][j]);
if (strlen(str[i][j]) > n) { // 记录最长的字符串长度
n = strlen(str[i][j]);
}
}
}
for (int i = 0; i < 3; i++) {
qsort(str[i], N, sizeof(char *), cmp); // 使用快速排序算法排序
}
printf("排序后的字符串如下:\n");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < N; j++) {
if (strcmp(str[i][j], "") != 0) { // 遇到空字符串结束打印
printf("%s ", str[i][j]);
} else {
break;
}
}
printf("\n");
}
return 0;
}
```
该代码使用了指针数组来保存字符串,使用了快速排序算法来进行排序,最后按照要求输出排序后的字符串。需要注意的是,代码中默认每行输入100个字符串,若需要更改可以修改`#define N 100`这一行的值。