**This book is now obsolete** Please use CSAwesome instead.

# 3.10. Easy Multiple Choice QuestionsΒΆ

These problems are easier than most of those that you will usually see on the AP CS A exam.

- 2
- Whenever the first number is smaller than the second, the remainder is the first number. Remember that % is the remainder and 3 goes into 2 0 times with a remainder of 2.
- 0
- This is the number of times that 3 goes into 2 but the % operator gives you the remainder.
- 3
- Try it. Remember that % gives you the remainder after you divide the first number by the second one.
- 1
- This would be correct if it was 3 % 2 since 2 would go into 3 one time with a remainder of 1.

3-9-1: What does the following code print?

```
System.out.println(2 % 3);
```

- 3
- This is the number of times that 5 goes into 19, but % is the remainder.
- 0
- This would only be true if the first number was evenly divisible by the second number.
- 4
- 5 goes into 19 3 times (15) with a remainder of 4 (19-15=4)
- 1
- This would be correct if it was 19 % 2, but here we are dividing by 5.

3-9-2: What does the following code print?

```
System.out.println(19 % 5);
```

- 0.3333333333333333
- This would be correct if it was 1.0 / 3 or 1 / 3.0.
- 0
- When two integers are divided the results will also be integer and the fractional part is thrown away.
- It will give a run-time error
- You would get a run-time error if it was 1 / 0, because you can not divide by zero.
- 0.3
- Try it. Is this what you get?
- It will give a compile-time error
- Integer division is allowed in Java. It gives an integer result.

3-9-3: What does the following code print?

```
System.out.println(1 / 3);
```

- 24
- This would be true if it was System.out.println(((2 + 3) * 5) - 1), but without the parentheses the multiplication is done first.
- 14
- This would be true if it was System.out.println(2 + (3 * (5 - 1))), but without the parentheses the multiplication is done first and the addition and subtraction are handled from left to right.
- This will give a compile time error.
- This will compile and run. Try it in DrJava. Look up operator precedence in Java.
- 16
- The multiplication is done first (3 * 5 = 15) and then the addition (2 + 15 = 17) and finally the subtraction (17 - 1 = 16).

3-9-4: What does the following code print?

```
System.out.println(2 + 3 * 5 - 1);
```

- 9.6982
- This would be true if it was b = a. What does the (int) do?
- 12
- This is the initial value of b, but then b is assigned to be the result of casting the value in a to an integer. Casting to an integer from a double will truncate (throw away) the digits after the decimal.
- 10
- Java does not round when converting from a double to an integer.
- 9
- When a double is converted into an integer in Java, it truncates (throws away) the digits after the decimal.

3-9-5: Given the following code segment, what is the value of b when it finishes executing?

double a = 9.6982; int b = 12; b = (int) a;

- a random number from 0 to 4
- This would be true if it was (int) (Math.random * 5)
- a random number from 1 to 5
- This would be true if it was ((int) (Math.random * 5)) + 1
- a random number from 5 to 9
- Math.random returns a value from 0 to not quite 1. When you multiply it by 5 you get a value from 0 to not quite 5. When you cast to int you get a value from 0 to 4. Adding 5 gives a value from 5 to 9.
- a random number from 5 to 10
- This would be true if Math.random returned a value between 0 and 1, but it won't ever return 1. The cast to int results in a number from 0 to 4. Adding 5 gives a value from 5 to 9.

3-9-6: Given the following code segment, what is the value of `num`

when it finishes executing?

double value = Math.random(); int num = (int) (value * 5) + 5;

- It will print 0
- This would be true if it was System.out.println(0 / 5)
- It will give a run-time error
- You can't divide by 0 so this cause a run-time error.
- It will give a compile-time error (won't compile)
- You might think that this would be caught at compile time, but it isn't.
- It will print 5
- This would be true if it was System.out.println(5 / 1)

3-9-7: What does the follow code do when it is executed?

System.out.println(5 / 0);

- a random number from 0 to 10
- This would be true if it was (int) (value * 11)
- a random number from 0 to 9
- This would be true if it was (int) (value * 10)
- a random number from -5 to 4
- This would be true if it was (int) (value * 10) - 5
- a random number from -5 to 5
- Math.random returns a random value from 0 to not quite 1. After it is multipied by 11 and cast to integer it will be a value from 0 to 10. Subtracting 5 means it will range from -5 to 5.

3-9-8: Given the following code segment, what is the value of `num`

when it finishes executing?

double value = Math.random(); int num = (int) (value * 11) - 5;

- 0
- This would be true if it was (1 / 3).
- .3
- It will give you more than just one digit after the decimal sign.
- 0.3333333333333333
- The computer can not represent an infinite number of 3's after the decimal point so it only keeps 14 to 15 significant digits.
- 0.3 with an infinite number of 3's following the decimal point
- The computer can not represent an infinite number of 3's after the decimal point.

3-9-9: What will the following code print?

System.out.println(1.0 / 3);

- x = 3, y = 3, z = 9
- This would be true if the x++ wasn't there.
- x = 4, y = 3, z = 9
- Fist x is set to 3, then y is also set to 3, and next z is set to 3 * 3 = 9. Finally x is incremented to 4.
- x = 0, y = 3, z = 0
- You might think that y = x means that y takes x's value, but y is set to a copy of x's value.
- x = 4, y = 4, z = 9
- You might think that y = x means that if x is incremented that y will also be incremented, but y = x only sets y to a copy of x's value and doesn't keep them in sync.

3-9-10: What are the values of x, y, and z after the following code executes?

int x = 3; int y = x; int z = x * y; x++;

- 75
- To convert from binary to decimal use the powers of 2 starting with 2 raised to the 0 power which is 1. So 1001011 is 1 + 2 + 8 + 64 = 75.
- 67
- This would be true if the binary number was 1000011. This would be 1 + 2 + 64 = 67.
- 150
- This would be true if we started at the right hand side with 2, but we start with 1 (2 raised to the 0 power is 1).
- 43
- This would be true if the binary number was 101011.
- 74
- This would be true if the binary number was 1001010.

3-9-11: Which of the following is the decimal value for the binary number 1001011?

- 5
- This would be enough to represent 32 distinct values, so that is more then enough to represent 25 distinct values.
- 4
- This would only be enough to represent 16 distinct values (2 to the 4th).
- 6
- This is more than you need. 2 to the 6th is 64.

3-9-12: How many bits would you need to represent 25 distinct values?

- 34
- To convert from binary to hexadecimal (base 16) convert groups of 4 bits from the right to the left to hexadecimal. The rightmost 4 bits is 0100 which is 4 in hex. The leftmost 4 bits would be 0011 which is 3 in hex.
- 52
- This would be correct if the question had asked for the value in decimal, but it asked for it in hexadecimal (base 16).
- 64
- This would be correct if the question had asked for the value in octal, but it asked for it in hexadecimal (base 16).
- 6
- This is the length of this binary number. Can you convert it to hexadecimal (base 16)?
- B4
- This would be correct if the binary number was 10110100 instead of 110100.

3-9-13: What is the hexadecimal equivalent of the following binary number: 110100?

- 11011101
- This has an extra one in the front.
- 1011001
- The decimal value of 1011001 is (1*64)+ (0 * 32) + (1 * 16) + (1 * 8) + (0 * 4) + (0 * 2) + (1*1) = which is 89 base 10 (decimal)
- 10111011
- Using base 2 the value of 10111011 is: 128+32+16+8+2+1 = 187

3-9-14: What is the binary equivalent of the following base 10 number: 187?