c语言编写程序,找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小,也有可能没有

c语言编写程序,找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小,也有可能没有鞍点。设二维数组a有3行4列。

#include <stdio.h>
int a[3][4]={0};
int min(int y)//第y+1列的最小值 所在的行
{
int i,temp,min=0;
for(i=1;i<3;i++)
{
if(a[min][y]>a[i][y])
min=i;
}
return min;
}
int max(int x)//第x+1行的最大值 所在的列
{
int j,temp,max=0;
for(j=1;j<4;j++)
{
if(a[x][max]<a[x][j])
max=j;
}
return max;
}
int main()
{
int i,j,temp,count=1;
puts("输入二维数组:\n");
for(i=0;i<3;i++)
{
printf("输入第%d行:\n",i+1);
scanf("%d %d %d %d",&a[i][0],&a[i][1],&a[i][2],&a[i][3]);
}//输入数组

for(i=0;i<3;i++)
{
j=max(i);
temp=min(j);
if(temp==i)
{
printf("鞍点为%d行%d列的%d\n",i+1,j+1,a[i][j]);
count++;
}
}
if(count==0)
printf("没有鞍点");
return 0;
}追问

有错误

追答

是count==1的问题么?还是其他

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-07-12
#include <stdio.h>

int buf[3][4];

//m行n列
int FindSpot(int *dst)
{
int i,j,k,col,tmp,cnt;
int m,n;

m = 3;
n = 4;

cnt = 0;
for (i=0; i<m; i++)
{
tmp = 0;
for (j=0; j<n; j++)
{
if (tmp < buf[i][j])
{
tmp = buf[i][j];
col = j;
}
}
for (k=0; k<m; k++)
{
if (tmp > buf[k][col])
break;
}
if (k >= m)
dst[cnt++] = tmp;
}
if (cnt > 0)
return 1;

return 0;

}

int main()
{
int result[4];
int i,j,flag;

for (i=0; i<3; i++)
{
for (j=0; j<4; j++)
{
buf[i][j] = (i+21)*(j+111)/37;
printf("%02d ",buf[i][j]);
}
printf("\n");
}
for (i=0; i<4; i++)
result[i] = 0;
flag = FindSpot(result);
if (flag == 0)
printf("No Spot!\n");
else
{
for (i=0; i<4; i++)
printf("%d ",result[i]);
}

getchar();
}追问

有错

追答

想让别人帮,你有点诚意吧。你一句“有错”,打算让人怎么分析?

追问

我打到vc里。。有错误。。我现在都关了。。。

执行结果也不一样

相似回答