PROBLEM 1: runner% cat exam1_3.c #include #define MAXA 100 struct atag { char ch; int num; }; void init(struct atag a[]); int addup(struct atag a[]); void main(void) { struct atag a[MAXA]; int sum; init(a); sum = addup(a); printf("sum: %i\n", sum); } void init(struct atag a[]) { int i; for (i = 0; i < MAXA; i++) { a[i].ch = ' '; a[i].num = i; } } int addup(struct atag a[]) { int i; int sum = 0; for (i = 0; i < MAXA; i++) sum += a[i].num; return sum; } PROBLEM 2: runner% exam1_3 sum: 4950 runner% cat -n exam1_2.c 1 #include 2 3 void main(void) 4 { 5 char t[] = "UTSA"; 6 char *p; 7 char *q; 8 p = t; 9 10 printf("Printing t: %s\n", t); 11 printf("Printing p: %s\n", p); 12 printf("Printing t[0]: %c\n", t[0]); 13 printf("Printing t[1]: %c\n", t[1]); 14 printf("Printing *p: %c\n", *p); 15 printf("Printing &t[0]: %s\n", &t[0]); 16 printf("Printing *(p+2): %c\n", *(p+2)); 17 printf("Printing p+2: %s\n", p+2); 18 printf("Printing *&p: %s\n", *&p); 19 printf("Printing &t: %c\n", &t); /* ERROR */ 20 printf("Printing &t[1]: %s\n", &t[1]); 21 printf("Printing &q[0]: %c\n", &q[0]); /* ERROR */ 22 } runner% lint -m -u exam1_2.c (21) warning: variable may be used before set: q function returns value which is always ignored printf function argument ( number ) type inconsistent with format printf (arg 2) char (*)[] :: (format) int exam1_2.c(19) printf (arg 2) char * :: (format) int exam1_2.c(21) runner% cc -o exam1_2 exam1_2.c runner% exam1_2 Printing t: UTSA Printing p: UTSA Printing t[0]: U Printing t[1]: T Printing *p: U Printing &t[0]: UTSA Printing *(p+2): S Printing p+2: SA Printing *&p: UTSA Printing &t: Printing &t[1]: TSA Printing &q[0]: PROBLEM 3: runner% cat exam1_4.c #include #include "stack.h" void pop_and_print1(void); void pop_and_print2(void); void main(void) { char ch; while (((ch = getchar()) != '\n') && !full()) push(ch); /* pop_and_print1(); putchar('\n'); */ pop_and_print2(); putchar('\n'); } void pop_and_print1(void) { while (!empty()) putchar(pop()); } void pop_and_print2(void) { char ch; if (!empty()) { ch = pop(); pop_and_print2(); putchar(ch); } } runner% cc -o exam1_4 exam1_4.c stack.c exam1_4.c: stack.c: runner% exam1_4 abcd abcd