我觉得这多维数代码有问题

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

cccca

2018-03-31 01:20

54e13e7a0001976703610311.jpg

       【0】【1】【2】

【0】1        2       3

【1】4        5       6      

【2】7         8       9

首先对角线之和就应该包括{【0,0】【1,1】【2,2】【0,2】【2,2】

但那代码中的i%2==0且j%2==0只能求出【0,0】【2,2】再加上for外的【1,1】,求得的sum应该是15,那问题来了【0,2】【2,2】去哪了?sum的结果还能等于25?

&&这个应该是且不是或吧?

求解答

写回答 关注

6回答

  • kirito_yes
    2018-07-05 09:34:43

    你可以参考一下我写的,换成4*4或者5*5任意方形的矩阵都可以,比如arr[4][4] = {{1,2,3,4},{5,6,7,8},{1,2,3,4},{5,6,7,8}};  然后row=column=4;你试试看

  • kirito_yes
    2018-07-05 09:32:23
    #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 row,column;
        row = column =3;    
        for(i=0;i<row;i++){       
            sum += (i==column-i-1)?(arr[i][i]):(arr[i][i]+arr[i][column-i-1]);
        }    
        printf("对角线元素之和是:%d\n",sum);    
        return 0;    
    }


  • kirito_yes
    2018-07-05 09:28:39

    这代码是写的不好,我看了很多答案里的代码都是只能求这道题的3*3矩阵,换成4*4,5*5就不行了,不过这个在这道题来说还是对的,i%2==0&&j%2==0,第一行满足条件的是arr[0][0],arr[0][2],第二行没有,第三行arr[2][0],arr[2][2],最后加上中心的arr[1][1],没错,但这样的写法是很差的,稍微换一下,换成4*4的矩阵,这个代码全废了。

  • 慕粉4209211
    2018-05-20 23:54:31

    n*n矩阵,对角线元素应该有2n-1个,因为正反两条对角线。第i行的对角线元素是每行里的正数第i个和倒数第i个,也就是a[i][i]和a[i][n-1-i]。把这些加起来,一重循环就够了。最后别忘了减一次最中心的,因为这一元素被加了两遍

  • LFQ_balabala
    2018-03-31 16:58:55

    同理i=2且j=0的时候也是

  • LFQ_balabala
    2018-03-31 16:58:21

    i=0 且 j=2的时候也符合的 你想想

C语言入门

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

926209 学习 · 20797 问题

查看课程

相似问题