Computer Science 2610
Fall 2004
Solutions to practice questions for quiz 1

  1. 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.

    1. A function contract usually cannot be written until after the function is written. False. The function has to be written to the requirements given by the contract, so that contract has to be written first.
    2. A function typically is given its data through its parameters. True.
    3. In order for a function to get any data to work on, it must include a "cin" line. False.
    4. The data type of real numbers is called real in C++. False. The two data types of real numbers are double and float.
    5. C++ uses 0 to mean "false" and 1 to mean "true". True.
    6. C++ is a professional software development language. True.

  2. A loop invariant is

    1. An assertion about the values of the program's variables that is true about those values each time the program reaches the top of a given loop.
    2. A statement about how the variables of a loop are modified when the loop body runs.
    3. A kind of loop that has a special syntax in C++.
    4. A way of initializing the variables for a loop.

  3. 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?

    1. 24
    2. 25
    3. 26
    4. It is impossible to say without more information.
          void f2()
          {
            int i = 100;
            while(i != 25) {
              ...
              i = i + 1;
            }
            cout << i;    // This line prints something.
          }
    

  4. The following loop sets variable m to

    1. 1 + ... + 9
    2. 1 + ... + 10
    3. 1 + ... + 11
    4. 1 + ... + 12
         int m,n;
         n = 0;
         m = 0;
         while(n < 10) {
          n++;
          m = m + n;
         }
    

  5. What is the value of C++ expression 5+9*8-6?

    1. 28
    2. 71
    3. 83
    4. 106

  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: x = 45 y = 225 z = 22 w = 1 b = 1

    (There was previously an incorrect value given for z here.)

  7. 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.

    Assume that library <math> is included, so that we can use the sqrt function.

         double geometricMean(double x, double y)  
         {
           return sqrt(x*y);
         }
    

  8. 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.

    z = geometricMean(r, 2*s);

  9. 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)    = 4
    
    
       f(f(3)) = 8
    
    

  10. What is the value of mystery(4)?
    	int mystery(int n)
    	{
    	  if(1 == n) return 1;
    	  else return 3*mystery(n-1);
    	}
    

    Answer: 27