Difference between revisions of "CSC212 Midterm Exam Prep 2014"

From dftwiki3
Jump to: navigation, search
(Problem #3)
(Problem #2)
 
(28 intermediate revisions by the same user not shown)
Line 5: Line 5:
 
<bluebox>
 
<bluebox>
 
This is a sample of problems to get you ready for the midterm exam.
 
This is a sample of problems to get you ready for the midterm exam.
The midterm will be ''closed-book'', ''closed-computers'', and on paper.
+
The midterm will be ''closed-book'', ''closed-computers'', and on paper. '''You can see the answers to the questions by highlighting the white areas under each question.'''
 
</bluebox>
 
</bluebox>
  
Line 14: Line 14:
  
 
* Assume that X, Y and Z are integer variables.
 
* Assume that X, Y and Z are integer variables.
 
+
<br />
 
;Question 1
 
;Question 1
 
: Write the expression that is true if X is strictly the largest of the three variables X, Y and Z. For example, if X is 50, Y is 40 and Z is 45, the expression should be true, but if X is 50, Y is 40, and Z is 50, the expression should be false, since X is not strictly greater than Z.
 
: Write the expression that is true if X is strictly the largest of the three variables X, Y and Z. For example, if X is 50, Y is 40 and Z is 45, the expression should be true, but if X is 50, Y is 40, and Z is 50, the expression should be false, since X is not strictly greater than Z.
Line 20: Line 20:
 
     (______) _____ (______)
 
     (______) _____ (______)
  
 +
<br />
 +
<font color="white">(X > Y) && (X > Z)</font>
  
* Assume that s1, s2 and s3 are Strings.
+
<!--
;Question 2
+
;Question 2 (optional--this won't be on the midterm)
 +
: Assume that s1, s2 and s3 are Strings.
 
: Write the expression that is true if s1 is strictly the largest of the three variables s1, s2 and s3, in alphabetical order.  For example, if s1 is "alpha", s2 is "beta" and s3="gamma", the expression should be false, but if s1 is "zeta", s2 is "epsilon", and s3 is "alpha", the expression should be true.   
 
: Write the expression that is true if s1 is strictly the largest of the three variables s1, s2 and s3, in alphabetical order.  For example, if s1 is "alpha", s2 is "beta" and s3="gamma", the expression should be false, but if s1 is "zeta", s2 is "epsilon", and s3 is "alpha", the expression should be true.   
 +
 +
 +
    (______) _____ (______)
 +
 +
 
<br />
 
<br />
 +
<font color="white">( X.compareTo( Y ) == 1) && ( X.compareTo( Z ) ==1 ).  This one is just for your information.  We didn't use the compareTo method, so you won't be tested on it.</font>
 +
-->
 +
 
=Problem #2=
 
=Problem #2=
 
<br />
 
<br />
* Assume that we have an array of ints, table, declared as follows:
+
* Assume that we have an array of ints, '''table''', declared as follows:
  
 
       int[] table = new int[] { 10, 20, 5, 15, 25, 0, 3 };
 
       int[] table = new int[] { 10, 20, 5, 15, 25, 0, 3 };
  
;Question 3
+
;Question 1
 
: Write the java code required to print all the elements of the array table.
 
: Write the java code required to print all the elements of the array table.
 +
<font color="white">
 +
for ( int i=0; i<table.length; i++ )
 +
&nbsp;&nbsp;System.out.println( table[i] );
 +
</font>
  
;Question 4
+
;Question 2
 
: write the java code required to find the largest element of table and print it on the screen.
 
: write the java code required to find the largest element of table and print it on the screen.
 +
<font color="white">int max=table[0];<br />for ( int i=1; i<table.length; i++ )<br />&nbsp;&nbsp;if (table[i]>max)<br />&nbsp;&nbsp;&nbsp;&nbsp;max = table[i];<br />System.out.println(  max );<br /></font>
  
; Question 5
+
; Question 3
 
: write the java code required to replace all the 0 element of table with -1.
 
: write the java code required to replace all the 0 element of table with -1.
 +
<font color="white">for ( int i=1; i<table.length; i++ )<br />&nbsp;&nbsp;if (table[i]==0) table[i] = -1;<br /></font>
  
 
<br />
 
<br />
 +
 
=Problem #3=
 
=Problem #3=
 
<br />
 
<br />
Line 62: Line 80:
 
</source>
 
</source>
  
<onlydft>
+
<font color="white"><br />3<br />E  L  L <br />G  E  L <br />G  G  E <br /></font>
 +
<br />
  
  3
+
=Problem #4=
  E L L
+
<br />
  G  E  L
+
* Assume the ArrayList '''fibonacci''' is initialized as follows:
G  G  E
+
<br />
+
::<source lang="java">
</onlydft>
+
ArrayList fibonacci = new ArrayList();
 +
 
 +
fibonacci.add( 1 );
 +
fibonacci.add( 1 );
 +
</source>
 +
<br />
 +
 
 +
; Question 1
 +
: Write a for-loop that will compute 10 more fibonacci term and store them in the array.
 +
<br />
 +
<font color="white"><br />for (int i=2; i<2+10; i++)<br />&nbsp;&nbsp;fibonacci.add( (int) fibonacci.get( i-1 ) + (int) fibonacci.get( i-2 ) );<br /></font>
 +
<br />
 +
; Question 2
 +
: Same question, but using a LinkedList instead of an ArrayList.
 +
<br />
 +
LinkedList fibonacci = new LinkedList();
 +
<font color="white"><br />for (int i=2; i<2+10; i++)<br />&nbsp;&nbsp;fibonacci.add( (int) fibonacci.get( i-1 ) + (int) fibonacci.get( i-2 ) );<br /></font>
 +
<br />
 +
<tanbox>
 +
;ArrayList
 +
: use '''add( Object o )''' to add an element, and '''get( int index)''' to access an element at some location.
 +
;LinkedList
 +
: use '''add( Object o )''' to add an element, and '''get( int index )''' to access an element at some location.
 +
</tanbox>
 +
<br />
 +
 
 +
=Problem #5=
 +
 
 +
;Question 1
 +
: In a singly-linked list containing several thousands of items, do the '''remove-from-tail''' and the '''remove-from-front''' operations take the same amount of time to operate? Why or why not?
 +
 
 +
<br />
 +
<font color="white">No, the remove from tail requires a loop to find the node that points to the last node in the list, so that the pointer tail can be moved to that one-before-last node. So the remove-from-tail requires looping thousands of time to get to the one-before-last node. Remove-from-front requires only a fixed number of operations.</font>
 +
 
 +
=Problem #6=
 +
<br />
 +
<center>[[Image:DoublyLinkedList.png|500px]]</center>
 +
<br />
 +
;Question 1
 +
:Write the code necessary to remove the node containing the string "beta" from the list. The result should be a list containing the series "alpha", "delta", and "epsilon".
 +
<br />
 +
<font color="white">IntDLLNode temp = head.next;<br />head.next = temp.next;<br />temp.next.prev = head;<br /></font>
 +
<br />
 +
;Question 2
 +
: Write the code that will print the contents of all the cells of a doubly-linked list, no matter how many nodes it contains.
 +
<font color="white">
 +
IntDLLNode temp = head;<br />while ( temp != null ) {<br />&nbsp;&nbsp;System.out.println( temp.info );<br />&nbsp;&nbsp;temp = temp.next;<br />}<br /></font>
 +
 
 +
=Problem #7=
 +
<br />
 +
;Question 1
 +
: What is a circular list?
 +
<br />
 +
<font color="white">See Section 3.3 in Drozdek</font>
 +
;Question 2
 +
: What is a skip-list? What is its advantage?
 +
<font color="white">See Section 3.4 in Drozdek</font>
 +
 
 +
<br />
 +
<br />
 +
<br />
 +
<br />
 +
<br />
 +
<br />
 +
<br />
 +
<br />
 +
<br />
 +
[[Category:CSC212]]

Latest revision as of 17:39, 13 October 2014

--D. Thiebaut (talk) 17:52, 7 October 2014 (EDT)



This is a sample of problems to get you ready for the midterm exam. The midterm will be closed-book, closed-computers, and on paper. You can see the answers to the questions by highlighting the white areas under each question.


Problem #1


  • Fill in the spaces marked with ____ to complete the following Boolean expressions. Do not use the Boolean operator "!" in your answer. Write only in the spaces marked with ____.
  • Assume that X, Y and Z are integer variables.


Question 1
Write the expression that is true if X is strictly the largest of the three variables X, Y and Z. For example, if X is 50, Y is 40 and Z is 45, the expression should be true, but if X is 50, Y is 40, and Z is 50, the expression should be false, since X is not strictly greater than Z.
    (______) _____ (______)


(X > Y) && (X > Z)


Problem #2


  • Assume that we have an array of ints, table, declared as follows:
      int[] table = new int[] { 10, 20, 5, 15, 25, 0, 3 };
Question 1
Write the java code required to print all the elements of the array table.

for ( int i=0; i<table.length; i++ )   System.out.println( table[i] );

Question 2
write the java code required to find the largest element of table and print it on the screen.

int max=table[0];
for ( int i=1; i<table.length; i++ )
  if (table[i]>max)
    max = table[i];
System.out.println( max );

Question 3
write the java code required to replace all the 0 element of table with -1.

for ( int i=1; i<table.length; i++ )
  if (table[i]==0) table[i] = -1;


Problem #3


Given this code, and assuming that the user enters the number 3 at the keyboard, followed by ENTER; what is the output of the program?

                Scanner scan = new Scanner( System.in );
		int n, k, max;
		max = scan.nextInt(); /* read value for max */
		for (n = 0; n < max; n++) {
			for (k = 0; k < max; k++) {
				if (n > k)
					System.out.print(" G ");
				else if (n < k)
					System.out.print(" L ");
				else
					System.out.print(" E ");
			}
			System.out.println();
		}


3
E L L
G E L
G G E

Problem #4


  • Assume the ArrayList fibonacci is initialized as follows:


ArrayList fibonacci = new ArrayList();

fibonacci.add( 1 );
fibonacci.add( 1 );


Question 1
Write a for-loop that will compute 10 more fibonacci term and store them in the array.



for (int i=2; i<2+10; i++)
  fibonacci.add( (int) fibonacci.get( i-1 ) + (int) fibonacci.get( i-2 ) );

Question 2
Same question, but using a LinkedList instead of an ArrayList.


LinkedList fibonacci = new LinkedList();
for (int i=2; i<2+10; i++)
  fibonacci.add( (int) fibonacci.get( i-1 ) + (int) fibonacci.get( i-2 ) );

ArrayList
use add( Object o ) to add an element, and get( int index) to access an element at some location.
LinkedList
use add( Object o ) to add an element, and get( int index ) to access an element at some location.


Problem #5

Question 1
In a singly-linked list containing several thousands of items, do the remove-from-tail and the remove-from-front operations take the same amount of time to operate? Why or why not?


No, the remove from tail requires a loop to find the node that points to the last node in the list, so that the pointer tail can be moved to that one-before-last node. So the remove-from-tail requires looping thousands of time to get to the one-before-last node. Remove-from-front requires only a fixed number of operations.

Problem #6


DoublyLinkedList.png


Question 1
Write the code necessary to remove the node containing the string "beta" from the list. The result should be a list containing the series "alpha", "delta", and "epsilon".


IntDLLNode temp = head.next;
head.next = temp.next;
temp.next.prev = head;

Question 2
Write the code that will print the contents of all the cells of a doubly-linked list, no matter how many nodes it contains.

IntDLLNode temp = head;
while ( temp != null ) {
  System.out.println( temp.info );
  temp = temp.next;
}

Problem #7


Question 1
What is a circular list?


See Section 3.3 in Drozdek

Question 2
What is a skip-list? What is its advantage?

See Section 3.4 in Drozdek