COP 3223 Section 3 Exam #2 Form A Fall 2007 10/23/07 Lecturer: Arup Guha Directions: Answer all multiple choice questions on the scantron. Each question has a single correct answer. In case of ambiguities, choose the most accurate answer. Each of these questions is worth 3 points for a correct answer, except for question 17, which is worth 2 points. Incorrect answers and questions left blank are worth 0 points. Hand in ONLY the scantron, keep the test questions, and take the free response section. Please reference the following program to answer questions #1 and 2. #include <stdio.h> void f(int a, int b); int main() { int a=3, b=5; f(b+a,b-a); printf("a=%d, b=%d\n",a,b); return 0; } void f(int a, int b) { int tmp = a+b; a = 2*tmp; b = a - b; printf("a=%d, b=%d\n",a,b); } 1) What is the first line of output produced by the program above? A)a=3, b=5 B)a=8, b=2 C)a=18, b=20 D)a=20, b=18 E)None of the Above 2) What is the second line of output produced by the program above? A)a=3, b=5 B)a=5, b=3 C)a=8, b=2 D)a=2, b=8 E)None of the Above 3) How many times does the loop below execute? int i; for (i=3; i<=93; i=i+6) printf("one more time\n"); A)3 B)15 C)16 D)90 E)None of the Above 4) How many times does the word KNIGHTS get printed out in the code segment below? int i; for (i=0; i<40; i++) { printf("KNIGHTS\n"); if ((i+1)%12 == 0) break; } A)11 B) 12 C) 13 D) 39 E)None of the Above 5) Which of the following functions reads in a single character from the keyboard? A)getchar B)putchar C)printf D)scanf E)None of the Above Please reference the following program to answer questions #6, 7 and 8. #include <stdio.h> void g(int *a, int b); int main() { int a=3, b=5; g(&b,a); printf("a=%d\n",a); printf("b=%d\n",b); return 0; } void g(int *a, int b) { (*a) = (*a) + 2*b; b = (*a) - b; printf("a=%d, b=%d\n",*a,b); } 6) What is the first line of output produced by the program above? A)a=5, b=3 B)a=3, b=5 C)a=8, b=11 D)a=11, b=8 E)None of the Above 7) What is the second line of output produced by the program above? A)a=3 B)a=5 C)a=8 D)a=11 E)None of the Above 8) What is the third line of output produced by the program above? A)b=3 B)b=5 C)b=8 D)b=11 E)None of the Above 9)How many times does the code segment below print out the letter X? int i,j; for (i=0; i<10; i++) for (j=1; j<=12; j+=2) printf("X"); A)10 B)12 C)22 D)120 E)None of the Above 10) How many times does the code segment below print out the word KNIGHTS? int i; for (i=0; i<40; i++) { if ((i+1)%12 == 0) continue; printf("KNIGHTS\n"); } A)36 B)37 C)39 D)40 E)None of the Above Please reference the following program to answer questions #11 and 12. #include <stdio.h> int h(int a, int b); int main() { int a=3, b=5; b = h(b,a); printf("a=%d, b=%d\n",a,b); return 0; } int h(int a, int b) { a = a*b%8; b = b + a; printf("a=%d, b=%d\n",a,b); return 2*a - b; } 11) What is the first line of output produced by the program above? A)a=7, b=5 B)a=5, b=7 C)a=7, b=10 D)a=10, b=7 E)None of the Above 12) What is the second line of output produced by the program above? A)a=3, b=4 B)a=3, b=5 C)a=4, b=3 D)a=5, b=3 E)None of the Above 13) If the ascii value of 'A' is 65, what is the integer value of the expression 'C' + 'F' – 'D'? A)65 B)67 C)69 D)71 E)None of the Above 14) Which of the following declares a file pointer and opens an input file called "data.txt" from which to read? A)FILE B)FILE C)FILE D)FILE E)None *ifp = *ifp = *ofp = *ifp = of the fopen(data.txt,r); fopen(data.txt,"r"); fopen("data.txt", "r"); fopen("data.txt", "w"); Above 15) Which of the following writes the word HELLO to the output file pointed to by the file pointer ofp? A)printf("HELLO"); B)fprintf("HELLO"); D)fprintf(ofp,"HELLO"); E)None of the Above C)fprintf("HELLO","w"); 16) What is the return value of the expression isupper('C')? A)0 B)1 C)2 D)3 E)None of the Above 17) In which city do the American League Champion Boston Red Sox play their home games? A)Boston B)Plymouth C)Redding D)New York E)None of the Above Fall 2007 COP 3223 Section 3 Exam 2 Free Response Answer Sheet Last Name: ____________ , First Name: _____________ 1) (5 pts) Convert the following segment of code that uses a while loop into an equivalent segment of code that uses a for loop. (Note: Assume that all variables used in the segment of code have been previously declared and initialized.) cnt = while sum cnt } 0; (cnt < n) { = sum + cnt; = cnt+1; 2 xy . x y Write a function that takes in two parameters x and y, and returns their harmonic mean. If either of x and y is 0 or negative, return 0, otherwise return the value described above. 2) (15 pts) The harmonic mean of two positive real numbers x and y is equal to double HarmonicMean(double x, double y) { } 3) (10 pts) Complete the function below which "matures" your account by one year. In particular, the function will take in two pointers: a pointer to a integer which stores your age, and a pointer to a double, which stores the amount of money in your bank account. The task of the function is to update your age (by adding one to it), and update the amount in your bank account by adding 5% of its value to it. void matureOneYear(int *pAge, double *pMoney) { } 4) (20 pts) A file named nba.txt stores the scoring averages of all NBA players. The format of the file is as follows. The first number in the file, n, is a positive integer representing the number of players in the file. The following n lines contain two numbers each (separated by spaces). The first number is a unique player identification number, which is always an integer. The second number is that player's scoring average, which is a real number. Complete the program below so that it reads in the information from the file and prints out both the player identification number and scoring average of the player with the highest scoring average. (Note: you are guaranteed that only one player will have the highest scoring average.) #include <stdio.h> int main() { FILE *ifp; ifp = fopen("nba.txt", "r"); fclose(ifp); return 0; }