注册 登录
编程论坛 C语言论坛

编写自定义函数输出一个N行M列二维数组的最大元素及其所在的行,列

其名为鲲 发布于 2021-04-26 21:06, 1851 次点击
#include<stdio.h>
int main()
{  int i,j,N,M,a[N][M];
   printf("请输入N行M列二维数组\n");
   scanf("%d%d",&N,&M);
   for(i=0;i<N;i++)
   { for(j=0;j<N;j++)
     {scanf("%d",&a[i][j]);    }}
     int max(int a[N][M]);}
int max(int c[N][M])
{   int i,j,t,q,w;
    t=c[0][0];
    for(i=0;i<N;i++)
    for(j=0;j<M;j++)
    { if(c[i][j]>=t)
    { t=c[i][j];
       q=i;
       w=j;}
      else
      { q=q;
       w=w;}       }
    printf("该数组中最大的元素是:%d\n",t);
    printf("该二维数组中最大元素在%d行%d列\n",q+1,w+1) ;   
    }
4 回复
#2
其名为鲲2021-04-26 21:26
有人知道这个程序错哪了吗?
#3
apull2021-04-27 00:21
M,N没有初始化就定义数组a
2个for里都是N
2个max都是声明,调用不用写类型,
数组做参数用数组名

程序代码:

#include <stdio.h>
#include <stdlib.h>
#include <limits.h>

int main()
{
            int col,row,max=INT_MIN,N,M;
            printf("请输入N行M列二维数组\n");
            scanf("%d%d",&N,&M);
            int *p,*a=(int *)malloc(sizeof(int)*M*N);
            p=a;
            for(int i=0;i<N*M;i++,p++)
            {
                scanf("%d",p);
                if(*p>max)
                {
                    row=i/M+1;
                    col=i%M+1;
                    max=*p;
                }
            }
            printf("该数组中最大的元素是:%d\n",max);
            printf("该二维数组中最大元素在%d行%d列\n",row,col);
            
            return 0;
}





[此贴子已经被作者于2021-4-27 00:22编辑过]

#4
其名为鲲2021-04-28 19:50
回复 3楼 apull
像这种应该怎样定义N  M才正确呢?就运行不了
#include<stdio.h>
int main()
{  void put(int c[N][M]);
   int N,M;
   printf("请输入N和M:");
   scanf("%d%d",&N,&M);
   printf("请输入N行M列的二维数组:\n");
   int i,j,a[N][M];
   for(i=0;i<N;i++)
   { for(j=0;j<M;j++)
     {scanf("%d",&a[i][j]);    }}
      put(a);  }
void put(int c[N][M])
{   int i,j,t,q,w;
    t=c[0][0];
    for(i=0;i<N;i++)
    for(j=0;j<M;j++)
    { if(c[i][j]>=t)
    { t=c[i][j];   q=i;  w=j;}
    else{          q=q;  w=w;}       }
    printf("该数组中最大的元素是:%d\n",t);
    printf("该二维数组中最大元素在%d行%d列\n",q+1,w+1) ;    }
#5
apull2021-04-28 21:06
数组大小未知,需通过变量定义的要动态申请内存空间。要是提前定义用#define N 20 或者直接int a[20][5]之类的办法
1