c语言二维数组传址问题

#include "stdio.h"
#include "stdlib.h"
#include "time.h"
void max(int a[ ][6]);
void main()
{ int a[5][6],i,j;
srand(time(NULL));
for(i=0;i<5;i++)
for(j=0;j<6;j++)
a[i][j]=rand()%100;
for(i=0;i<5;i++)
{for(j=0;j<6;j++)
printf("%d\t",a[i][j]);
printf("\n");}
max(a);
}
void max(int a[ ][6])
{
int i,j,m,n=0;
for(i=0;i<5;i++)
{ m=a[i][0];
for(j=0;j<5;j++)
{
if(m<a[j+1])
{m=a[j+1];
n=j+1;}}
printf("最大值为%d,下标为%d\n",m,n);}

}
不知道为什么编译不通过,总是说函数max的参数不够。

第1个回答  2014-12-12
void max(int a[ ][6])
{
int i,j,m,n=0;
for(i=0;i<5;i++)
{ m=a[i][0];
for(j=0;j<5;j++)
{
//if(m<a[j+1])
//二维数组a[j+1]是表示第j+1行的首地址,不是数
if(m<a[i][j+1])
{m=a[i][j+1];
n=j+1;}}
printf("最大值为%d,下标为%d\n",m,n);}

}追问

这个问题解决后 还是不能运行。

追答

我在VC6.0还有VS2010都试了的,改了之后没有问题啊

第2个回答  推荐于2016-08-22
//在注释的地方做了修改
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
void max(int a[ ][6]);
void main()
{ int a[5][6],i,j;
  srand(time(NULL));
  for(i=0;i<5;i++)
    for(j=0;j<6;j++)
     a[i][j]=rand()%100;
  for(i=0;i<5;i++)
    {for(j=0;j<6;j++)
     printf("%d\t",a[i][j]);
     printf("\n");}
    max(a);
}
void max(int a[ ][6])
{
int i,j,m,n=0;
    for(i=0;i<5;i++)
      { m=a[i][0];
        for(j=0;j<5;j++)
           {
            if(m<a[i][j+1])//修改
              {m=a[i][j+1];//修改
               n=j+1;}}
 printf("最大值为%d,下标为%d\n",m,n);}
  
 }

本回答被提问者和网友采纳
第3个回答  2014-12-12
先把两个维度都写死看看吧。追问

不好意思哈,刚开始学C语言,不太懂维度写死是什么意思,是指函数定义写a[5][6],好像还是不行

追答

嗯,你看别人的回答,其实你的是对的,两个维度只要写第二个。

相似回答