C语言指针写程序(2)将一个5×5的矩阵(二维数组)中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下依次从小到大存放),写一个函数实视之,用main函数调用.
时间: 2023-06-24 09:07:55 浏览: 144
以下是实现该功能的C语言代码:
```c
#include <stdio.h>
void findMinMax(int arr[][5], int *max, int *min) {
*max = arr[0][0];
*min = arr[0][0];
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
if (arr[i][j] > *max) {
*max = arr[i][j];
}
if (arr[i][j] < *min) {
*min = arr[i][j];
}
}
}
}
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
void sort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
if (arr[i] > arr[j]) {
swap(&arr[i], &arr[j]);
}
}
}
}
void printMatrix(int arr[][5]) {
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
}
void updateMatrix(int arr[][5]) {
int max, min;
findMinMax(arr, &max, &min);
int minArr[4] = {min, min, min, min};
sort(minArr, 4);
arr[2][2] = max;
arr[0][0] = minArr[0];
arr[0][4] = minArr[1];
arr[4][0] = minArr[2];
arr[4][4] = minArr[3];
}
int main() {
int arr[5][5] = {{9, 7, 4, 5, 6},
{1, 2, 3, 4, 5},
{6, 5, 4, 3, 2},
{7, 8, 9, 1, 2},
{3, 2, 1, 5, 4}};
printf("Original Matrix:\n");
printMatrix(arr);
updateMatrix(arr);
printf("\nUpdated Matrix:\n");
printMatrix(arr);
return 0;
}
```
该程序中的`findMinMax`函数用于查找矩阵中的最大值和最小值,`swap`函数用于交换两个整数的值,`sort`函数用于对一个整数数组进行排序,`printMatrix`函数用于打印矩阵,`updateMatrix`函数用于更新矩阵,将最大值放在中心,四个角分别放四个最小值。在`main`函数中,首先打印原始矩阵,然后调用`updateMatrix`函数更新矩阵,最后打印更新后的矩阵。
阅读全文