为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

                                                                                             j也可以是0,1,2;

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

正在回答

2 回答

二维数组是: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;    
}


1 回复 有任何疑惑可以回复我~
#1

qq_就此别过_0 提问者

太棒了!受益颇多
2015-07-30 回复 有任何疑惑可以回复我~
#2

Perona 回复 qq_就此别过_0 提问者

不客气
2015-07-30 回复 有任何疑惑可以回复我~
#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;
}

0 回复 有任何疑惑可以回复我~
#1

qq_就此别过_0 提问者

这个答案算下来是15,只是一条主或副对角线的元素相加的
2015-07-29 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926207    人
  • 解答问题       20797    个

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

进入课程

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信