0% found this document useful (0 votes)
142 views38 pages

AP Comp Science MCQ Practice 1

Uploaded by

aryanhalan076
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
142 views38 pages

AP Comp Science MCQ Practice 1

Uploaded by

aryanhalan076
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 38

1. Consider the following method.

public static int mystery(int[] arr)


{
int x = 0;

for (int k = 0; k < arr.length; k = k + 2)


x = x + arr[k];

return x;
}

Assume that the array nums has been declared and initialized as follows.

int[] nums = {3, 6, 1, 0, 1, 4, 2};

What value will be returned as a result of the call mystery(nums) ?


(A) 5
(B) 6
(C) 7
(D) 10
(E) 17

GO ON TO THE NEXT PAGE.


3
Questions 2-3 refer to the following information.

Consider the following partial class declaration.

public class SomeClass


{
private int myA;
private int myB;
private int myC;

// Constructor(s) not shown

public int getA()


{ return myA; }

public void setB(int value)


{ myB = value; }
}

2. The following declaration appears in another class.

SomeClass obj = new SomeClass();

Which of the following code segments will compile without error?


(A) int x = obj.getA();
(B) int x;
obj.getA(x);
(C) int x = obj.myA;
(D) int x = SomeClass.getA();
(E) int x = getA(obj);

3. Which of the following changes to SomeClass will allow other classes to access but not modify the value
of myC ?
(A) Make myC public.
(B) Include the method:
public int getC()
{ return myC; }
(C) Include the method:
private int getC()
{ return myC; }
(D) Include the method:
public void getC(int x)
{ x = myC; }
(E) Include the method:
private void getC(int x)
{ x = myC; }

GO ON TO THE NEXT PAGE.


4
4. Consider the following code segment.

int x = 7;
int y = 3;

if ((x < 10) && (y < 0))


System.out.println("Value is: " + x * y);
else
System.out.println("Value is: " + x / y);

What is printed as a result of executing the code segment?


(A) Value is: 21
(B) Value is: 2.3333333
(C) Value is: 2
(D) Value is: 0
(E) Value is: 1

GO ON TO THE NEXT PAGE.


5
5. Consider the following method.

public ArrayList<Integer> mystery(int n)


{
ArrayList<Integer> seq = new ArrayList<Integer>();

for (int k = 1; k <= n; k++)


seq.add(new Integer(k * k + 3));

return seq;
}

Which of the following is printed as a result of executing the following statement?


System.out.println(mystery(6));

(A) [3, 4, 7, 12, 19, 28]


(B) [3, 4, 7, 12, 19, 28, 39]
(C) [4, 7, 12, 19, 28, 39]
(D) [39, 28, 19, 12, 7, 4]
(E) [39, 28, 19, 12, 7, 4, 3]

GO ON TO THE NEXT PAGE.


6
6. Consider the following method that is intended to determine if the double values d1 and d2 are close
enough to be considered equal. For example, given a tolerance of 0.001, the values 54.32271 and
54.32294 would be considered equal.

/** @return true if d1 and d2 are within the specified tolerance,


* false otherwise
*/
public boolean almostEqual(double d1, double d2, double tolerance)
{
/* missing code */
}

Which of the following should replace /* missing code */ so that almostEqual will work as
intended?
(A) return (d1 - d2) <= tolerance;
(B) return ((d1 + d2) / 2) <= tolerance;
(C) return (d1 - d2) >= tolerance;
(D) return ((d1 + d2) / 2) >= tolerance;
(E) return Math.abs(d1 - d2) <= tolerance;

GO ON TO THE NEXT PAGE.


7
7. Consider the following class declaration.

public class Person


{
private String myName;
private int myYearOfBirth;

public Person(String name, int yearOfBirth)


{
myName = name;
myYearOfBirth = yearOfBirth;
}

public String getName()


{ return myName; }

public void setName(String name)


{ myName = name; }

// There may be instance variables, constructors, and methods that are not shown.
}

Assume that the following declaration has been made.

Person student = new Person("Thomas", 1995);

Which of the following statements is the most appropriate for changing the name of student from
"Thomas" to "Tom" ?
(A) student = new Person("Tom", 1995);
(B) student.myName = "Tom";
(C) student.getName("Tom");
(D) student.setName("Tom");
(E) Person.setName("Tom");

GO ON TO THE NEXT PAGE.


8
8. Consider the following class declaration.

public class Student


{
private String myName;
private int myAge;

public Student()
{ /* implementation not shown */ }

public Student(String name, int age)


{ /* implementation not shown */ }

// No other constructors
}

Which of the following declarations will compile without error?

I. Student a = new Student();


II. Student b = new Student("Juan", 15);
III. Student c = new Student("Juan", "15");
(A) I only
(B) II only
(C) I and II only
(D) I and III only
(E) I, II, and III

GO ON TO THE NEXT PAGE.


9
9. Consider the following method that is intended to return the sum of the elements in the array key.

public static int sumArray(int[] key)


{
int sum = 0;

for (int i = 1; i <= key.length; i++)


{
/* missing code */
}

return sum;
}

Which of the following statements should be used to replace /* missing code */ so that sumArray
will work as intended?
(A) sum = key[i];
(B) sum += key[i - 1];
(C) sum += key[i];
(D) sum += sum + key[i - 1];
(E) sum += sum + key[i];

GO ON TO THE NEXT PAGE.


10
Questions 10-11 refer to the following information.

Consider the following instance variable and methods. You may assume that data has been initialized with
length > 0. The methods are intended to return the index of an array element equal to target, or -1 if no such
element exists.

private int[] data;

public int seqSearchRec(int target)


{
return seqSearchRecHelper(target, data.length - 1);
}

private int seqSearchRecHelper(int target, int last)


{
// Line 1

if (data[last] == target)
return last;
else
return seqSearchRecHelper(target, last - 1);
}

10. For which of the following test cases will the call seqSearchRec(5) always result in an error?

I. data contains only one element.


II. data does not contain the value 5.
III. data contains the value 5 multiple times.

(A) I only
(B) II only
(C) III only
(D) I and II only
(E) I, II, and III

11. Which of the following should be used to replace // Line 1 in seqSearchRecHelper so that
seqSearchRec will work as intended?
(A) if (last <= 0)
return -1;
(B) if (last < 0)
return -1;
(C) if (last < data.length)
return -1;
(D) while (last < data.length)
(E) while (last >= 0)

GO ON TO THE NEXT PAGE.


11
12. Consider the following method.

public String mystery(String input)


{
String output = "";

for (int k = 1; k < input.length(); k = k + 2)


{
output += input.substring(k, k + 1);
}

return output;
}

What is returned as a result of the call mystery("computer") ?


(A) "computer"
(B) "cmue"
(C) "optr"
(D) "ompute"
(E) Nothing is returned because an IndexOutOfBoundsException is thrown.

GO ON TO THE NEXT PAGE.


12
13. Consider the following code segment.

int[] arr = {7, 2, 5, 3, 0, 10};


for (int k = 0; k < arr.length - 1; k++)
{
if (arr[k] > arr[k + 1])
System.out.print(k + " " + arr[k] + " ");
}

What will be printed as a result of executing the code segment?


(A) 0 2 2 3 3 0
(B) 0 7 2 5 3 3
(C) 0 7 2 5 5 10
(D) 1 7 3 5 4 3
(E) 7 2 5 3 3 0

GO ON TO THE NEXT PAGE.


13
14. Consider the following interface and class declarations.

public interface Vehicle


{
/** @return the mileage traveled by this Vehicle
*/
double getMileage();
}

public class Fleet


{
private ArrayList<Vehicle> myVehicles;

/** @return the mileage traveled by all vehicles in this Fleet


*/
public double getTotalMileage()
{
double sum = 0.0;

for (Vehicle v : myVehicles)


{
sum += /* expression */ ;
}

return sum;
}

// There may be instance variables, constructors, and methods that are not shown.
}

Which of the following can be used to replace /* expression */ so that getTotalMileage returns
the total of the miles traveled for all vehicles in the fleet?
(A) getMileage(v)
(B) myVehicles[v].getMileage()
(C) Vehicle.get(v).getMileage()
(D) myVehicles.get(v).getMileage()
(E) v.getMileage()

GO ON TO THE NEXT PAGE.


14
15. Consider the following method, isSorted, which is intended to return true if an array of integers is
sorted in nondecreasing order and to return false otherwise.

/** @param data an array of integers


* @return true if the values in the array appear in sorted (nondecreasing) order
*/
public static boolean isSorted(int[] data)
{
/* missing code */
}

Which of the following can be used to replace /* missing code */ so that isSorted will work
as intended?

I. for (int k = 1; k < data.length; k++)


{
if (data[k - 1] > data[k])
return false;
}
return true;

II. for (int k = 0; k < data.length; k++)


{
if (data[k] > data[k + 1])
return false;
}
return true;

III. for (int k = 0; k < data.length - 1; k++)


{
if (data[k] > data[k + 1])
return false;
else
return true;
}
return true;

(A) I only
(B) II only
(C) III only
(D) I and II only
(E) I and III only

GO ON TO THE NEXT PAGE.


15
16. Consider the following incomplete method that is intended to return an array that contains the contents of its first
array parameter followed by the contents of its second array parameter.

public static int[] append(int[] a1, int[] a2)


{
int[] result = new int[a1.length + a2.length];

for (int j = 0; j < a1.length; j++)


result[j] = a1[j];

for (int k = 0; k < a2.length; k++)


result[ /* index */ ] = a2[k];

return result;
}

Which of the following expressions can be used to replace /* index */ so that append will work as
intended?
(A) j
(B) k
(C) k + a1.length - 1
(D) k + a1.length
(E) k + a1.length + 1

GO ON TO THE NEXT PAGE.


16
17. Consider the following code segment.

int[] arr = {1, 2, 3, 4, 5, 6, 7};

for (int k = 3; k < arr.length - 1; k++)


arr[k] = arr[k + 1];

Which of the following represents the contents of arr as a result of executing the code segment?
(A) {1, 2, 3, 4, 5, 6, 7}
(B) {1, 2, 3, 5, 6, 7}
(C) {1, 2, 3, 5, 6, 7, 7}
(D) {1, 2, 3, 5, 6, 7, 8}
(E) {2, 3, 4, 5, 6, 7, 7}

GO ON TO THE NEXT PAGE.


17
18. Assume that myList is an ArrayList that has been correctly constructed and populated with objects.
Which of the following expressions produces a valid random index for myList ?
(A) (int)( Math.random() * myList.size() ) - 1
(B) (int)( Math.random() * myList.size() )
(C) (int)( Math.random() * myList.size() ) + 1
(D) (int)( Math.random() * (myList.size() + 1) )
(E) Math.random(myList.size())

GO ON TO THE NEXT PAGE.


18
19. Assume that a and b have been defined and initialized as int values. The expression

!(!(a != b ) && (b > 7))

is equivalent to which of the following?


(A) (a != b) || (b < 7)
(B) (a != b) || (b <= 7)
(C) (a == b) || (b <= 7)
(D) (a != b) && (b <= 7)
(E) (a == b) && (b > 7)

GO ON TO THE NEXT PAGE.


19
20. Consider the following method.

public static void arrayMethod(int nums[])


{
int j = 0;
int k = nums.length - 1;

while (j < k)
{
int x = nums[j];
nums[j] = nums[k];
nums[k] = x;
j++;
k--;
}
}

Which of the following describes what the method arrayMethod() does to the array nums?
(A) The array nums is unchanged.
(B) The first value in nums is copied to every location in the array.
(C) The last value in nums is copied to every location in the array.
(D) The method generates an ArrayIndexOutOfBoundsException.
(E) The contents of the array nums are reversed.

GO ON TO THE NEXT PAGE.


20
21. Consider the following method, which is intended to return the element of a 2-dimensional array that is closest in
value to a specified number, val.

/** @return the element of 2-dimensional array mat whose value is closest to val */
public double findClosest(double[][] mat, double val)
{
double answer = mat[0][0];
double minDiff = Math.abs(answer - val);
for (double[] row : mat)
{
for (double num : row)
{
if ( /* missing code */ )
{
answer = num;
minDiff = Math.abs(num - val);
}
}
}
return answer;
}

Which of the following could be used to replace /* missing code */ so that findClosest will work as
intended?
(A) val - row[num] < minDiff
(B) Math.abs(num - minDiff) < minDiff
(C) val - num < 0.0
(D) Math.abs(num - val) < minDiff
(E) Math.abs(row[num] - val) < minDiff

GO ON TO THE NEXT PAGE.


21
22. Consider the following Book and AudioBook classes.

public class Book


{
private int numPages;
private String bookTitle;

public Book(int pages, String title)


{
numPages = pages;
bookTitle = title;
}

public String toString()


{
return bookTitle + " " + numPages;
}

public int length()


{
return numPages;
}
}

public class AudioBook extends Book


{
private int numMinutes;

public AudioBook(int minutes, int pages, String title)


{
super(pages, title);
numMinutes = minutes;
}

public int length()


{
return numMinutes;
}

public double pagesPerMinute()


{
return ((double) super.length()) / numMinutes;
}
}

GO ON TO THE NEXT PAGE.


22
Consider the following code segment that appears in a class other than Book or AudioBook.

Line 1: Book[] books = new Book[2];


Line 2: books[0] = new AudioBook(100, 300, "The Jungle");
Line 3: books[1] = new Book(400, "Captains Courageous");
Line 4: System.out.println(books[0].pagesPerMinute());
Line 5: System.out.println(books[0].toString());
Line 6: System.out.println(books[0].length());
Line 7: System.out.println(books[1].toString());

Which of the following best explains why the code segment will not compile?
(A) Line 2 will not compile because variables of type Book may not refer to variables of type AudioBook.
(B) Line 4 will not compile because variables of type Book may only call methods in the Book class.
(C) Line 5 will not compile because the AudioBook class does not have a method named toString
declared or implemented.
(D) Line 6 will not compile because the statement is ambiguous. The compiler cannot determine which
length method should be called.
(E) Line 7 will not compile because the element at index 1 in the array named books may not have been
initialized.

GO ON TO THE NEXT PAGE.


23
23. Consider the following instance variable and method.

private List<String> animals;

public void manipulate()


{
for (int k = animals.size() - 1; k > 0; k--)
{
if (animals.get(k).substring(0, 1).equals("b"))
{
animals.add(animals.size() - k, animals.remove(k));
}
}
}

Assume that animals has been instantiated and initialized with the following contents.

["bear", "zebra", "bass", "cat", "koala", "baboon"]

What will the contents of animals be as a result of calling manipulate ?


(A) ["baboon", "zebra", "bass", "cat", "bear", "koala"]
(B) ["bear", "zebra", "bass", "cat", "koala", "baboon"]
(C) ["baboon", "bear", "zebra", "bass", "cat", "koala"]
(D) ["bear", "baboon", "zebra", "bass", "cat", "koala"]
(E) ["zebra", "cat", "koala", "baboon", "bass", "bear"]

GO ON TO THE NEXT PAGE.


24
24. Consider the following code segment.

int[] oldArray = {1, 2, 3, 4, 5, 6, 7, 8, 9};


int[][] newArray = new int[3][3];

int row = 0;
int col = 0;
for (int value : oldArray)
{
newArray[row][col] = value;
row++;
if ((row % 3) == 0)
{
col++;
row = 0;
}
}

System.out.println(newArray[0][2]);

What is printed as a result of executing the code segment?


(A) 3
(B) 4
(C) 5
(D) 7
(E) 8

GO ON TO THE NEXT PAGE.


25
25. A rectangular box fits inside another rectangular box if and only if the height, width, and depth of the smaller
box are each less than the corresponding values of the larger box. Consider the following three interface
declarations that are intended to represent information necessary for rectangular boxes.

I. public interface RBox


{
/** @return the height of this RBox */
double getHeight();

/** @return the width of this RBox */


double getWidth();

/** @return the depth of this RBox */


double getDepth();
}

II. public interface RBox


{
/** @return true if the height of this RBox is less than the height of other;
* false otherwise
*/
boolean smallerHeight(RBox other);

/** @return true if the width of this RBox is less than the width of other;
* false otherwise
*/
boolean smallerWidth(RBox other);

/** @return true if the depth of this RBox is less than the depth of other;
* false otherwise
*/
boolean smallerDepth(RBox other);
}

III. public interface RBox


{
/** @return the surface area of this RBox */
double getSurfaceArea();

/** @return the volume of this RBox */


double getVolume();
}

Which of the interfaces, if correctly implemented by a Box class, would be sufficient functionality for a user of
the Box class to determine if one Box can fit inside another?
(A) I only
(B) II only
(C) III only
(D) I and II only
(E) I, II, and III

GO ON TO THE NEXT PAGE.


26
26. Assume that the array arr has been defined and initialized as follows.

int[] arr = /* initial values for the array */ ;

Which of the following will correctly print all of the odd integers contained in arr but none of the even
integers contained in arr ?
(A) for (int x : arr)
if (x % 2 == 1)
System.out.println(x);
(B) for (int k = 1; k < arr.length; k++)
if (arr[k] % 2 == 1)
System.out.println(arr[k]);
(C) for (int x : arr)
if (x % 2 == 1)
System.out.println(arr[x]);
(D) for (int k = 0; k < arr.length; k++)
if (arr[k] % 2 == 1)
System.out.println(k);
(E) for (int x : arr)
if (arr[x] % 2 == 1)
System.out.println(arr[x]);

GO ON TO THE NEXT PAGE.


27
Questions 27-28 refer to the following method.

public static int mystery(int n)


{
int x = 1;
int y = 1;

// Point A

while (n > 2)
{
x = x + y;

// Point B

y = x – y;
n--;
}

// Point C

return x;
}

27. What value is returned as a result of the call mystery(6) ?


(A) 1
(B) 5
(C) 6
(D) 8
(E) 13

28. Which of the following is true of method mystery ?


(A) x will sometimes be 1 at // Point B.
(B) x will never be 1 at // Point C.
(C) n will never be greater than 2 at // Point A.
(D) n will sometimes be greater than 2 at // Point C.
(E) n will always be greater than 2 at // Point B.

GO ON TO THE NEXT PAGE.


28
29. Consider the following code segment.

for (int k = 1; k <= 100; k++)


if ((k % 4) == 0)
System.out.println(k);

Which of the following code segments will produce the same output as the code segment above?
(A) for (int k = 1; k <= 25; k++)
System.out.println(k);
(B) for (int k = 1; k <= 100; k = k + 4)
System.out.println(k);
(C) for (int k = 1; k <= 100; k++)
System.out.println(k % 4);
(D) for (int k = 4; k <= 25; k = 4 * k)
System.out.println(k);
(E) for (int k = 4; k <= 100; k = k + 4)
System.out.println(k);

GO ON TO THE NEXT PAGE.


29
30. Consider the following method.

public static String scramble(String word, int howFar)


{
return word.substring(howFar + 1, word.length()) +
word.substring(0, howFar);
}

What value is returned as a result of the call scramble("compiler", 3)?


(A) "compiler"
(B) "pilercom"
(C) "ilercom"
(D) "ilercomp"
(E) No value is returned because an IndexOutOfBoundsException will be thrown.

GO ON TO THE NEXT PAGE.


30
31. Consider the following method.

public void mystery(int[] data)


{
for (int k = 0; k < data.length - 1; k++)
data[k + 1] = data[k] + data[k + 1];
}

The following code segment appears in another method in the same class.

int[] values = {5, 2, 1, 3, 8};


mystery(values);
for (int v : values)
System.out.print(v + " ");
System.out.println();

What is printed as a result of executing the code segment?


(A) 5 2 1 3 8
(B) 5 7 3 4 11
(C) 5 7 8 11 19
(D) 7 3 4 11 8
(E) Nothing is printed because an ArrayIndexOutOfBoundsException is thrown during the execution
of method mystery.

GO ON TO THE NEXT PAGE.


31
32. Consider the following method.

public int compute(int n, int k)


{
int answer = 1;

for (int i = 1; i <= k; i++)


answer *= n;

return answer;
}

Which of the following represents the value returned as a result of the call compute(n, k) ?
(A) n * k
(B) n!

(C) nk

(D) 2k

(E) k n

GO ON TO THE NEXT PAGE.


32
33. Consider the following code segment.

int sum = 0;
int k = 1;
while (sum < 12 || k < 4)
sum += k;

System.out.println(sum);

What is printed as a result of executing the code segment?


(A) 6
(B) 10
(C) 12
(D) 15
(E) Nothing is printed due to an infinite loop.

GO ON TO THE NEXT PAGE.


33
34. Consider the following class declarations.

public class Point


{
private double x; // x-coordinate
private double y; // y-coordinate

public Point()
{
x = 0;
y = 0;
}

public Point(double a, double b)


{
x = a;
y = b;
}

// There may be instance variables, constructors, and methods that are not shown.
}

public class Circle


{
private Point center;
private double radius;

/** Constructs a circle where (a, b) is the center and r is the radius.
*/
public Circle(double a, double b, double r)
{
/* missing code */
}
}

Which of the following replacements for /* missing code */ will correctly implement the Circle
constructor?

I. center = new Point();


radius = r;
II. center = new Point(a, b);
radius = r;
III. center = new Point();
center.x = a;
center.y = b;
radius = r;
(A) I only
(B) II only
(C) III only
(D) II and III only
(E) I, II, and III

GO ON TO THE NEXT PAGE.


34
35. Consider the following code segment.

int num = 2574;


int result = 0;

while (num > 0)


{
result = result * 10 + num % 10;
num /= 10;
}
System.out.println(result);

What is printed as a result of executing the code segment?


(A) 2
(B) 4
(C) 18
(D) 2574
(E) 4752

GO ON TO THE NEXT PAGE.


35
36. Consider the following method.

public void test(int x)


{
int y;

if (x % 2 == 0)
y = 3;
else if (x > 9)
y = 5;
else
y = 1;

System.out.println("y = " + y);


}

Which of the following test data sets would test each possible output for the method?
(A) 8, 9, 12
(B) 7, 9, 11
(C) 8, 9, 11
(D) 8, 11, 13
(E) 7, 9, 10

GO ON TO THE NEXT PAGE.


36
37. Consider the following code segment.

int x = 1;
while ( /* missing code */ )
{
System.out.print(x + " ");
x = x + 2;
}

Consider the following possible replacements for /* missing code */.

I. x < 6
II. x != 6
III. x < 7

Which of the proposed replacements for /* missing code */ will cause the code segment to print only
the values 1 3 5 ?
(A) I only
(B) II only
(C) I and II only
(D) I and III only
(E) I, II, and III

GO ON TO THE NEXT PAGE.


37
38. Assume that x and y have been declared and initialized with int values. Consider the following Java
expression.

(y > 10000) || (x > 1000 && x < 1500)

Which of the following is equivalent to the expression given above?


(A) (y > 10000 || x > 1000) && (y > 10000 || x < 1500)
(B) (y > 10000 || x > 1000) || (y > 10000 || x < 1500)
(C) (y > 10000) && (x > 1000 || x < 1500)
(D) (y > 10000 && x > 1000) || (y > 10000 && x < 1500)
(E) (y > 10000 && x > 1000) && (y > 10000 && x < 1500)

GO ON TO THE NEXT PAGE.


38
39. Consider the following recursive method.

public int recur(int n)


{
if (n <= 10)
return n * 2;
else
return recur(recur(n / 3));
}

What value is returned as a result of the call recur(27) ?


(A) 8
(B) 9
(C) 12
(D) 16
(E) 18

GO ON TO THE NEXT PAGE.


39
40. Consider the following recursive method.

public static void whatsItDo(String str)


{
int len = str.length();
if (len > 1)
{
String temp = str.substring(0, len – 1);
whatsItDo(temp);
System.out.println(temp);
}
}

What is printed as a result of the call whatsItDo("WATCH") ?


(A) WATC
WAT
WA
W
(B) WATCH
WATC
WAT
WA
(C) W
WA
WAT
WATC
(D) W
WA
WAT
WATC
WATCH
(E) WATCH
WATC
WAT
WA
W
WA
WAT
WATC
WATCH

END OF SECTION I

IF YOU FINISH BEFORE TIME IS CALLED,


YOU MAY CHECK YOUR WORK ON THIS SECTION.

DO NOT GO ON TO SECTION II UNTIL YOU ARE TOLD TO DO SO.

40

You might also like