为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C
Rebellious_2016 2016-12-08 11:15:17
鞍点:即该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点。 9    80    205    4090    -60    96    1210   -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;  }求大神指点!
查看完整描述

1 回答

?
慕的地3800369

TA贡献15条经验 获得超7个赞

#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;
}

麻烦下次把代码整理好再来提问,我晕死,括号不打括号,格式没有格式....

查看完整回答
1 反对 回复 2017-04-01
  • 1 回答
  • 0 关注
  • 1509 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信