输入一个整型数组成的 n×m 矩阵,输出其中的最大值、最小值,同时输出两个值的下标。如果有多个最大值或最小值,则输出行下标最小且列下标最小的。
输入格式:
第一行包含两个正整数 n 和 m,且满足 1≤n≤10, 1≤m≤10。
从第二行开始,共有 n 行 m 列用空格隔开的整数。
输出格式:
分别输出矩阵元素最大值及其下标、矩阵元素最小值及其下标。
输入样例:
3 5
57 30 66 41 98
11 93 54 62 31
49 87 71 70 37
输出样例:
max=98 row=0 col=4
min=11 row=1 col=0
直接在输入过程中就做判断和记录,可以这么实现:
#include <stdio.h>
int main()
{
int row, col;
scanf("%d", &row);
scanf("%d", &col);
int max, min;
int tmp;
int i, j;
int x1 = 0, x2 = 0, y1 = 0, y2 = 0;
for (i = 0; i < row; i++)
{
for (j = 0; j < col; j++)
{
scanf("%d", &tmp);
if (i == 0 && j == 0)
{
max = min = tmp;
continue;
}
if (tmp > max)
{
max = tmp;
x1 = i;
y1 = j;
}
if (tmp < min)
{
min = tmp;
x2 = i;
y2 = j;
}
}
}
printf("max=%d row=%d col=%d\n", max, x1, y1);
printf("min=%d row=%d col=%d\n", min, x2, y2);
return 0;
}
如果对你有用,望采纳。
#include<stdio.h>
int main(void)
{
int i,j,max,min;
int n,m;
scanf("%d %d",&n,&m);
int a[n][m];
int x,y;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
scanf("%d",&a[i][j]);
}
}
max=a[0][0],x=0,y=0;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(max<a[i][j])
{
max=a[i][j];
x=i,y=j;
}
}
}
printf("min=%d row=%d col=%d\n",max,x,y);
min=a[0][0],x=0,y=0;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(min>a[i][j])
{
min=a[i][j];
x=i,y=j;
}
}
}
printf("min=%d row=%d col=%d",min,x,y);
return 0;
}