二维数组的声明、初始化和输出(计算方阵的主负对角线上的元素之和)
编写程序,分别计算5*5方阵的主对角线上的元素之和与副对角线上的元素之和。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #include <stdio.h> int main() { int a[5][5]= { {43,18,21,25,28}, {12,61,52,23,35}, {25,17,81,56,63}, {26,60,53,31,65}, {45,37,21,56,63} }; /* 数组的声明和初始化 */ int i, j, s1=0, s2=0; for(i=0; i<5; i++) { for(j=0; j<5; j++) printf("%4d",a[i][j]); printf("\n"); } /* 通过二重循环输出二维数组 */ for(i=0; i<5; i++) for(j=0; j<5; j++) { if (i==j) s1=s1+a[i][j]; if (i+j==4) s2=s2+a[i][j]; } printf("s1=%d,s2=%d\n",s1,s2); return 0; } |
更简单的办法:
1 2 3 4 | for(i=0; i<5; i++) { s1=s1+a[i][i]; s2=s2+a[i][4-i]; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <stdio.h> #define N 100 int main(int argc, char *argv[]) { int a[N][N]; int n, i, j, sum_a=0, sum_b=0; scanf("%d", &n); for (i=0; i<n; i++) for (j=0; j<n; j++) scanf("%d", &a[i][j]); for (i=0; i<n; i++) sum_a = sum_a + a[i][i]; for (i=0; i<n; i++) sum_b = sum_b + a[i][n-1-i]; printf("%d %d\n", sum_a, sum_b); return 0; } |