用C语言实现五个随机字符串排序
时间: 2024-11-04 14:14:13 浏览: 15
在C语言中,你可以使用`stdlib.h`库中的`rand()`函数生成随机数,并结合字符数组来创建随机字符串。然后,为了对字符串进行排序,可以先将它们转换为字符指针数组,利用标准库提供的字符串比较函数如`strcmp()`,再通过选择排序、冒泡排序等算法完成排序。这里我将以冒泡排序为例,给出一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
// 生成随机字符串的辅助函数
char* random_string(int length) {
char chars[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
int strlen = strlen(chars);
char* str = malloc(length * sizeof(char));
for (int i = 0; i < length; ++i) {
str[i] = chars[rand() % strlen];
}
str[length] = '\0';
return str;
}
void bubble_sort(char** arr, int n) {
for (int i = 0; i < n - 1; ++i) {
for (int j = 0; j < n - 1 - i; ++j) {
if (strcmp(arr[j], arr[j + 1]) > 0) { // 比较字符串
char* temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
srand(time(0)); // 设置随机种子,保证每次运行结果不同
const int num_strings = 5;
char** strings = malloc(num_strings * sizeof(char*));
for (int i = 0; i < num_strings; ++i) {
strings[i] = random_string(10); // 生成长度为10的随机字符串
}
printf("Before sorting:\n");
for (int i = 0; i < num_strings; ++i) {
printf("%s\n", strings[i]);
}
bubble_sort(strings, num_strings);
printf("\nAfter sorting:\n");
for (int i = 0; i < num_strings; ++i) {
printf("%s\n", strings[i]);
}
// 释放内存
for (int i = 0; i < num_strings; ++i) {
free(strings[i]);
}
free(strings);
return 0;
}
阅读全文