1. (a) data (b) stack (c) stack (d) stack (e) stack (f) data (g) heap (h) stack (i) data (j) stack # NOTE: Should show work for the following! 2. (a) get(11, 2) = 0 (b) set(1, 3) = 9 (c) clear(23, 3) = 23 (d) toggle(23, 3) = 31 (e) get(set(45, 4) >> 3, 1) = 1 3a: int sum = 0; for(int i = 0; i < 10; ++i) sum += a[i]; 3b: char *s = (char *)malloc(sizeof(char) * 5); 3c: if(c >= 'a' && c <= 'z') printf("uppercase\n"); else if(c >= '0' && c <= '9') printf("digit\n"); else printf("neither\n"); 4a: #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int *a = NULL, cap = 0, len = 0; int tmp; while(scanf("%d", &tmp) == 1) { if(len >= cap - 1) { cap = (cap == 0) ? 8 : cap * 2; a = (int *)realloc(a, cap * sizeof(int)); } a[len++] = tmp; } return 0; } 4b: #include <stdio.h> int main(int argc, char *argv[]) { unsigned int x; scanf("%u", &x); int count = 0; for(unsigned int m = 1; m; m <<= 1) { if((m & x)) count += 1; } printf("%u\n", 1 << count); return 0; }