(2)将一个5X5的矩阵(二维数组)中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下依次从小到大存放),写一函数实现之。用main函数调用(本题是第8章第10题)。
时间: 2024-03-09 14:44:11 浏览: 95
5*5的矩阵中最大的元素放在中心 四个角分别放四个最小的元素
好的,我来帮你解决这个问题。下面是实现这个功能的代码:
```c
#include <stdio.h>
void sort(int *arr, int len)
{
int i, j, temp;
for(i = 0; i < len - 1; i++)
{
for(j = 0; j < len - 1 - i; j++)
{
if(arr[j] > arr[j+1])
{
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
void print_matrix(int matrix[][5], int row, int col)
{
int i, j;
for(i = 0; i < row; i++)
{
for(j = 0; j < col; j++)
{
printf("%d\t", matrix[i][j]);
}
printf("\n");
}
}
void set_matrix(int matrix[][5], int row, int col)
{
int i, j, max_index_i, max_index_j, min_index;
int max, min[4];
// 找到矩阵中最大值的位置
max = matrix[0][0];
max_index_i = max_index_j = 0;
for(i = 0; i < row; i++)
{
for(j = 0; j < col; j++)
{
if(matrix[i][j] > max)
{
max = matrix[i][j];
max_index_i = i;
max_index_j = j;
}
}
}
// 找到矩阵中最小值的位置
min_index = 0;
for(i = 0; i < row; i+=row-1)
{
for(j = 0; j < col; j+=col-1)
{
min[min_index++] = matrix[i][j];
}
}
sort(min, 4);
// 设置矩阵元素
matrix[max_index_i][max_index_j] = max;
matrix[0][0] = min[0];
matrix[0][col-1] = min[1];
matrix[row-1][0] = min[2];
matrix[row-1][col-1] = min[3];
}
int main()
{
int matrix[5][5] = {{5, 4, 3, 2, 1},
{10, 9, 8, 7, 6},
{15, 14, 13, 12, 11},
{20, 19, 18, 17, 16},
{25, 24, 23, 22, 21}};
printf("原始矩阵:\n");
print_matrix(matrix, 5, 5);
set_matrix(matrix, 5, 5);
printf("处理后的矩阵:\n");
print_matrix(matrix, 5, 5);
return 0;
}
```
这段代码中,`set_matrix` 函数用于设置矩阵中的元素,`print_matrix` 函数用于打印矩阵,`sort` 函数用于排序。在 `main` 函数中,首先打印原始矩阵,然后调用 `set_matrix` 函数设置矩阵元素,最后再打印处理后的矩阵。
阅读全文