二维数组行指针找二维数组每一行的最大值
时间: 2023-09-09 11:12:05 浏览: 119
好的,我明白了您的要求。针对您的问题,您可以通过以下代码来实现:
```c
int max_in_row(int *row, int cols){
int max_value = row[0];
for(int i=1;i<cols;i++){
if(row[i] > max_value){
max_value = row[i];
}
}
return max_value;
}
void find_max_in_matrix(int **matrix, int rows, int cols, int *max_values){
for(int i=0;i<rows;i++){
max_values[i] = max_in_row(matrix[i], cols);
}
}
```
这段代码会先定义一个名为`max_in_row`的函数,它会找出一个一维数组中的最大值。随后,`find_max_in_matrix`函数会遍历传入的二维数组,调用`max_in_row`函数来找出每一行的最大值,并将这些最大值保存在一个名为`max_values`的一维数组中。
希望这个回答可以帮助到您。
相关问题
输入一个m行n列(m,n<=6)的二维数组,输出每行的最大值 C语言二维数组和指针
```
#include <stdio.h>
void maxInRows(int arr[][6], int m, int n) {
for (int i = 0; i < m; i++) {
int max = arr[i][0];
for (int j = 1; j < n; j++) {
if (arr[i][j] > max) {
max = arr[i][j];
}
}
printf("Row %d max value: %d\n", i+1, max);
}
}
int main() {
int arr[6][6] = {
{1, 2, 3, 4, 5, 6},
{7, 8, 9, 10, 11, 12},
{13, 14, 15, 16, 17, 18},
{19, 20, 21, 22, 23, 24},
{25, 26, 27, 28, 29, 30},
{31, 32, 33, 34, 35, 36}
};
maxInRows(arr, 6, 6);
return 0;
}
```
编写一程序,从一个3行4列二维数组中找出每行的最大数及所在的行和列,并将最大值及所在行列值打印出来。要求将查找和打印的功能编一个函数,二维数组的输入在主函数中进行,并将二维数组通过指针参数传递的方式由主函数传到子函数。
好的,下面是对应的 C++ 代码实现:
```cpp
#include <iostream>
using namespace std;
void findMax(int (*arr)[4], int row, int col) {
for(int i = 0; i < row; i++) {
int max = arr[i][0];
int maxRow = i, maxCol = 0;
for(int j = 1; j < col; j++) {
if(arr[i][j] > max) {
max = arr[i][j];
maxCol = j;
}
}
cout << "第" << i+1 << "行的最大值是" << max << ",所在的位置是(" << i+1 << "," << maxCol+1 << ")" << endl;
}
}
int main() {
int arr[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
findMax(arr, 3, 4);
return 0;
}
```
在主函数中,我们定义了一个 3 行 4 列的二维数组 `arr`,然后将其作为参数传递给 `findMax` 函数。`findMax` 函数接受一个指向二维数组的指针 `arr`,以及数组的行数 `row` 和列数 `col`。在函数中,我们使用两个循环来遍历二维数组中的所有元素,找到每一行的最大值及其所在的位置,并将其打印输出。注意,在二维数组中,行和列的编号都是从 0 开始的,但是题目要求输出时行和列的编号都应该从 1 开始,因此我们在输出时需要将行和列的编号加 1。
阅读全文