编写函数,求出二维数组中每行的最大元素,并保存到数组中。在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