1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #define SUCCESS 0 #define FAIL 1
int AddDiagonal(int** a, int);
int main(void) { int n; int** a;
printf("Input n:"); scanf("%d", &n);
a = (int**)malloc(n * sizeof(int*)); if (a == NULL) { printf("Memory allocation failed!\n"); return FAIL; } for (int i = 0;i < n;i++) { a[i] = (int*)malloc(n * sizeof(int)); if (a[i] == NULL) { printf("Memory allocation failed!\n"); return FAIL; } }
printf("Input %d*%d matrix:\n", n, n); for (int r = 0;r < n;r++) { for (int c = 0;c < n;c++) { scanf("%d", &a[r][c]); } } printf("sum = %d\n", AddDiagonal(a, n));
for (int i = 0;i < n;i++) { free(a[i]); } free(a);
return SUCCESS; }
int AddDiagonal(int** a, int n) { int sum = 0; for (int i = 0, j = n - 1;i < n;i++, j--) { sum += a[i][i] + a[i][j]; } return !(n % 2) ? sum : sum - a[n / 2][n / 2]; }
|