问题概要
给定 n 个字符串,请对 n 个字符串按照字典序排列
对应牛客网HJ14 字符串排序
思路分析
该问题思路相对来说比较简单:
- 使用数组接收用户输入的字符串
- 使用qsort方法对数组进行排序
- 输出排序后的数组
代码实现
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_STRING_LENGTH 101 // 字符串最大长度
// 字符串比较函数
int string_compare(const void *a, const void *b) {
return strcmp(*(const char **)a, *(const char **)b);
}
int main() {
int num = 0, i;
scanf("%d", &num);
// 动态分配一个字符串指针数组
char **strings = (char **)malloc(num * sizeof(char *));
for (i = 0; i < num; i++) {
strings[i] = (char *)malloc(MAX_STRING_LENGTH * sizeof(char));
scanf("%s", strings[i]);
}
// 使用qsort进行排序
qsort(strings, num, sizeof(char *), string_compare);
// 打印排序后的字符串
for (i = 0; i < num; i++) {
printf("%s\n", strings[i]);
free(strings[i]);// 释放每个字符串的内存
}
free(strings); // 释放字符串数组的内存
return 0;
}
注
因为该问题相对来说比较简单,所以也不在此过多赘述了,希望这篇文章,能起到些微参考作用。
感谢阅读,也祝大家开心!