大家知道哪里有问题吗

来源:6-11 多维数组的遍历

慕设计3475485

2020-03-10 16:40

http://img.mukewang.com/5e675252000162d603470300.jpg大家看看哪里有问题


写回答 关注

7回答

  • 慕容5401208
    2020-07-29 19:22:43

    你的J没有进行循环遍历

  • Lollipop____
    2020-04-05 22:09:35

    你少了个对j的遍历,也就是这样

    #include <stdio.h>
    int main(){    
        int arr[3][3] = {{1,2,3},{4,5,6},{7,8,9}};    
        int i,j;    
        int sum=0;    
        for(i=0;i<3;i++) {        
            for(j=0;j<3;j++){            
                if(i==j){                
                    sum += arr[i][i];            
                    }            
                if(i-j==2||i-j==-2){                
                    sum += arr[i][j];             
                    }        
            }           
        }    
        printf("对角线元素之和是:%d\n",sum);    
        return 0;    
    }


  • 环球学习机
    2020-03-19 16:30:24

    从设计角度上来说更容易扩展,当length不固定时,对于正矩形来说这种方法更合适。%2这个可能就被限制在length=3的死角了。附上正矩形对角线之和的代码:

    #include <stdio.h>

    int main()

    {

        int arr[3][3] = {{1,2,3},{4,5,6},{7,8,9}};

        int i,j;

        int sum=0;

        int length = 3;

        for(i=0;i<length;i++)

        {

           for(j=0;j<length;j++) {

               if(i == j || i == length-1-j) {

                   sum += arr[i][j];

               }else {

                   continue;

               }

           }

        }

        printf("对角线元素之和是:%d\n",sum);

        return 0;    

    }



  • weixin_慕斯3464934
    2020-03-16 23:30:25

    另外分享本人自写正确代码:

    #include <stdio.h>

    int main()

    {

        int arr[3][3] = {{1,2,3},{4,5,6},{7,8,9}};

        int i,j;

        int sum=0;

        int a;

        for(i=0;i<3;i++)

        {

         for(j=0;j<3;j++)

          {

             if(arr[i][j]%2!=0)

             sum+=arr[i][j];

          }

          

        }

        printf("对角线元素之和是:%d\n",sum);

        return 0;    

    }


  • weixin_慕斯3464934
    2020-03-16 23:28:27

    我发现2个问题。

    1:你的j一直定义为0,并没有出现j自增,从始至终没有变化j始终为0.所有不对。

    2:第九行的if(i=j)写错。要表达自身应出现两个。正确为if(i==j).

  • 桔子爱饺子
    2020-03-15 18:06:26

    if(i+j==2 || i==j)

  • 慕哥0584377
    2020-03-10 17:37:39

    我看不出来你的问题

    但是我提供一下我的思路  就是  (i+j)%2=0

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926210 学习 · 20797 问题

查看课程

相似问题