使用指针实现找出一个二维数组中每行的最大值,并存储到一个一维数组中。
时间: 2024-12-16 07:31:16 浏览: 15
要使用指针实现这个功能,我们可以遍历二维数组中的每个元素,同时用一个指向一维数组的指针来跟踪当前行的最大值。以下是一个简单的示例代码:
```c
#include <stdio.h>
// 假设我们的二维数组名为matrix,类型为int,行数为rows,列数为cols
int matrix[rows][cols];
int row_maxs[rows]; // 用于存放每行最大值的一维数组
// 函数声明,返回值类型为void,参数为指向二维数组的指针、行数和列数
void findRowMaxes(int (*matrix_ptr)[cols], int rows, int cols, int *row_maxs);
int main() {
// 初始化矩阵和一维数组(这里省略实际初始化过程)
findRowMaxes(matrix, rows, cols, row_maxs);
// 输出结果
for (int i = 0; i < rows; i++) {
printf("Row %d max value is: %d\n", i+1, row_maxs[i]);
}
return 0;
}
// 找出并保存每行最大值的函数
void findRowMaxes(int (*matrix_ptr)[cols], int rows, int cols, int *row_maxs) {
for (int i = 0; i < rows; i++) { // 遍历每一行
int current_max = matrix_ptr[i][0]; // 将第一列视为初始最大值
for (int j = 1; j < cols; j++) { // 检查其他列
if (matrix_ptr[i][j] > current_max) {
current_max = matrix_ptr[i][j];
}
}
row_maxs[i] = current_max; // 将当前行的最大值存入一维数组
}
}
```
在这个例子中,`findRowMaxes` 函数接收一个指向二维数组的指针、行数、列数以及一维数组的指针。它使用两个嵌套循环,外层遍历行,内层比较每一列的值找到最大值。找到最大值后,将其存储在一维数组 `row_maxs` 的相应位置。
阅读全文