Multiple choice

Consider the following C program that attempts to locate an element x in an array Y[ ] using binary search. The program is erroneous.

  1. f(int Y[10], int x) {
  2. int u, j, k;
  3. i = 0; j = 9;
  4. do {
  5. k = (i + j)/2;
  6. if (Y[k] ! = x) && (i < j);
  7. } while ((Y[k] ! = x) && (i < j));
  8. if (Y[k] == x) print f(“x is in the array”);
  9. else print f(“x is not in the array”);
  10. }

On which of the following contents of Y and x does the program fail?

  1. Y is [1 2 3 4 5 6 7 8 9 10] and x <10

  2. Y is [1 3 5 7 9 11 13 15 17 19] and x < 1

  3. Y is [2 2 2 2 2 2 2 2 2 2] and x > 2

  4. Y is [2 4 6 8 10 12 14 16 18 20] and 2 < x < 20 and x is even

Reveal answer Fill a bubble to check yourself
C Correct answer
Explanation