Quiz Four

  1. What is the output of the following (working) code when embedded in a complete and correct program? It is acceptable to declare and initialize a variable inside a for statement as shown.

    char symbol[3] = {'a', 'b', 'c'};
    for (int index = 0; index < 3; index++)
        cout << symbol[index];

    a b c

  2. What is wrong with the following piece of code?

    int sample_array[10];
    for (int index = 1; index <= 10; index++)
        sample_array[index] = 3 * index;

    The indexed variables of sample_array are sample_array[0] through sample_array[9], but this piece of code tries to fill sample_array[1] through sample_array[10]. The index 10 in sample_array[10] is out of range.

  3. Consider the following function definition:

    void tripler(int& n)
    {
       n = 3 * n;
    }

    Given the following variable declarations within a code block, which of the following are acceptable function calls?

    int a[3] = {4, 5, 6}, number = 2;
    1. tripler(number);

      This is acceptable.

    2. tripler(a[2]);

      This is acceptable.

    3. tripler(a[3]);

      This is illegal because 3 is an out of range index.

    4. tripler(a[number]);

      This is acceptable. It is the same as tripler(a[2]);above.

    5. tripler(a);

      This is illegal because tripler expects a single integer variable, and the argument here is an entire array.

  4. Write a function definition for a void function called show_the_world which accepts an array of integers as one of its arguments and prints out the entire array, no more, no less.

    void show_the_world(int a[], int size_of_a)
    {
       cout << "The array contains the following values:\n";
       for (int i = 0; i < size_of_a; i++)
           cout << a[i] << " ";
       cout << endl;
    }
  5. What is a string?

    A string variable is an array of characters that contains the null character '\0' at the end of the string value. This is a distinction in how the array is used rather than a distinction about what the array is. A string variable is an array fo characters, but it is used in a different way.

  6. Which of the following declarations are equivalent? Match them up and explain why they behave the same.

    1. char string_var[10] = "Hello";

      This is equivalent to the following declaration, but initializes the string "the easy way."

    2. char string_var[10] = {'H', 'e', 'l', 'l', 'o', '\0'};

      This is equivalent to the first string, but is done "the hard way". Note both still have room for 10 characters (including the null).

    3. char string_var[10] = {'H', 'e', 'l', 'l', 'o'};

      This is an array of characters, not a string. It is unique.

    4. char string_var[6] = "Hello";

      This will create a string with room for exactly the 5 characters in "Hello" and the null terminator: 6 chars total.

    5. char string_var[] = "Hello";

      This will also create a string with room for exactly the 5 characters in "Hello" and the null terminator: 6 chars total.

    6. Write a definition for a structure type for records consisting of a person's name (up to 80 characters long), wage rate, accrued vacation (a whole number of days), and status which will consist of a single character code. Call the type EmployeeRecord.
      struct EmployeeRecord
      {
      	char   name[80];
      	double rate;		// or float
      	int    vacation;	// or short
      	char   status;
      };