不使用标准库函数,用C语言创建一个5*5的二维数组,并将它写入一个文件中。 在另一个程序中,从这个文件读取二维数组,并排序,排序后再次写入文件中
时间: 2024-03-14 15:46:26 浏览: 17
好的,我来解答您的问题。
首先是创建并写入二维数组的程序:
```c
#include <stdio.h>
#define ROW_SIZE 5
#define COL_SIZE 5
int main() {
// 创建 5*5 的二维数组
int arr[ROW_SIZE][COL_SIZE] = {{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15},
{16, 17, 18, 19, 20},
{21, 22, 23, 24, 25}};
// 打开文件,以写入方式写入
FILE *file = fopen("array.txt", "w");
// 写入二维数组
for (int i = 0; i < ROW_SIZE; i++) {
for (int j = 0; j < COL_SIZE; j++) {
fprintf(file, "%d ", arr[i][j]);
}
fprintf(file, "\n"); // 换行
}
// 关闭文件
fclose(file);
return 0;
}
```
上面的代码中,我们先创建了一个 5*5 的二维数组,并将其写入文件 "array.txt" 中。我们使用了 `fopen()` 函数打开文件,并使用 `fprintf()` 函数将数组内容写入文件。最后使用 `fclose()` 函数关闭文件。
接下来是读取并排序二维数组的程序:
```c
#include <stdio.h>
#define ROW_SIZE 5
#define COL_SIZE 5
int main() {
// 打开文件,以读取方式读取
FILE *file = fopen("array.txt", "r");
// 读取二维数组
int arr[ROW_SIZE][COL_SIZE];
for (int i = 0; i < ROW_SIZE; i++) {
for (int j = 0; j < COL_SIZE; j++) {
fscanf(file, "%d", &arr[i][j]);
}
}
// 对二维数组进行排序
for (int i = 0; i < ROW_SIZE; i++) {
for (int j = 0; j < COL_SIZE; j++) {
for (int k = j + 1; k < COL_SIZE; k++) {
if (arr[i][j] > arr[i][k]) {
int temp = arr[i][j];
arr[i][j] = arr[i][k];
arr[i][k] = temp;
}
}
}
}
// 关闭文件
fclose(file);
// 打开文件,以写入方式写入
file = fopen("sorted_array.txt", "w");
// 写入排序后的二维数组
for (int i = 0; i < ROW_SIZE; i++) {
for (int j = 0; j < COL_SIZE; j++) {
fprintf(file, "%d ", arr[i][j]);
}
fprintf(file, "\n"); // 换行
}
// 关闭文件
fclose(file);
return 0;
}
```
在这个程序中,我们首先打开文件 "array.txt" 并读取二维数组。然后对数组进行排序,这里我们使用了冒泡排序算法。最后将排序后的数组写入文件 "sorted_array.txt" 中。
需要注意的是,我们在第一个程序中写入的二维数组是按照行优先顺序写入文件的,所以在第二个程序中也需要按照行优先顺序读取数组元素。
希望这个回答能够帮到您,如果您还有其他问题,请随时提出。