半步萧音过倾尘 2022-11-26 17:03 采纳率: 100%
浏览 36
已结题

求二维数组的最大值最小值和位置

为什么输出的是这样呀,不应该是
123
456吗为什么第一行第二行的输出是相同的?导致本程序出不来预期效果

img

img

img

  • 写回答

1条回答 默认 最新

  • a5156520 2022-11-26 18:39
    关注

    应该是因为定义存储输入数据的二维数组时用M和N来定义行和列,而此时M和N没有赋值,所以导致结果异常了,把定义二维数组放到获取了M和N的值后再定义即可,修改如下:

    #include <stdio.h>
    
    int main(void){
        
        int i=0,j=0,M,N,max,mai,e,b,c,d;
        
        
        printf("输入行和列:");
        scanf("%d%d",&M,&N);
        int a[M][N];
        
    //    printf("M=%d,N=%d\n",M,N);
        printf("输入数组元素:");
        for(i=0;i<M;i++){
            for(j=0;j<N;j++){
                scanf("%d",&a[i][j]);
            }
        }
        
        mai=max=a[0][0];
        e=b=c=d=0;
        for(i=0;i<M;i++){
            for(j=0;j<N;j++){
                if(a[i][j]>=max){
                    max=a[i][j];
                    e=i+1;
                    b=j+1;
                }
                if(a[i][j]<=mai){
                    mai=a[i][j];
                    c=i+1;
                    d=j+1;
                }
            }    
        }
        
        for(i=0;i<M;i++){
            for(j=0;j<N;j++){
                printf("%-5d",a[i][j]);
            } 
            printf("\n");
        }
        
        printf("\n最大值:%d, 最小值:%d\n",max,mai);
        printf("最大值位置%d行,%d列\n",e,b);
        printf("最小值位置%d行,%d列\n",c,d);
        
        return 0;
    } 
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月27日
  • 已采纳回答 11月26日
  • 创建了问题 11月26日

悬赏问题

  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上