Key to CSE143 Midterm, Winter 2006 handout #20
1. Method Call Value Returned
------------------------------------------
mystery(4, 19) 1
mystery(32, 56) 8
mystery(12, 20) 4
mystery(4, 18) 2
mystery(48, 128) 16
2. One possible solution appears below.
public void writeSquares(int n) {
if (n < 1)
throw new IllegalArgumentException();
else if (n == 1)
System.out.print(1);
else if (n % 2 == 1) {
System.out.print(n * n + ", ");
writeSquares(n - 1);
} else {
writeSquares(n - 1);
System.out.print(", " + n * n);
}
}
3. One possible solution appears below.
public void printEvenOddSum() {
int evenSum = 0;
int oddSum = 0;
boolean even = true;
ListNode current = front;
while (current != null) {
if (even)
evenSum += current.data;
else
oddSum += current.data;
even = !even;
current = current.next;
}
System.out.println("even sum = " + evenSum);
System.out.println("odd sum = " + oddSum);
}
4. Statement Output
------------------------------------------------------------
var1.method1(); compiler error
var2.method1(); Rain 1
var1.method2(); Sleet 2/Snow 2/Sleet 3
var2.method2(); Rain 2
var3.method2(); Sleet 2/Snow 2/Fog 3
var4.method2(); compiler error
var5.method2(); Sleet 2/Snow 2/Fog 3
var1.method3(); Sleet 3
var2.method3(); Snow 3
var3.method3(); Fog 3
var4.method3(); compiler error
var5.method3(); Fog 3
((Rain)var3).method1(); runtime error
((Fog)var5).method1(); Fog 1
((Sleet)var3).method1(); compiler error
((Sleet)var3).method3(); Fog 3
((Fog)var6).method3(); runtime error
((Snow)var4).method2(); Snow 2
((Sleet)var4).method3(); runtime error
((Rain)var6).method3(); Snow 3
5. One possible solution appears below.
public boolean isConsecutive(Stack s) {
if (s.size() <= 1)
return true;
else {
Queue q = new LinkedQueue();
int prev = s.pop();
q.enqueue(prev);
boolean ok = true;
while (!s.isEmpty()) {
int next = s.pop();
if (prev - next != 1)
ok = false;
q.enqueue(next);
prev = next;
}
while (!q.isEmpty())
s.push(q.dequeue());
while (!s.isEmpty())
q.enqueue(s.pop());
while (!q.isEmpty())
s.push(q.dequeue());
return ok;
}
}
6. One possible solution appears below.
public void printInversions() {
for (int i = 0; i < size - 1; i++)
for (int j = i + 1; j < size; j++)
if (elementData[i] > elementData[j])
System.out.println("(" + elementData[i] + ", "
+ elementData[j] + ")");
}
Stuart Reges
Last modified: Fri Sep 16 16:16:07 PDT 2011