题解 | 单组_二维数组
单组_二维数组
https://www.nowcoder.com/practice/4df606b6c3764d9c969f8759c8a4807b
#include <stdio.h>
#include<stdlib.h>
int** arr(int m, int n) {
int** arr = (int**)malloc(sizeof(int*)*m);
for (int i = 0; i < m; i++) {
arr[i] = (int*)malloc(n * sizeof(int));
if (arr[i] == NULL) {
for (int k = 0; k < i; k++) {
free(arr[k]);
}
free(arr);
return NULL;
}
for (int j = 0; j < n; j++) {
scanf("%d", &arr[i][j]);
}
}
return arr;
}
long long sum(int** arr, int m, int n) {
long long sum = 0;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
sum += arr[i][j];
}
}
return sum;
}
int main() {
int m, n;
long long int ans;
scanf("%d %d", &m, &n);
int** arr1 = (int**)malloc(m * (sizeof(int*)));
arr1 = arr( m, n);
ans = sum(arr1, m, n);
printf("%lld", ans);
for (int i=0; i<m; i++) {
free(arr1[i]);
}
free(arr1);
return 0;
}
查看2道真题和解析
