This is a closed book exam. You may bring one page of prepared notes. You have 75 minutes.
Write a clearly legible T to the left of each of the following statements that is true and a clearly legible F to the left of each that is false.
A loop invariant is
Function f2 is shown below, with part of its definition not shown, and replaced by three dots. There are no breaks or returns in the part that is not shown, and nothing is printed there. It is known that f2 prints something at the marked line when it runs. What does it print?
void f2() { int i = 100; while(i != 25) { ... i = i + 1; } cout << i; // This line prints something. }
The following loop sets variable m to
int m,n; n = 0; m = 0; while(n < 10) { n++; m = m + n; }
What is the value of C++ expression 5+9*8-6?
What is printed by the following C++ function when it is run? Be careful to note that all of the variables hold integers.
void four() { int x,y,z,w,b; x = 45; y = 2 * x + x * 3; z = x / 2; w = x % 2; b = x < y; cout << "x = " << x << " y = " << y << " z = " << z << " w = " << w << " b = " << b << endl; }
Answer: ________________________________________________________
The geometric mean of two numbers x and y is the square root of the product of x and y. Write a C++ function called geometricMean that returns the geometric mean of its two parameters.
double geometricMean(double x, double y)
Using function geometricMean from the previous exercise, write a program fragment that sets variable z to the geometric mean of variable r and twice variable s.
If function t is called, what is printed? Be very careful with this question.
void r(int x, int y, int& z) { cout << "r: x = " << x << " y = " << y << " z = " << z << endl; x = x + 1; z = y + x; } void t() { int a, b, x; a = 20; b = 25; x = 250; r(a,b,x); r(x,a,b); cout << "t: a = " << a << " b = " << b << " x = " << x << endl; }
Answer: ________________________________________________________
Function f is defined as follows.
int f(int x) { int k = 1; while(k <= x) { k = k + k; } return k; }What are f(3) and f(f(3))?
f(3) = _________ f(f(3)) = _________
int mystery(int n) { if(1 == n) return 1; else return 3*mystery(n-1); }
Answer:______________________________________________
Write a recursive function anySevens(n) that returns 1 if there are any 7's in the decimal representation of n, and 0 otherwise. For example, anySevens(974) = 1, anySevens(7) = 1 and anySevens(32) = 0. Function anySevens should require its parameter n to be nonnegative. For this problem, do not use any form of loop, and do not alter the value of any variable that already has a meaningful value.
Hint. You can get the rightmost digit of n by computing n % 10. You can get all but the rightmost digit by computing n/10. For example, if n is 1974 then n % 10 is 4 and n/10 is 197.