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