编写函数求出二维整型数组中元素的最大值及其下标号。

然后在main函数中输入一个二维数组,调用函数求出最大值及其下标号,并输出。

其中:二维数组行数由用户确定(不超过10),列数固定为4列。
我写的这个哪儿错了,求解答
#include<stdio.h>

int main()
{
int n,a[10][4];
int i,j,max,m,x;
int da(int c,int b[10][4]);
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
max=da(n,a);
m=da(n,a);
x=da(n,a);
printf("最大值a[%d][%d]=%d",m,x,max);
}
int da(int c,int b[10][4])
{
int i,j,m=0,x=0,max;
for(i=0;i<c;i++)
{for(j=0;j<4;j++)
if(b[i][j]>b[m][x])
{m=i;
x=j;
max=b[i][j];}}
return m;
return x;
return max;
}

一个函数只能有一个return,后面的return不会被执行。

解决方法可以考虑返回一个指针或者da函数传入一个全局变量的数组,在函数中修改这个数组的值。

#include<stdio.h>

#include<stdlib.h>

void da(int a[][4],int n)

{

int i,j,row=0,col=0,max=a[0][0];

for(i=0;i<n;i++)

for(j=0;j<4;j++)

if(a[i][j]>max)

max=a[i][j];

row=i;

col=j;

printf("最大值:a[%d][%d]=%d\n",row,col,max);

int main()

scanf("%d",&a[i][j]);

da(a,n);

return 0;

}

扩展资料:

二维数组A[m][n],这是一个m行,n列的二维数组。设a[p][q]为A的第一个元素,即二维数组的行下标从p到m+p,列下标从q到n+q,按“行优先顺序”存储时则元素a[i][j]的地址计算。

二维数组本质上是以数组作为数组元素的数组,即“数组的数组”,类型说明符 数组名[常量表达式][常量表达式]。二维数组又称为矩阵,行列数相等的矩阵称为方阵。对称矩阵a[i][j] = a[j][i],对角矩阵:n阶方阵主对角线外都是零元素。

参考资料来源:百度百科-二维数组

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-12-09
一个函数只能有一个return哦,后面的return不会被执行。解决方法可以考虑返回一个指针(这个指针指向构造包含m,x,max的数组)。或者da函数传入一个全局变量的数组,在函数中修改这个数组的值本回答被提问者采纳
第2个回答  2017-12-09
//你的错误太多,给你个新的
#include<stdio.h>
#include<stdlib.h>
void da(int a[][4],int n)
{
int i,j,row=0,col=0,max=a[0][0];

for(i=0;i<n;i++)
for(j=0;j<4;j++)
{
if(a[i][j]>max)
{
max=a[i][j];
row=i;
col=j;
}
}
printf("最大值:a[%d][%d]=%d\n",row,col,max);
}
int main()
{
int i,j,n,a[10][4];

scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
da(a,n);
return 0;
}
第3个回答  2017-12-09

#include<stdio.h>

int main()
{
int n,a[10][4];
int i,j,x,y;
int da(int b[10][4],int c,int *x,int *y);
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
da(a,n,&x,&y);
printf("最大值a[%d][%d]=%d",x,y,a[x][y]);
}
void da(int b[][4],int c,int *x,int *y)
{
int i,j;
*x=*y=0;
for(i=0;i<c;i++)
{for(j=0;j<4;j++)
if(b[i][j]>b[*x][*y])
{*x=i;
*y=j;
}}
}