求解答,等。非常感谢。

c语言 交换二维数组最大值最小值的行数位置,列数不改变,例如最大值a[2][1]最小值a[3][2]交换后最大值a[3][1],最小值a[2][2]。

列数不一样怎么交换行?

img

#include<stdio.h>
#include<stdlib.h>
int main()
{

    printf("请输入N(N<=30):");
    int t[30][30]= {0};
    int N,i,j,k,sum=0;
    scanf("%d",&N);
    printf("原数组:\n");
    for(i=0; i<N; i++)
    {
        for(j=0; j<N; j++)
        {
            t[i][j]=rand()%1000;
            printf("%4d",t[i][j]);
        }
        printf("\n");
    }
    int min=t[0][0], max=t[0][0]; 
    int p1=0,p2=0,p3=0,p4=0;
     for(i=0; i<N; i++)
        for(j=0; j<N; j++)
        {
            if(max<t[i][j])
            {
                max=t[i][j];
                p1=i;p2=j;
            }
               if(min>t[i][j])
            {
                min=t[i][j];
                p3=i;p4=j;
            }
        }
    printf("最大值t[%d][%d]:%d  最小值t[%d][%d]:%d\n",p1,p2,max,p3,p4,min);
    int tem=t[p1][p2];
    t[p1][p2]=t[p3][p4];
    t[p3][p4]=tem;
    printf("交换二最大值最小值的行数位置后:\n");
    for(i=0; i<N; i++)
    {
        for(j=0; j<N; j++)
        {
             printf("%4d",t[i][j]);
        }
        printf("\n");
    }
        
    return 0;
}