例如对于如下数组:
int a[3][4]={{27,12,23,50},{37,2,56,46},{-12,-34,56,8}};
编程要求通过两层循环(一次遍历所有元素),找出所有最大值元素及其它们
的位置。最后输出它们。仍以上面数组为例, 输出如下:
max = 56,row = 1,column = 2
max = 56,row = 2,column = 2
#include <iostream>
using namespace std;
int main(void)
{
int a[3][4]={{27,12,23,50},{37,2,56,46},{-12,-34,56,8}};
int max=a[0][0];
int row,column;
//先通过这个循环找到最大值
for(int i=0;i<3;i++)
for(int j=0;j<4;j++)
{
if(max<a[i][j])
{
max=a[i][j];
}
}
// 再来输出下标
for(int i=0;i<3;i++)
for(int j=0;j<4;j++)
{
if(max==a[i][j])
{
row=i;
column=j;
printf("max=%d,row=%d,column=%d\n",max,row,column);
}
}
return 0;
}
你只需要通过循环记录最大值的行列号就可以了
#include <iostream>
using namespace std;
int main()
{
int a[3][4]={{27,12,23,50},{37,2,56,46},{-12,-34,56,8}};
int maxi=0,maxj=0,mini=0,minj=0;
for(int i=0;i<3;i++)
for(int j=0;j<4;j++)
{
if(a[i][j] > a[maxi][maxj])
{
maxi = i;
maxj = j;
}
if(a[i][j] < a[mini][minj])
{
mini = i;
minj = j;
}
}
cout<<"max="<<a[maxi][maxj]<<",row="maxi<<",column="<<maxj<<endl;
cout<<"min="<<a[mini][minj]<<",row="mini<<",column="<<minj<<endl;
return 0;
}