从键盘键入一个3行4列数组,要求输出其中值最大的那个元素值,以及所在的行号和列号。

#include<stdio.h>
int main()
{
int i,j,row=0,colum=0,max;
int a[3][4];
printf("请输入一个3行4列的数组:");
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
}

max=a[0][0];
for(i=0;i<3;i++)
{
for(j=0;j<4;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);
return 0;
}

源程序代码以及算法解释如下:

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

int main()

{

 int i, j;//定义

 int hang = 0;//行

 int lie = 0;//列

 int Max;//最大值

 int number[3][4];//数组变量

 printf("请输入一个3行4列的数组:");//文字提示

 for (i = 0; i < 3; i++)//行遍历

 {

  for (j = 0; j < 4; j++)//列遍历

   scanf("%d", &number[i][j]);//输入

 }

 Max = number[0][0];//先放一个数字用于比较

 for (i = 0; i < 3; i++)//行遍历

 {

  for (j = 0; j < 4; j++)//列遍历

   if (number[i][j] > Max)//找到更大的就重新复制

   {

    Max = number[i][j];//取出更大值

    hang = i;//行坐标取出

    lie = j;//列坐标取出

   }

 }

 printf("max=%d\nrow=%d\ncolum=%d\n", Max, hang, lie);

 return 0;

}

程序运行结果如下:



扩展资料:

其他实现方式:

#include<stdio.h>

int main() {

 int i, j;

 int max, row, colum;

 int a[3][4] = { { 1, 2, 3, 4 }, { 9, 8, 7, 6 }, { -10, 10, -5, 2 } };

 max = a[0][0];

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

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

   if (max < a[i][j]) {

    max = a[i][j];

    row = i;

    colum = j;

   }

 printf("max=%d row=%d colum=%d\n", max, row, colum);

 return 0;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-07-17

以打擂台的思想,先假定首元素是最大值的元素,再扫描整个数组,如有更大的,就记下其下标位置,并以此为当前最大的元素。等到整个数组扫描完成,数组中最大的元素所在位置就已确定,最大值也就随之确定。

#include<stdio.h> 

int main() 

{int i,j,maxi,maxj,a[3][4];

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

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

scanf("%d",&a[i][j]); //读入数据 

maxi=maxj=0; //假定首元素是最大值

for(i=0;i<3;i++) //扫描整个数组

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

if(a[i][j]>a[maxi][maxj]) //如有更大的

{maxi=i; //就记下其下标位置

maxj=j;

}

printf("最大值是%d\n等号=%d\n列号=%d\n",a[maxi][maxj],maxi,maxj);

return 0;

}

第2个回答  2015-08-16
#include<stdio.h>
int main()
{
    int i,j,row=0,colum=0,max;
    int a[3][4];
    printf("请输入一个3行4列的数组:\n");
    for(i=0;i<3;i++)
    {
        for(j=0;j<4;j++)
            scanf("%d",&a[i][j]);
    }
    max=a[0][0];
    for(i=0;i<3;i++)
    {
        for(j=0;j<4;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);
    return 0;
}

本回答被提问者和网友采纳
第3个回答  2015-08-16
把row=i;和colum=j;删除,把max=a[i][j];改写成max=a[row=i][colum=j];就可以了……
相似回答