c语言写一个函数,将一个5×5的整型矩阵中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下顺序依次从小到大存放)。所有的元素调整都需要通过位置的交换实现。在main函数中输入和输出矩阵,通过调用函数来实现矩阵的处理过程
时间: 2024-06-08 14:12:09 浏览: 29
以下是实现该功能的 C 语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define ROW 5
#define COL 5
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
void sort(int arr[], int len) {
for (int i = 0; i < len - 1; i++) {
for (int j = 0; j < len - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
swap(&arr[j], &arr[j + 1]);
}
}
}
}
void matrix_adjustment(int matrix[ROW][COL]) {
int max_r = 0, max_c = 0, min = matrix[0][0], min_r = 0, min_c = 0;
// 找到最大值和最小值
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
if (matrix[i][j] > matrix[max_r][max_c]) {
max_r = i;
max_c = j;
}
if (matrix[i][j] < min) {
min = matrix[i][j];
}
}
}
// 交换最大值和中心点
swap(&matrix[max_r][max_c], &matrix[ROW/2][COL/2]);
// 找到四个角的最小值
for (int i = 0; i <= ROW/2; i += ROW/2) {
for (int j = 0; j <= COL/2; j += COL/2) {
for (int k = i; k <= i + ROW/2; k++) {
for (int l = j; l <= j + COL/2; l++) {
if (matrix[k][l] < min) {
min = matrix[k][l];
min_r = k;
min_c = l;
}
}
}
// 交换最小值和角点
swap(&matrix[min_r][min_c], &matrix[i][j]);
// 重置最小值
min = matrix[0][0];
}
}
// 对四个角的元素排序
int arr[4] = {matrix[0][0], matrix[0][COL-1], matrix[ROW-1][0], matrix[ROW-1][COL-1]};
sort(arr, 4);
matrix[0][0] = arr[0];
matrix[0][COL-1] = arr[1];
matrix[ROW-1][0] = arr[2];
matrix[ROW-1][COL-1] = arr[3];
}
int main() {
int matrix[ROW][COL];
printf("请输入一个5×5的整型矩阵:\n");
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
scanf("%d", &matrix[i][j]);
}
}
matrix_adjustment(matrix);
printf("调整后的矩阵为:\n");
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
```
运行程序后,输入一个 5×5 的整型矩阵,程序会自动进行调整,输出调整后的矩阵。
阅读全文