c语言中创建一个5*5的二维数组,并将它写入一个文件中。 在另一个程序中,从这个文件读取二维数组,并排序,排序后再次写入文件中
时间: 2024-02-09 22:09:15 浏览: 64
好的,下面是C语言的解答:
首先,创建一个5*5的二维数组并将其写入文件中,你可以使用以下代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ROW 5
#define COL 5
int main() {
int arr[ROW][COL];
srand(time(NULL)); // 随机数种子,用于生成随机数
FILE* fp = fopen("array.txt", "w");
if (fp != NULL) {
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
arr[i][j] = rand() % 100; // 生成0到99之间的随机数
fprintf(fp, "%d ", arr[i][j]); // 写入文件
}
fprintf(fp, "\n");
}
fclose(fp);
}
return 0;
}
```
上述代码中,我们使用了C语言中的文件操作函数,打开文件并将随机生成的二维数组写入文件array.txt中。
接下来,我们需要从文件中读取二维数组,并且排序。你可以使用以下代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define ROW 5
#define COL 5
int cmp(const void* a, const void* b) {
return *(int*)a - *(int*)b; // 升序排序
}
int main() {
int arr[ROW][COL];
FILE* fp = fopen("array.txt", "r");
if (fp != NULL) {
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
fscanf(fp, "%d", &arr[i][j]); // 从文件中读取二维数组
}
}
fclose(fp);
}
// 对数组进行排序
int len = ROW * COL;
int* arr_sorted = (int*)malloc(sizeof(int) * len);
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
arr_sorted[i * COL + j] = arr[i][j]; // 将二维数组转换为一维数组
}
}
qsort(arr_sorted, len, sizeof(int), cmp); // 排序
fp = fopen("array_sorted.txt", "w");
if (fp != NULL) {
for (int i = 0; i < len; i++) {
fprintf(fp, "%d ", arr_sorted[i]); // 将排序后的数组写入文件中
}
fclose(fp);
}
free(arr_sorted); // 释放内存
return 0;
}
```
上述代码中,我们首先从文件中读取二维数组,并将其存储到二维数组arr中。然后,我们将二维数组转化为一维数组,并使用C语言标准库函数qsort对其进行排序。最后,我们将排序后的数组写入文件array_sorted.txt中。
希望能够帮助到你!
阅读全文