标题:编写自定义函数输出一个N行M列二维数组的最大元素及其所在的行,列
只看楼主
其名为鲲
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2021-4-26
结帖率:100%
已结贴  问题点数:20 回复次数:4 
编写自定义函数输出一个N行M列二维数组的最大元素及其所在的行,列
#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) ;   
    }
搜索更多相关主题的帖子: int 最大 元素 for 二维数组 
2021-04-26 21:06
其名为鲲
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2021-4-26
得分:0 
有人知道这个程序错哪了吗?
2021-04-26 21:26
apull
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:三体星系
等 级:版主
威 望:185
帖 子:1404
专家分:8479
注 册:2010-3-16
得分:20 
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编辑过]

2021-04-27 00:21
其名为鲲
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2021-4-26
得分:0 
回复 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) ;    }
2021-04-28 19:50
apull
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:三体星系
等 级:版主
威 望:185
帖 子:1404
专家分:8479
注 册:2010-3-16
得分:0 
数组大小未知,需通过变量定义的要动态申请内存空间。要是提前定义用#define N 20 或者直接int a[20][5]之类的办法
2021-04-28 21:06



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-505585-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.123824 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved