c语言:找出一个二维数组的“鞍点”(多个鞍点)

题目:找出一个二维数组的“鞍点”(多个鞍点)

能帮忙指出一下代码的问题吗?

代码:

//找出鞍点
#include<stdio.h>
int main()
{
    int i,j,k,z,min,max,flag=0;
    int arr[20][20],a[10],row,col;
    printf("请输入行,列:");
    scanf("%d%d",&row,&col);
    for(i=0;i<row;i++)//输入数据
    {
        for(j=0;j<col;j++)
        {
            scanf("%d",&arr[i][j]);
        }
    }
    for(i=0;i<row;i++)//求行最大
    {
        max=arr[i][0];
        for(j=1;j<col;j++)
        {
            if(arr[i][j]>max)
                max=arr[i][j];
        }
        for(z=0,k=0;z<col;z++)
        {
            if(arr[i][z]==max)
            {
                a[k]=z;
                k++;
            }
        }
        min=max;
        for(j=0;j<k;j++)
        {
            for(z=0;z<row;z++)
            {
                if(min>arr[z][a[k]])
                    break;
            }
            if(z==row)
            {
                printf("鞍点有:%d",arr[i][a[k]]);
                flag++;
            }
        }
    }
    if(flag==0)
        printf("无鞍点");
    return 0;
}