将一个55的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(顺序从左到右,从上到下顺序依次从小到大存放),写一函数实现之。用main函数调用。本题要求用行指针实现。 输入格式: 输入一共5行,表示一个5×5的矩阵 输出格式: 输出也是5行,表示一个5×5的矩阵,每个元素用%3d格式输出
时间: 2024-02-17 17:59:51 浏览: 69
好的,这个问题我可以回答。以下是一个用行指针实现的函数,可以将一个55的矩阵中最大的元素放在中心,四个角分别放四个最小的元素:
```c++
#include <stdio.h>
void max_min_matrix(int matrix[][5]) {
int max = matrix[0][0], min = matrix[0][0];
int max_row = 0, max_col = 0, min_row = 0, min_col = 0;
// 找出最大值和最小值的位置
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
if (matrix[i][j] > max) {
max = matrix[i][j];
max_row = i;
max_col = j;
}
if (matrix[i][j] < min) {
min = matrix[i][j];
min_row = i;
min_col = j;
}
}
}
// 将最大值放在中心
matrix[2][2] = max;
// 将四个最小值放在四个角
matrix[0][0] = min;
matrix[0][4] = min_col == 4 ? matrix[1][3] : matrix[0][4];
matrix[4][0] = min_row == 4 ? matrix[3][1] : matrix[4][0];
matrix[4][4] = min_row == 4 && min_col == 4 ? matrix[3][3] : matrix[4][4];
// 输出矩阵
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
printf("%3d ", matrix[i][j]);
}
printf("\n");
}
}
int main() {
int matrix[5][5];
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
scanf("%d", &matrix[i][j]);
}
}
max_min_matrix(matrix);
return 0;
}
```
你可以将上面的代码复制到一个 C++ 编译器中运行,输入一个 5x5 的矩阵,就能得到输出结果了。
阅读全文