二维数组求每行最大元素,并保存数组中

编写函数,求出二维数组中每行的最大元素,并保存到数组中。在main函数中验证。要求:二维数组的行数,列数,数组元素均在main函数中由键盘输入。

那就是指针的指针建数组,双循环遍历就行了

#include<stdio.h>
#include <stdlib.h>
using namespace std;

/*
编写函数,求出二维数组中每行的最大元素,并保存到数组中。
在main函数中验证。要求:二维数组的行数,列数,数组元素均在main函数中由键盘输入
*/

void getMax(int **p, int n,int m,int *pMax)
{
	for (int i = 0; i < n; i++)
	{
		*(pMax + i) = p[i][0];
		for (int j = 1; j < m; j++)
		{
			if (p[i][j] > *(pMax + i))
				*(pMax + i) = p[i][j];
		}
	}
}

int main()
{
	int n, m,i,j;
	printf("请输入二维数组行数和列数:");
	scanf_s("%d %d", &n,&m);
	int **p = new int*[n];
	for (i = 0; i < n; i++)
    {
		p[i] = new int[m];
        for(j=0;j<m;j++)
            scanf_s("%d",&p[i][j]);
    }
	//
	int *pMax = new int[n];
	getMax(p, n,m,pMax);
	for (i = 0; i < n; i++)
	{
		printf("第%d行的最大值为:%d\n", i + 1, *(pMax + i));
	}
	return 0;
}

 

这个很简单,进行对二维数组的两次循环遍历就可以了!望采纳!

代码如下,如有帮助,请采纳一下,谢谢。

#include <stdio.h>

void fun(double **arr,int m,int n,double *out)
{
	int i,j;
	double max;
	for (i = 0; i < m ;i++)
	{
		max = arr[i][0];
		for (j = 1; j < n; j++)
		{
			if (arr[i][j] > max)
			{
				max = arr[i][j];
			}
		}
		out[i] = max;
	}
}

int main()
{
	int m,n,i,j;
	double **arr;
	printf("请输入行数和列数:");
	scanf("%d %d",&m,&n);

	printf("请输入数据\n");
	arr = new double*[m];
	for (i = 0; i < m; i++)
	{
		arr[i] = new double[n];
		for (j = 0; j < n; j++)
		{
			scanf("%lf",&arr[i][j]);
		}
	}
	double* outArr = new double[m];
	fun(arr,m,n,outArr);
	for (i =0; i < m; i++)
	{
		printf("%g ",outArr[i]);
	}
	for (i = 0; i < m; i++)
	{
		delete[] arr[i];
	}
	delete[] arr;
	delete[] outArr;
	//getchar();
	//getchar();
	return 0;
}

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632