asked 199k views
2 votes
Consider the partially-filled array named a. What does the following loop do? (cin is a Scanner object)int[] a = {1, 3, 7, 0, 0, 0};int size = 3, capacity = 6;int value = cin.nextInt();while (value > 0){a[size] = value;size++;value = cin.nextInt();}1. May crashe at runtime because it can input more elements than the array can hold2. Reads up to 3 values and inserts them in the array in the correct position.3. Reads one value and places it in the remaining first unused space endlessly.4. Reads up to 3 values and places them in the array in the unused space.

1 Answer

5 votes

Answer:

Option 1: May crash at runtime because it can input more elements than the array can hold

Step-by-step explanation:

Given the code as follows:

  1. int[] a = {1, 3, 7, 0, 0, 0};
  2. int size = 3, capacity = 6;
  3. int value = cin.nextInt();
  4. while (value > 0)
  5. {
  6. a[size] = value;
  7. size++;
  8. value = cin.nextInt();
  9. }

From the code above, we know the a is an array with six elements (Line 1). Since the array has been initialized with six elements, the capacity of the array cannot be altered in later stage.

However, a while loop is created to keep prompting for user input an integer and overwrite the value in the array started from index 3 (Line 4- 9). In every round of loop, the index is incremented by 1 (Line 7). If the user input for variable value is always above zero, the while loop will persist. This may reach a point where the index value is out of bound and crash the program. Please note the maximum index value for the array is supposedly be 5.