川上12 2022-10-31 22:33 采纳率: 66.7%
浏览 42
已结题

用指针查找二维数组最大值及位置

img

各位看看,为什么if后面的前两个赋值语句不受控制,刚刚接触c语言,不太熟悉望解答

  • 写回答

1条回答 默认 最新

  • bingbingyihao 2022-10-31 23:30
    关注

    回答:顶级折磨呀,大哥,咱就是说,能不能把这个代码格式统一一下,咱换行就按换行的风格来,不换行就按不换行的风格来,不能这个不方便阅读的写法呀。这边参考一个C++的规范:https://zhuanlan.zhihu.com/p/71782780

    用指针查找二维数组的最大值,较为规范的代码如下:

    #include <stdio.h>
    
    int main(){
        int a[3][4];
        int i, j, m, n;
        int *p = &a[0][0];
        
        for(i=0;i<3;i++){
            for(j=0;j<4;j++){
                scanf("%d", &a[i][j]);
            }
        }
        
        // 说明:二维数组的指针走向是每次先走一维数组的长度,实际上的二维数组是很长的一维数组组成的,
        // 当然在内存中,会按照内存连续分布,方便编译器计算下标 
        for(i=0;i<3;i++){
            for(j=0;j<4;j++){
                if(*p < *(p+i*4+j)){
                    m = i;
                    n = j;
                    *p = *(p+i*4+j);
                    printf("%d %d %d\n", i, j, *p);
                }
            }
        }
        
        printf("%d %d %d", m, n, *p);
    }
    
    /*
    测试数据 
    1 2 3 4
    5 6 7 8
    9 10 11 12
    */
    

    运行截图:

    img

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

报告相同问题?

问题事件

  • 系统已结题 11月9日
  • 已采纳回答 11月1日
  • 创建了问题 10月31日