C语言输出鞍点,能否帮我看看我自己编写的程序哪里出了问题

找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。用scanf函数从键盘输入数组各元素的值,检查结果是否正确。

img

输出结果本应为 96。

img

你每次外循环开始max和 min都要重新设置为 max=-1e6; min=1e6;
int a[x][y]; //要在x,y输入了值之后再用于声明数组大小

#include<stdio.h>

int main()
{
    int i=0,j=0,k=0,p=0,max=-1e6,min=1e6;
    int q=0,m=0;
    int x=0,y=0;
    printf("输入行数和列数:");
    scanf("%d%d",&x,&y);
    int a[x][y];    //要在x,y输入了值之后再用于声明数组大小
    for(i=0;i<x;i++)
        for(j=0;j<y;j++)
            scanf("%d",&a[i][j]);
    for(i=0;i<x;i++){
        max=-1e6;  //每次外循环开始max和 min都要重新设置为 max=-1e6; min=1e6;
        min=1e6;
        for(k=0;k<y;k++)
            if(a[i][k]>max)
               {max=a[i][k];p=k;}
        for(m=0;m<x;m++)
            if(a[m][p]<min)
               {min=a[m][p];q=m;}
        if(a[q][p]==a[i][p]) printf("第%d行有鞍点%d\n",i+1,a[i][p]);
        else printf("第%d行没有鞍点\n",i+1);
    }
    return 0;
}

img

如有帮助,望采纳!谢谢!