请教同学们和老师们
我总觉得这么做有点麻烦,假如数组维数越大,这个方法肯定不行。
2017-01-16
//题目给出的参考答案(只在行列都为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; for(i=0;i<3;i++) { for(j=0;j<3;j++){ if(i%2==0 && j%2==0) sum=sum+arr[i][j]; } } sum=sum+arr[1][1]; printf("对角线元素之和是:%d\n",sum); return 0; }
偶数组:
0 1 2 3
1 11 12 13
2 21 22 23
3 31 32 33
奇数组
0 1 2 3 4
1 11 12 13 14
2 21 22 23 24
3 31 32 33 34
4 41 42 43 44
#include <stdio.h> #define n 4 //在此随意修改数组的行列 int main(void) { int i, j, sum; int a[n][n]; //构建数组,手动输入 printf("Please input a array\n"); for(i=0; i<n; i++) { for(j=0; j<n; j++) { scanf("%d", &a[i][j]); } } //打印构建数组 for(i=0; i<n; i++) { for(j=0; j<n; j++) { printf("%3d", a[i][j]); } printf("\n"); } //求二维数组对角线上元素和 sum = 0; for(i=0; i<n; i++) { for(j=0; j<n; j++) { if((i==j) || (i+j==n-1)) { sum += a[i][j]; } } } printf("主对角线和次对角线之和是:%d\n", sum); return 0; }
注意:矩阵数组对角线有两条,将编程问题转化成数学问题求解;
主对角线上的元素是行列相等(i=j);副对角线上的元素数组行列下表相加为数组长度减1;
举报