7.8. Medium Multiple Choice QuestionsΒΆ

These problems are similar to those you will see on the AP CS A exam.

    6-8-1: How many stars are output when the following code is executed?

    for (int i = 0; i < 5; i++) {
       for (int j = 0; j < 5; j++)
          System.out.println("*");
    }
    
  • 10
  • The second loop executes 5 times for each of the 5 times the first loop executes, so the answer should be 5 * 5.
  • 5
  • The second loop executes 5 times for each of the 5 times the first loop executes, so the answer should be 5 * 5.
  • 25
  • The first loop will execute 5 times, and for each time through, the second loop will execute 5 times. So the answer is the number of times through the first loop times the number of times through the second.
  • 50
  • The second loop executes 5 times for each of the 5 times the first loop executes, so the answer should be 5 * 5.
  • 15
  • The second loop executes 5 times for each of the 5 times the first loop executes, so the answer should be 5 * 5.

    6-8-2: Which of the following code segments will produce the displayed output?

    1
    22
    333
    4444
    55555
    
    
    I.   for (int i = 1; i <= 5; i++) {
            for (int j = i; j > 0; j--) {
               System.out.print(i);
            }
            System.out.println();
         }
    
    II.  for (int i = 0; i < 5; i++) {
            for (int j = 0; j < i; j++) {
               System.out.print(i);
            }
            System.out.println();
         }
    
    III. for (int i = 1; i < 5; i++) {
            for (int j = i; j > 0; j--) {
               System.out.print(i);
            }
            System.out.println();
         }
    
    IV.  for (int i = 1; i < 6; i++) {
            for (int j = 0; j < i; j++) {
               System.out.println(i);
            }
         }
    
    V.   for (int i = 0; i < 5; i++) {
            for (int j = 0; j < i; j++) {
               System.out.print(i+1);
            }
            System.out.println();
         }
    
  • I
  • This will loop with i changing from 1 to 5 and then for each i, j will loop from i to 0 printing the value of i and then a new line.
  • II
  • This will loop i from 0 to 4 and j from 0 to i, neglecting to ouput 5.
  • III
  • This will loop with i changing from 1 to 4 and j from i to 0.
  • IV
  • This will loop with i changing from 1 to 5 and j from 0 to i but it will print each value on a different line.
  • V
  • This will loop with i changing from 0 to 4 and j from 0 to i.

    6-8-3: What is printed as a result of the following code segment?

    for (int k = 0; k < 20; k+=2) {
       if (k % 3 == 1)
          System.out.println(k + " ");
    }
    
  • 0 2 4 6 8 10 12 14 16 18
  • This would be correct if we were printing out all of the values of k, not just the ones that have a remainder of 1 when divided by 3.
  • 4 16
  • This is missing the value 10 (10 divided by 3 does have a remainder of 1).
  • 0 6 12 18
  • None of these answers have a remainder of 1 when divided by 3.
  • 1 4 7 10 13 16 19
  • This answer would be correct if k was incremented by 1 instead of 2. K will be 0, 2, 4, 6, 8, 10, 12, 14, 16, 18 in this loop.
  • 4 10 16
  • This will loop with k having a value of 0 to 18 (it will stop when k = 20). It will print out the value of k followed by a space when the remainder of dividing k by 3 is 1.

    6-8-4: Which of the following code segments will produce the displayed output?

    11111
    2222
    333
    44
    5
    
    
    I.   for (int j = 1; j <= 5; j++) {
            for (int k = 5; k >= j; k--) {
               System.out.print(j + " ");
            }
            System.out.println();
         }
    
    II.  for (int j = 1; j <= 5; j++) {
            for (int k = 5; k >= 1; k--) {
               System.out.print(j + " ");
            }
            System.out.println();
         }
    
    III. for (int j = 1; j <= 5; j++) {
            for (int k = 1; k <= j; k++) {
               System.out.print(j + " ");
            }
            System.out.println();
         }
    
    IV.  for (int j = 1; j <= 5; j++) {
            for (int k = 1; k <= 5; k++) {
               System.out.println(j + " ");
            }
         }
    
    V.   for (int j = 1; j <= 5; j++) {
            for (int k = j; k <= 5; k++) {
               System.out.print(k + " ");
            }
            System.out.println();
         }
    
  • I
  • This will loop with j from 1 to 5 and k from 5 to j and print out the value of j and a space. So the first time through the loop it will print 1 five times and the next time it will print out 2 four times and so on.
  • II
  • This will print out each value from 1 to 5 five times.
  • III
  • This will loop with j from 1 to 5 and k from 1 times.
  • IV
  • This will loop j from 1 to 5 and k from 1 to 5, printing each number 5 times.
  • V
  • This loops with j from 1 to 5 and k from j to 5 and prints out the value of k, printing 1 through 5 on the first line, 2 through 5 on the next, and so on.

    6-8-5: What are the values of var1 and var2 after the following code segment is executed and the while loop finishes?

    int var1 = 0;
    int var2 = 2;
    
    while ((var2 != 0) && ((var1 / var2) >= 0)) {
       var1 = var1 + 1;
       var2 = var2 - 1;
    }
    
  • var1 = 0, var2 = 2
  • This would be true if the body of the while loop never executed. This would have happened if the while check was if var1 != 0 instead of var2 != 0
  • var1 = 1, var2 = 1
  • This would be true if the body of the while loop only execued one time, but it executes twice.
  • var1 = 3, var2 = -1
  • This would be true if the body of the while loop executed 3 times, but it executes twice.
  • var1 = 2, var2 = 0
  • The loop starts with var1=0 and var2=2. The while checks that var2 isn't 0 and that var1/var2 is greater than or equal to zero (0/2=0) so this is equal to zero and the body of the while loop will execute. The variable var1 has 1 added to it for a new value of 1. The variable var2 has 1 subtracted from it for a value of 1. At this point var1=1 and var2=1. The while condition is checked again. Since var2 isn't 0 and var1/var2 (1/1=1) is >=0 so the body of the loop will execute a second time. The variable var1 has 1 added to it for a new value of 2. The variable var2 has 1 subtracted from it for a value of 0. At this point var1=2 and var2=0. The while condition is checked again. Since var2 is zero the while loop stops and the value of var1 is 2 and var2 is 0.
  • The loop won't finish executing because of a division by zero.
  • 0/2 won't cause a division by zero. The result is just zero.
Next Section - 7.9. Hard Multiple Choice Questions