求二维数组中最大元素及其所在的行和列

2024-12-02 17:48:01
推荐回答(3个)
回答1:

程式如下:

#include     //定义头文件

void main()               //主函数

{

int i,j,row = 0 ,colum = 0,max;                            //定义整型的i,j,定义行列及最大值

int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};        //定义一个二维数组

max = a[0][0];

for(i=0;i<=2;i++)                               //利用for进行循环

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

if(a[i][j]>max)                                             //进入循环体,开始循环

{

max = a[i][j];                                      //定义最大值的数组

row = i;                                             //提取出行

colum = j;                                      //提取出列

}

printf("max=%d,/nrow = %d,/ncolum = %d/n",max,row,colum);           //结束输出结果

}

运行结果如下:

max=10,

nrow = 2,

ncolum = 1

扩展资料

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

LOC(a[i][j]) = LOC(a[p][q]) + ((i − p) * n + (j − q)) * t

按“列优先顺序”存储时,地址计算为:

LOC(a[i][j]) = LOC(a[p][q]) + ((j − q) * m + (i − p)) * t

存放该数组至少需要的单元数为(m-p+1) * (n-q+1) * t 个字节

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

回答2:

Private Sub Command1_Click()
Dim a() As Integer
m = InputBox("请输入行数m:")
n = InputBox("请输入列数n:")
ReDim a(m, n)
For i = 1 To m
For j = 1 To n
a(i, j) = InputBox("请输入a(" & i & "," & j & ")")
Print a(i, j);
Next j
Print
Next i
Max = a(1, 1)
For i = 1 To m
For j = 1 To n
If Max < a(i, j) Then
Max = a(i, j)
x = i
y = j
End If
Next j
Next i
Print
Print "最大值为" & Max & "在第" & x & "行" & y & "列"
End Sub

回答3:

#include
int main()
{
int m,n,i,j;
int a[21][21],max;
int b[21],c[21];
int p=0,d=0;
scanf("%d%d",&m,&n);
for(i=0;i<=m-1;i++)
for(j=0;j<=n-1;j++)
scanf("%d",&a[i][j]);
max=a[0][0];
for(i=0;i<=m-1;i++)
for(j=0;j<=n-1;j++)
{
if(a[i][j]>max) max=a[i][j];
}
for(i=m-1;i>=0;i--)
for(j=n-1;j>=0;j--)
{
if(a[i][j]==max)
{
b[p++]=i+1;
c[d++]=j+1;
}
}
printf("%d\n",max);
for(i=0;i<=p-1;i++)
printf("%d %d\n",b[i],c[i]);
return 0;
}
//用的C语言,第一先找到最大值,第二把各个下标记录下来