#include int sum1D(int n, int a[]); int sum2D(int rows, int cols, int a[rows][cols]); // see "variable length arrays" void double1D(int n, int a[]); int main() { int a[5] = {2, 3, 5, 7, 11}; int a2[3][3] = {{1, 1, 1}, {1, 2, 3}, {2, 3, 4}}; double1D(5, a); printf("%d\n", sum1D(5, a)); printf("%d\n", sum2D(3, 3, a2)); printf("%d\n", sum1D(3, a2[1])); // a2[1] is row 1 of a2; rows are 1D arrays! printf("%d\n", sum1D(5, a2[1])); // lying about size of row -- what happens? } int sum1D(int n, int a[]) { int sum = 0; for (int i = 0; i < n; i++) { sum += a[i]; } return sum; } int sum2D(int rows, int cols, int a[rows][cols]) { int sum = 0; for (int r = 0; r < rows; r++) { for (int c = 0; c < cols; c++) { sum += a[r][c]; } } return sum; } void double1D(int n, int a[]) { for (int i = 0; i < n; i++) { a[i] *= 2; } }