然后在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阶方阵主对角线外都是零元素。
参考资料来源:百度百科-二维数组