鲜衣怒码ing 2023-01-27 12:01 采纳率: 97.1%
浏览 111
已结题

c语言求二维数组鞍点,找不出bug在哪

c语言求二维数组鞍点,找不出bug在哪
如下:若输入的为3×3的数组1 2 3 4 5 6 7 8 9则运行出错,若9 8 7 6 5 4 3 2 1则可运行成功
#include<stdio.h>
//先找列最小,再找行最大 
int main()
{    int m,n;
    int i,j;
    scanf("%d%d",&m,&n);//m行n列数组
    int a[m][n];
    for(i=0;i<m;i++)//输入二维数组
    {
        for(j=0;j<n;j++)
        {
        scanf("%d",&a[i][j]);    
        }
    }
    printf("\n");
    for(i=0;i<m;i++)把数组元素排列好输出
    {
        for(j=0;j<n;j++)
        {
        printf("%d ",a[i][j]);    
        }
        printf("\n");
    }
    printf("\n\n");
    int min,max;//列最小,行最大
    int mm,nn;
    int flag=1; 
    for(i=0;i<n;i++)
    {
        min=a[0][i];
        for(j=1;j<m;j++)
        {
            if(min>a[j][i])//找出列最小,并标记为mm行nn列 
            {
                min=a[j][i];
                mm=j;nn=i;    
            }
        }
        max=min;//将列最小当作行最大 
        for(j=1;j<n;j++)//用列最小做行的比较,找出行最大
        {
            if(max<a[mm][j])
            {                     
                flag=0;
                continue;
            }
            
        }        
        if(flag==1) 
        {
            printf("鞍点是第%d行%d列的%d\n\n",mm+1,nn+1,max);
            break;
        }     
    }
    if(flag==0) 
    printf("没有鞍点\n\n");     
    return 0;
 } 

我觉得可能是找行最大的那一部分出错了,但是又调试不出来
  • 写回答

2条回答 默认 最新

  • 「已注销」 2023-01-27 13:42
    关注

    这段代码的问题在于找行最大时,在找到行最大后没有跳出循环。导致如果下一个列最小和当前行最大相同,就会将flag重新赋值为0。

    解决方法是在找到行最大后直接跳出循环。例如:

    
    if(max<a[mm][j]){
        flag=0;
        continue;
    }else{
        printf("鞍点是第%d行%d列的%d\n\n",mm+1,nn+1,max);
        break;
    }
    
    

    这样就可以避免上述问题

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月4日
  • 已采纳回答 1月27日
  • 创建了问题 1月27日

悬赏问题

  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法