PTA. 7-2 最值互换 (10 分)

给定一个n行m列的矩阵,请找出最大数与最小数并交换它们的位置。若最大或最小数有多个,以最前面出现者为准(矩阵以行优先的顺序存放,请参照样例)。

输入格式:
测试数据有多组,处理到文件尾。每组测试数据的第一行输入2个整数n,m(1<n,m<20),接下来输入n行数据,每行m个整数。

输出格式:
对于每组测试数据,输出处理完毕的矩阵(共n行,每行m个整数),每行中每两个数据之间留一个空格。具体参看输出样例。

输入样例:
3 3
4 9 1
3 5 7
8 1 9
输出样例:
4 1 9
3 5 7
8 1 9

😭😭😭孩子不会了,一点思路也没有,呜呜呜,救救孩子吧


 
#include <stdio.h>
int main() { 
    int n,m;
    int a[25][25];
    int maxi,maxj,mini,minj;
    while(scanf("%d %d",&n,&m)!=EOF)
    {
    
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            scanf("%d",&a[i][j]);
            if(i==0&&j==0){
                maxi=i;
                mini=i;
                maxj=j;
                minj=j;
            }
            else{
                if(a[i][j]>a[maxi][maxj]){
                    maxi=i;
                    maxj=j;
                }
                if(a[i][j]<a[mini][minj]){
                    mini=i;
                    minj=j;
                }
            }
        }
    }
    int tmp;
    tmp=a[maxi][maxj];
    a[maxi][maxj]=a[mini][minj];
    a[mini][minj]=tmp;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            printf("%d",a[i][j]);
            if(j!=m-1){
                printf(" ");
            }
        }
        printf("\n");
    }
    }
    return 0;
}

先遍历一遍矩阵找出最大值和最小值,记录他们的位置。然后交换俩位置里的数值。