qq_就此别过_0
2015-07-29 14:18
这里i%2==0&&j%2==0;
i可以是0,1,2;
j也可以是0,1,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; }
#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; }
C语言入门
926210 学习 · 20797 问题
相似问题