求大家帮解决一下这个C语言数组的问题

产生一个M行N列的整型数组(数据是100以内的随机整数,M、N的整型数组(数据是100以内的随机整数,M、N最大为10),求出这个数组的“鞍点”。鞍点是指这个元素在所处的行上最大,列上最小。请输出这个鞍点的位置(行列号)及鞍点的值。如果没有鞍点,输出不存在的的信息。

供参考:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define M 10
#define N 10
int main()
{
    char a[M][N]={{2,2,6,3},{2,4,5,3},{5,1,7,2}};
    int i,j,k,m=0,n=0,max=0,min=0,flg=0;

    srand((unsigned int)time(NULL));
    for (i = 0; i < 3; i++) {
        for (j = 0; j < 4; j++) {
            a[i][j] = rand()%100;
            printf("%-4d",a[i][j]);
        }
        printf("\n");
    }

    for(i=0;i<3;i++)
    {
        max = a[i][0];
        for(j=0;j<4;j++)
        {
            if(a[i][j]>max)
            {
                n = j;
                max=a[i][j];
            }
        }
        min = a[0][n];
        for(k=0;k<3;k++)
        {
            if(a[k][n]<min)
            {
                m = k;
                min=a[k][n];
            }
        }
        if(max==min)
        {
            printf("鞍点是%d,所在行为%d,所在列为%d\n",a[m][n],m,n);
            flg = 1;
        }
    }
    if(!flg)
        printf("无鞍点\n");
    return 0;
}