没啥思路,希望给点解题思路

输入一个整型数组成的 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;
}