将一个55的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(顺序从左 到右,从上到下顺序依次从小到大存放),写一函数实现之。用main函数调用。 本题要求用行指针实现。 输入格式: 输入一共5行,表示一个5x5的矩阵 输出格式: 输出也是5行,表示一个5x5的矩阵,每个元素用%3d格式输出
时间: 2023-12-10 18:40:49 浏览: 110
以下是实现该功能的代码:
```c
#include <stdio.h>
void max_min(int (*p)[5]) {
int max = p[2][2]; // 中心元素
int min[4]; // 四个角元素
int i, j, k;
// 找出最大元素和最小元素
for (i = 0; i < 5; i++) {
for (j = 0; j < 5; j++) {
if (p[i][j] > max) {
max = p[i][j];
}
}
}
for (k = 0, i = 0; i < 5; i += 4) {
for (j = 0; j < 5; j += 4) {
min[k++] = p[i][j];
}
}
for (i = 0; i < 5; i++) {
for (j = 0; j < 5; j++) {
if (i == 0 && j == 0) {
printf("%3d", min[0]);
} else if (i == 0 && j == 4) {
printf("%3d", min[1]);
} else if (i == 4 && j == 0) {
printf("%3d", min[2]);
} else if (i == 4 && j == 4) {
printf("%3d", min[3]);
} else if (i == 2 && j == 2) {
printf("%3d", max);
} else {
printf("%3d", p[i][j]);
}
}
printf("\n");
}
}
int main() {
int a[5][5];
int i, j;
// 输入矩阵
for (i = 0; i < 5; i++) {
for (j = 0; j < 5; j++) {
scanf("%d", &a[i][j]);
}
}
// 调用函数
max_min(a);
return 0;
}
```
其中,`max_min` 函数用于实现将最大元素和最小元素放在矩阵中心和四个角的功能。该函数接收一个指向 5x5 矩阵的指针作为参数。
首先,我们找出矩阵中的最大元素和最小元素。最大元素可以通过遍历整个矩阵得到,而最小元素则位于矩阵的四个角上,我们可以通过循环遍历四个角来获取它们。
接着,我们遍历整个矩阵,并根据元素的位置输出它们。如果当前元素位于矩阵中心,则输出最大元素;如果当前元素位于矩阵的四个角之一,则输出相应的最小元素;否则,输出原来的元素。
最后,在 `main` 函数中,我们先读入一个 5x5 的矩阵,再调用 `max_min` 函数来对该矩阵进行处理并输出结果。
阅读全文