Sample Midterm 1. What are all possible outputs of the following code fragment? void f(int a, int b) { printf("%d %d\n", a, b); } void main(void) { int i = 5; f(++i, ++i); } 2. Given the definitions int numbs[10]; int *ptr = numbs; which of the following are equivalent, and why? a. numbs[3] b. numbs + 3 c. * ( numbs + 3 ) d. * ( ptr + 3 ) e. *ptr + 3 3. Write a recursive function to add the integers from a to b. You may assume that a b initially. 4. Use the following code fragment to answer parts a, b, and c: for(x = i = 0; i <= 100; i += 2, x += i); a. In one short sentence , what does this for loop do? b. Is the following while loop equivalent? If not, how does its result differ? x = i = 0; while( i++ = 100) x += ++i; c. Does the following for loop do the same thing? If not, what does it do? for(x = i = 0; i <= 100; i++){ if (!(i % 2)) continue; x = x + i; } 5. What does the following function do? int x(char *s, char *t) { for( ; *s == *t; s++, t++) if (*s == '\0') return(0); return(*s - *t); } 6. What does this function do? char *x(char *s, char c) { char *r = NULL; do{ while(*s && *s != c) s++; if (*s) r = s; } while(*s++); return(r); } 7. The following segment of code is supposed to print the number of times the routine a_again is called. Yet, regardless of the input, it prints 0. Why? How would you fix it? void a_again(int acount) { ++acount; } void main(void) [ register int c; int counter = 0; while((c = getchar()) != EOF) if (c == 'a' || c == 'A') a_again(counter); printf("%d\n", counter); exit(0); }