C++一道入门的循环数组题目

例如对于如下数组:
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

img



#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;
}