c语言找二维数组鞍点

#include"stdio.h"
#include"stdlib.h"
void main()
{
int n,count=0,i,j,k,arr[6][6],max,flag;
printf("Input n:");
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf(" %d",&arr[i][j]);
for(i=0;i<n;i++)
{
flag=0;
for(j=0;j<n-1;j++)
{
if(arr[i][j+1]>arr[i][j])
{
max=j+1;
}
}
for(k=0;k<n;k++)
{
if(arr[i][max]>arr[k][max])
{
flag=1;
break;
}
}
if(flag==0)
{
printf("arr[%d][%d]=%d\n",i,max,arr[i][max]);
count=count+1;
}
}
if(count==0)
printf("No\n");
system("pause");
}

哪里错了呢,运行不成功啊

第1个回答  2013-11-21
#include <stdio.h>
#include <stdlib.h>

int main()
{
int M,N;
int a[100][100];
int i,j,k,t,m,x,y,max,min,flag;
printf("input a[M][N]---M,N:");
scanf("%d %d",&M,&N);
printf("input %d number:\n",M*N);
for(i=0;i<M;i++)
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);
for(i=0;i<M;i++)
{for(j=0;j<N;j++)
printf("%-5d",a[i][j]);
printf("\n");}
flag=0;
for(i=0;i<M;i++)
{
max=a[i][0];
t=0;
for(j=1;j<N;j++)
{ if(a[i][j]>max)
{max=a[i][j];
t=j;}
max=a[i][t];

}

min=a[0][t];
x=0;
for(m=1;m<M;m++)
{ if(a[m][t]<min)
{
min=a[m][t];
x=m;
}
min=a[x][t];
}
if(max==min)
flag=1,
printf("the andian:%d",max);
}
if(flag==0)
printf("no andian!");
return 0;
}
我原来写的参考一下运行正确追问

能不能看看我的为什么不行呢,找不出错啊

追答

恩啊,我一般不来所以没看到你追问

本回答被提问者采纳
第2个回答  2013-11-21

没错啊 我运行就成功了 

追问

if(arr[i][j+1]>arr[i][j])这个判断不行,比较的是当前与后一个,不是和最大的比较。解决了,谢谢回答啊~

相似回答