CSE142 Sample Midterm handout #15 Spring 2005 1. Expressions, 10 points. For each expression in the left-hand column, indicate its value in the right-hand column. Be sure to list a constant of appropriate type (e.g., 7.0 rather than 7 for a double, Strings in quotes). Expression Value 13 + 2 * 5/3 __________ 2.5 * 4 * 3/12 + 1.5 __________ 85 % 10 + 4 % 10 - 17 % 3 __________ 2 + 3 + "." + (3 + 4) + 2 * 3 __________ 482/10/5/2.0 * 2 + 14/5 __________ 2. Parameter Mystery, 20 points. Consider the following program. public class Mystery { public static void main(String[] args) { String a = "king"; String b = "two"; String c = "queen"; String two = "five"; sentence(a, b, c); sentence("b", c, c); sentence(two, "two", a); sentence(c, a, b); sentence(two, "queen", b); } public static void sentence(String b, String c, String a) { System.out.println("a " + c + " and a " + a + " beats a " + b); } } List below the output produced by this program. 3. Simulation, 15 points. Consider the following method: public static int mystery(int x, int y) { int z = 0; while (y > 0) { z = z + x; x = x + y; y--; } return z; } For each call below, indicate what value is returned: Method Call Value Returned mystery(6, 0) _______________ mystery(8, 1) _______________ mystery(3, 3) _______________ mystery(4, 2) _______________ mystery(1, 4) _______________ 4. Assertions, 15 points. You will identify various assertions as being either always true, never true or sometimes true/sometimes false at various points in program execution. The comments in the method below indicate the points of interest. public static int mystery(Scanner console) { int prev = 0; int count = 0; int next = console.nextInt(); // Point A while (next != 0) { // Point B if (next == prev) { // Point C count++; } prev = next; next = console.nextInt(); // Point D } // Point E return count; } Fill in the table below with the words ALWAYS, NEVER or SOMETIMES. next == 0 prev == 0 next == prev +---------------------+---------------------+---------------------+ Point A | | | | +---------------------+---------------------+---------------------+ Point B | | | | +---------------------+---------------------+---------------------+ Point C | | | | +---------------------+---------------------+---------------------+ Point D | | | | +---------------------+---------------------+---------------------+ Point E | | | | +---------------------+---------------------+---------------------+ 5. Programming, 15 points. Write a method numUnique that takes three integers as parameters and that returns the number of unique integers among the three. For example, if the following call is made: numUnique(18, 3, 4) the method should return 3 because the parameters represent 3 different numbers (the values 18, 3 and 4). By contrast, the following call: numUnique(6, 6, 6) would return 1 because there is only 1 unique number among the three parameters (the value 6). The values passed to your method might appear in any order whatsoever, so you cannot assume that duplicate values would appear together. For example, if the following call is made: numUnique(7, 31, 7) the method should return 2 because there are 2 unique numbers among the parameters (the values 7 and 31). Write your solution to numUnique below. 6. Programming, 15 points. Write a method printRange that takes two integers as parameters, a low and a high, and that prints out all integers in the range from low to high inclusive inside square brackets and separated by commas. For example, the call: printRange(5, 10); should produce the following output: [5,6,7,8,9,10] Your method should produce a complete line of output. If low and high are equal, the output should be a list with just one number. If low is larger than high, the output should be an empty list (with just the square brackets). Your method should also work properly for negative integers. For example, the following series of calls: printRange(3, 3); printRange(10, 1); printRange(-10, -5); printRange(-5,-10); should produce the following four lines of output: [3] [] [-10,-9,-8,-7,-6,-5] [] Write your solution to printRange below. 7. Programming, 10 points. Write a method numWords that takes a String as a parameter and that returns the number of words in the String. By definition, words are separated by one or more spaces. For example: numWords("how many words here?") should return 4. Notice that words can contain punctuation marks. Any non-empty sequence of non-space characters can be a word. There might be spaces at the beginning or end of the String. For example: numWords(" how about merry-go-round and !&$%--$$!!*() ") should return 5. You may not construct any other objects to solve this problem (e.g., you can't use a Scanner or tokenizer). You may assume that the String has no other whitespace characters such as tabs or newline characters. Your method has to pay attention only to spaces to decide how many words there are. Write your solution to numWords below.
Stuart Reges
Last modified: Fri Apr 29 10:47:10 PDT 2005