猿问

求二维数组中的鞍点,设计了如下程序,为什么运行的结果是错误的?


鞍点:即该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点。

 9    80    205    40

90    -60    96    1

210   -3     101   89

编写程序如下:

#include <stdio.h>
int main()
{
int a[3][4]={{9,80,205,40},{90,-60,96,1},{210,-3,101,89}};
int i,j,max,m,n,leap;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
printf("%d",a[i][j]);
printf("\n");
}
for(i=0;i<3;i++)
{
max=a[i][0];n=0;
for(j=0;j<n;j++)
if(a[i][j]>max)
{
max=a[i][j];n=j;
}
leap=1;
for(m=0;m<3;m++)
if(max>a[m][n])
{
leap=0;break;
}
if(leap)
{
printf("There is a saddle point:a[%d][%d]=%d\n",i+1,n+1,max);
break;
}
if(!leap)
{
printf("There is no saddle point.\n");
}
}
return 0; 
}

求大神指点!



Rebellious_2016
浏览 1510回答 1
1回答

慕的地3800369

#include <stdio.h> int main() {     int a[3][4]={{9,80,205,40},{90,-60,96,1},{210,-3,101,89}};     int i,j,max,m,n,leap;     for(i=0;i<3;i++)     {         for(j=0;j<4;j++)         {             printf("%d ",a[i][j]);         }         printf("\n");     }     for(i=0;i<3;i++)     {         max=a[i][0];         n=0;         leap = 0;         //修改过的地方,这里选出行最大的         for(j=0;j<4;j++)         {             if(a[i][j]>max)             {                 max=a[i][j];                 n=j;             }             leap=1;         }         //这里选出列最小的         for(m=0;m<3;m++)         {             if(max>a[m][n])             {                 leap=0;                 break;             }         }         if(leap)         {             printf("There is a saddle point:a[%d][%d]=%d\n",i+1,n+1,max);             //去掉break         }         if(!leap)         {             printf("There is no saddle point.\n");         }     }     return 0; }麻烦下次把代码整理好再来提问,我晕死,括号不打括号,格式没有格式....
随时随地看视频慕课网APP
我要回答