问答详情
源自:6-11 多维数组的遍历

求数组对角线之和 着急,坐等回答。

http://img.mukewang.com/55b86f640001976703610311.jpg   这里i%2==0&&j%2==0;
                                                                                             i可以是0,1,2;

                                                                                             j也可以是0,1,2;

                                                                                             这样子根本不是求数组对角线的和啊

提问者:qq_就此别过_0 2015-07-29 14:18

个回答

  • Perona
    2015-07-29 23:16:49
    已采纳

    二维数组是:int arr[3][3]={{1,2,3},{4,5,6},{7,8,9}};

    画图大致如下:

    1                       2                   3

    [0][0]            [0][1]                [0][2]

    4                       5                   6

    [1][0]            [1][1]               [1][2]

    7                      8                     9

    [2][0]           [2][1]                [2][2]

    这里有两条对角线,一条为左上至右下,对应数组中的数为1,5,9。

    另一条为右上至左下,对应数组中的数为3,5,7。

    相加应该是:1+5+9+3+7=25

    现在我们研究下对角线的坐标,分别是[0][0]、[1][1]、[2][2]、[0][2]、[1][1]、[2][0]

    发现没有,这些坐标x,y相加的值更好能被2整除,那么判断条件是不是就知道怎么写了。即取模运算:(i+j)%2==0

    遍历数组知道怎么遍历吧,那么在遍历数组的循环里面加上这if判断即可。

    参考代码:

    #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)%2==0)
               sum+=arr[i][j];
           }
        }
        printf("对角线元素之和是:%d\n",sum);
        return 0;    
    }


  • lucifer2
    2015-07-29 18:01:40

    #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][j];
        printf("对角线元素之和是:%d\n",sum);
        return o;
    }