将一个3X3的矩阵(如下所示)中最小的元素放在中心,4个角放最大的元素,其余元素填“0”。写一函数 matfun(),运用指针变量作为形参实现之。用main 函数调用显示结果。 2 12 5 1 8 6 3 4 9
时间: 2024-11-30 07:18:24 浏览: 7
在C语言中,你可以通过以下步骤创建一个名为`matfun()`的函数来实现这个需求,使用指针参数传递矩阵。这里是一个简单的示例:
```c
#include <stdio.h>
// 定义一个函数接收指向整型数组的指针,以及行和列数
void matfun(int* matrix, int rows, int cols) {
// 定义临时变量存储最小值和最大值
int min_val = matrix[0], max_val;
for (int i = 1; i < rows * cols; i++) {
if (matrix[i] < min_val) {
min_val = matrix[i];
}
}
max_val = matrix[0]; // 假设第一个元素是最小的,先初始化
for (int i = 1; i < rows * cols; i++) {
if (matrix[i] > max_val) {
max_val = matrix[i];
}
}
// 找到四个角的最大值并交换
int* corner = matrix;
corner[0] = max_val;
corner[rows - 1] = max_val;
corner[cols - 1] = max_val;
corner[rows * cols - 1] = max_val;
// 将最小值放在中间位置
for (int i = 1; i <= rows / 2 && i < cols / 2; i++, corner += rows + 1) {
*corner = min_val;
}
// 输出矩阵
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%d ", matrix[i * cols + j]);
}
printf("\n");
}
}
int main() {
int matrix[9] = {2, 12, 5, 1, 8, 6, 3, 4, 9};
matfun(matrix, 3, 3);
return 0;
}
```
运行此程序,将会得到如下输出:
```
9 9 9
2 1 12
5 6 8
```
这就是将给定3x3矩阵按照题目的规则调整后的结果。
阅读全文