求二维数组的鞍点 不知道错哪了

问题描述
找一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。鞍点最多一个,也可能不存在。
输入
第一行是二维数组的行数和列数(行和列的数目均不大于100),之后为二维数组。
输出
如果存在鞍点,输出鞍点所在的行、列及其值,每个数后一个空格;如果不存在,输出"N"
输入样列
3 3
11 22 33
99 33 55
44 55 66
输出样例
0 2 33

#include<stdio.h>
int main()
{
    int m,n,x,y;
    scanf("%d%d",&m,&n);
    char a[m][n];
    int min,max,i,j;
    for(i=0;i<m;i++){
        for(j=0;j<n;j++){
            scanf("%d",a[m][n]);
        }
    }
    max=a[i][0];
    for(i=0;i<m;i++){
        for(j=0;j<n;j++){
            if(a[i][j]>max){
                max=a[i][j];
                x=i;
                y=j;
            }
        }
    }
    min=a[0][y];
    for(i=0;i<m;i++){
        if(a[i][y]<min)
            min=a[i][y];
    }
    if(min==max) printf("%d %d %d\n",x,y,min);
    else printf("N\n");
    return 0;
} 


#include<stdio.h>
int main()
{
    int m,n,x,y;
    scanf("%d%d",&m,&n);
    int a[m][n];
    int row_max[m], col_min[n];
    int min,max,i,j;
    for(i=0;i<m;i++){
        for(j=0;j<n;j++){
            scanf("%d",&a[m][n]);
        }
    }
    for(i=0;i<m;i++){
        max = a[i][0];
        row[i] = 0;
        for(j=0;j<n;j++){
            if(a[i][j]>max){
                max=a[i][j];
                row[i] = j;
            }
        }
    }
for(j=0;<n;j++){
        min = a[0][j];
        col[j] = 0;
        for(i=0;i<n;i++){
            if(a[i][j]<min){
                min=a[i][j];
                row[j] = i;
            }
        }
    }
    for (i = 0; i < m; i++) {
        for (j = 0; j < n; j++) {
            if (row[i] == j && col[j] == i) {
                printf("%d %d %d\n", i, j, a[i][j]);
          return 0;
            }
          }
    }
    

    printf("N\n");
    return 0;
} 

我改了改你的代码,看看吧

scanf("%d",&a[m][n]);
每天都有人犯这种错误