CSC 1051 Algorithms and Data Structures I. Midterm Examination February 26, Name: Key

Similar documents
CSC Algorithms and Data Structures I. Midterm Examination February 25, Name:

CSC 1051 Algorithms and Data Structures I. Midterm Examination February 25, Name: KEY A

CSC 1051 Algorithms and Data Structures I. Midterm Examination October 9, Name: KEY

CSC 1051 Algorithms and Data Structures I. Midterm Examination October 7, Name:

CSC 1051 Algorithms and Data Structures I. Midterm Examination March 2, Name:

CSC 1051 Algorithms and Data Structures I. Midterm Examination October 6, Name:

CSC 1051 Algorithms and Data Structures I. Midterm Examination October 11, Name: KEY

CSC 1051 Algorithms and Data Structures I. Midterm Examination February 24, Name: KEY 1

CSC 1051 Algorithms and Data Structures I. Midterm Examination March 1, Name: KEY A

CSC 1051 Algorithms and Data Structures I. Final Examination December 17, Name:

CSC 1051 Data Structures and Algorithms I

CSC 1051 Algorithms and Data Structures I. Final Examination May 12, Name: KEY. Question Value Score

CSC 1051 Algorithms and Data Structures I. Final Examination May 12, Name

Algorithms and Conditionals

Applets and the Graphics class

Data Representation and Applets

CSC 1051 Algorithms and Data Structures I. Final Examination May 2, Name:

Chapter 3. Selections

CSC 1051 Data Structures and Algorithms I. Dr. Mary-Angela Papalaskari Department of Computing Sciences Villanova University

Data Representation and Applets

Data Representation and Applets

CSC 1051 Algorithms and Data Structures I. Final Examination May 2, Name: Question Value Score

CSC 1051 Algorithms and Data Structures I. Final Examination May 2, Name:

Practice Midterm 1. Problem Points Score TOTAL 50

Chapter 2 Exercise Solutions

Faculty of Science COMP-202A - Introduction to Computing I (Fall 2009) - All Sections Midterm Examination

Practice Midterm 1 Answer Key

COMP 202. Built in Libraries and objects. CONTENTS: Introduction to objects Introduction to some basic Java libraries string

Java I/O and Control Structures

AYBUKE BUYUKCAYLI KORAY OZUYAR MUSTAFA SOYLU. Week 21/02/ /02/2007 Lecture Notes: ASCII

CSC 1051 Data Structures and Algorithms I

Java I/O and Control Structures Algorithms in everyday life

Lecture 6. Assignments. Java Scanner. User Input 1/29/18. Reading: 2.12, 2.13, 3.1, 3.2, 3.3, 3.4

CSC 1051 Data Structures and Algorithms I

CIS 1068 Design and Abstraction Spring 2017 Midterm 1a

Lecture 6. Assignments. Summary - Variables. Summary Program Parts 1/29/18. Reading: 3.1, 3.2, 3.3, 3.4

Using Java Classes Fall 2018 Margaret Reid-Miller

CSC 1051 Algorithms and Data Structures I. Final Examination December 20, Name: KEY. Question Value Score

Happy Cinco de Mayo!!!!

Faculty of Science COMP-202B - Introduction to Computing I (Winter 2010) - All Sections Midterm Examination

Full file at

Java Foundations: Introduction to Program Design & Data Structures, 4e John Lewis, Peter DePasquale, Joseph Chase Test Bank: Chapter 2

What did we talk about last time? Examples switch statements

CSCI 2010 Principles of Computer Science. Basic Java Programming. 08/09/2013 CSCI Basic Java 1

Faculty of Science COMP-202A - Foundations of Computing (Fall 2012) - All Sections Midterm Examination

Happy Cinco de Mayo!!!!

Methods CSC 121 Spring 2017 Howard Rosenthal

AP Computer Science Unit 1. Programs

Methods CSC 121 Fall 2016 Howard Rosenthal

Computer Science 145 Midterm 1 Fall 2016

double float char In a method: final typename variablename = expression ;

AP CS Unit 3: Control Structures Notes

Name: Checked: Access the Java API at the link above. Why is it abbreviated to Java SE (what does the SE stand for)?

Mr. Monroe s Guide to Mastering Java Syntax

COMP 202 Java in one week

Selection Statements and operators

Learning objectives: Objects and Primitive Data. Introduction to Objects. A Predefined Object. The print versus the println Methods

Java Coding 3. Over & over again!

Selection Statements and operators

Data Representation and Applets

Introduction to Computer Science Unit 2. Exercises

Introduction to Computer Science Unit 2. Notes

COMP 202. Java in one week

Primitive Data, Variables, and Expressions; Simple Conditional Execution

Programming with Java

int: integers, no fractional part double: floating-point numbers (double precision) 1, -4, 0 0.5, , 4.3E24, 1E-14

COMP 202. Programming With Iterations. CONTENT: The WHILE, DO and FOR Statements. COMP Loops 1

Objectives of CS 230. Java portability. Why ADTs? 8/18/14

Chapter 4 Fundamental Data Types. Big Java by Cay Horstmann Copyright 2009 by John Wiley & Sons. All rights reserved.

A variable is a name for a location in memory A variable must be declared

2/9/2012. Chapter Four: Fundamental Data Types. Chapter Goals

CSC 1051 Algorithms and Data Structures I. Final Examination December 18, Name:

AP Computer Science Unit 1. Writing Programs Using BlueJ

We now start exploring some key elements of the Java programming language and ways of performing I/O

Term 1 Unit 1 Week 1 Worksheet: Output Solution

Using Classes and Objects

Exam 2. Programming I (CPCS 202) Instructor: M. G. Abbas Malik. Total Marks: 40 Obtained Marks:

Algorithms and Java basics: pseudocode, variables, assignment, and interactive programs

CS1004: Intro to CS in Java, Spring 2005

COMP-202B - Introduction to Computing I (Winter 2011) - All Sections Example Questions for In-Class Quiz

Name: Checked: Access the Java API at the link above. Why is it abbreviated to Java SE (what does the SE stand for)?

CSC 1051 Villanova University. CSC 1051 Data Structures and Algorithms I. Course website:

Midterm Exam 2 Thursday, November 15th, points (15% of final grade) Instructors: Jim Williams and Marc Renault

Computational Expression

Use the scantron sheet to enter the answer to questions (pages 1-6)

4. Java Project Design, Input Methods

Algorithms and Java basics: pseudocode, variables, assignment, and interactive programs

Chapter 4 Classes in the Java Class Libraries

Course Outline. Introduction to java

Object Oriented Programming. Java-Lecture 1

CIS 110 Introduction To Computer Programming. February 29, 2012 Midterm

Fundamentals of Programming Data Types & Methods

Conditional Programming

Computer Science 145

H212 Introduction to Software Systems Honors

Important Java terminology

SPRING 13 CS 0007 FINAL EXAM V2 (Roberts) Your Name: A pt each. B pt each. C pt each. D or 2 pts each

CIS 110 Introduction to Computer Programming Summer 2014 Midterm. Name:

Primitive Data Types: Intro

CIS 110 Introduction to Computer Programming. February 29, 2012 Midterm

Transcription:

CSC 1051 Algorithms and Data Structures I Midterm Examination February 26, 2015 Name: Key Question Value 1 10 Score 2 10 3 10 4 10 5 10 6 10 7 10 8 10 9 10 10 10 TOTAL 100 Please answer questions in the spaces provided. If you make a mistake or for some other reason need more space, please use the back of pages and clearly indicate where the answer can be found.

1. [ /10] Short answer questions. a) How many bits/bytes are needed to store a color picture that is 300 pixels wide and 400 pixels high under each of the following schemes? Express your answer as approximate number of KB or MB, etc., as appropriate. Show your work and fill in the answers below: Total # pixels 120,000 300x400 = 120,000 Bitmap (1bit/pixel) Greyscale (1byte/pixel) RGB (3 bytes/pixel) # bytes _15 KB 120 KB 360 KB # bits 120,000 bits or 120kbits_ 960,000 or 960Kbits 3Mbits_ b) List all binary codes that can be made with 3 bits 000 010 011 001 111 100 101 110 c) With 8 bits we can have 2 8 _= 256_ different binary codes d) If we are to create a code to uniquely represent each of the 50 states, we need at least 6 bits.

1. [ /10] Short answer questions. a) How many bits/bytes are needed to store a color picture that is 400 pixels wide and 200 pixels high under each of the following schemes? Express your answer as approximate number of KB or MB, etc., as appropriate. Show your work and fill in the answers below: Total # pixels 80,000 400x200 = 80,000 Bitmap (1bit/pixel) Greyscale (1byte/pixel) RGB (3 bytes/pixel) # bytes _10 KB 80 KB 240 KB # bits 80,000 bits or 80kbits_ 640,000 or 640Kbits 2Mbits_ b) List all binary codes that can be made with 3 bits 000 010 011 001 111 100 101 110 c) With 8 bits we can have 2 8 _= 256_ different binary codes d) If we are to create a code to uniquely represent each of the 50 states, we need at least 6 bits.

2. ( / 10) a) Which of the following code fragments correctly executes three assignments if the condition is true? Mark the correct one and explain your answer, briefly. i) if (x < 0) a = b * 2; y = x; z = a y; ii) iii) if (x < 0) a = b * 2; y = x; z = a y; if (x < 0) a = b * 2; y = x; z = a y ; iv) if (x < 0) // This is the only one that works // because it uses the braces correctly a = b * 2; y = x; z = a y; b) Which of the code fragments below will add 1 to x if x is positive and subtract 1 from x if x is negative, but leave x alone if x is 0? Explain your answer, briefly. i) if (x > 0) x++; else x--; ii) if (x > 0) x++; else if (x < 0) // This is the only one that works because it x--; //leaves the x unchanged when it is zero. iii) if (x == 0) x = 0; else x++; x--; iv) x++; x--;

2. ( / 10) a) Which of the following code fragments correctly executes three assignments if the condition is true? Mark the correct one and explain your answer, briefly. i) if (x < 0) a = b * 2; y = x; z = a y; ii) if (x < 0) // This is the only one that works // because it uses the braces correctly a = b * 2; y = x; z = a y; ii) if (x < 0) a = b * 2; y = x; z = a y; iv) if (x < 0) a = b * 2; y = x; z = a y ; b) Which of the code fragments below will add 1 to x if x is positive and subtract 1 from x if x is negative, but leave x alone if x is 0? Explain your answer, briefly. i) if (x > 0) x++; else x--; iii) if (x == 0) x = 0; else x++; x--; iv) x++; x--; ii) if (x > 0) x++; else if (x < 0) // This is the only one that works because it x--; //leaves the x unchanged when it is zero.

3. ( / 10) What gets printed? Please show output as it will appear, or indicate NO OUTPUT, or show some of the output followed by INFINITE LOOP. int a = 0; while (a > 0) System.out.println(a); a = a + 3; Output: NO OUTPUT int a = 5; while (a >= 5) System.out.println(a); a++; Output: 5 6 7 INFINITE LOOP int a = 4; while (a > 0) System.out.println(a * 2); a--; Output: 8 6 4 2 String a = "rgb"; int x = 0; while (x < a.length()) System.out.print(a.charAt(x)); System.out.print(a.charAt(x)); x++; Output: rrggbb NOTE: typo in exam here, it said st.charat(x) instead of a.charat(x)

3. ( / 10) What gets printed? Please show output as it will appear, or indicate NO OUTPUT, or show some of the output followed by INFINITE LOOP. int a = 3; while (a > 0) System.out.println(a * 2); a--; Output: 6 4 2 int a = 0; while (a > 0) System.out.println(a); a = a + 3; Output: NO OUTPUT String a = "rgb"; int x = 0; while (x < a.length()) System.out.print(a.charAt(x)); System.out.print(a.charAt(x)); x++; NOTE: typo in exam here, it said st.charat(x) instead of a.charat(x) Output: rrggbb int a = 4; while (a >= 4) System.out.println(a); a++; Output: 4 5 6 7 INFINITE LOOP

4. ( / 10) Complete the java code below so that it prints a table for the Investment problem: You put $10,000 into a bank account that earns 5% interest per year. Show the yearly returns on your investment until it doubles. import java.text.numberformat; public class Investment public static void main (String[] args) year interest balance 0 $10,000.00 1 $500.00 $10,500.00 2 $525.00 $11,025.00 3 $551.25 $11576.25 4 $578.81 $12,155.06 (keep going until balance >= $20000) int year = 0; double balance = 10000; double rate = 0.05; System.out.println("year\tinterest\tbalance"); NumberFormat fmt = NumberFormat.getCurrencyInstance(); System.out.println (year + "\t" + " " + "\t" + fmt.format(balance)); double interest; while (balance < 20000) year++; interest = balance * rate; balance += interest; System.out.println (year + "\t" + fmt.format(interest) + "\t" + fmt.format(balance));

5. [ /10] Given the following declarations: int iresult, num1 = 9, num2 = 2; double fresult, val1 = 9.0; boolean status, part1 = true; What result is stored by each of the following assignment statements? Source code Result stored fresult = (num1 + 2)/ 2; 5.0 iresult = num2 % num1; 2 fresult = val1 / 2; 4.5 status = part1 (num1 > num2); true status = part1 && (num1 > num2); true fresult = (double) num1 / 2; 4.5

5. [ /10] Given the following declarations: int iresult, num1 = 7, num2 = 2; double fresult, val1 = 9.0; boolean status, part1 = false; What result is stored by each of the following assignment statements? Source code Result stored fresult = (num1 + 2)/ 2; 4.0 iresult = num1 % num2; 1 fresult = val1 / 2; 4.5 fresult = (double) num1 / 2; 3.5 status = part1 && (num1 > num2); false status = part1 (num1 > num2); true

6. ( / 10) Review the program and answer the questions below: import java.awt.*; import javax.swing.japplet; public class FinalApplet extends JApplet public void paint( Graphics page) Color mycolor = new Color(50, 50, 50); // what s this color? page.setcolor( mycolor); page.fillrect(0, 0, 200, 300); page.setcolor( Color.blue ); page.drawline(0, 300, 200, 0); page.setcolor( Color.red); page.filloval(-100,-100,200,200); a) What do you think the mycolor looks like? gray b) Draw a sketch of the image displayed by the applet indicate the color of each figure or line. Be sure to label the coordinate system. 0 100 200 300 400 100 200 300 400

6. ( / 10) Review the program and answer the questions below: import java.awt.*; import javax.swing.japplet; public class FinalApplet extends JApplet public void paint( Graphics page) Color mycolor = new Color(0, 255, 0); // what s this color? page.setcolor( mycolor); page.fillrect(0, 0, 200, 300); page.setcolor( Color.blue ); page.drawline(0, 300, 200, 0); page.setcolor( Color.red); page.filloval(-100,-100,200,200); a) What do you think the mycolor looks like? green b) Draw a sketch of the image displayed by the applet indicate the color of each figure or line. Be sure to label the coordinate system. 0 100 200 300 400 100 200 green 300 400

7. ( / 10) Suppose you look up a class in the Java API and find the following info about the (alas, made- up!) SpringBreak class: java.exam Class SpringBreak java.lang.object java.exam.springbreak Constructor Summary SpringBreak() Creates a new SpringBreak object. Method Summary void destination(string x) static boolean shouldistayorshouldigo(double x) a) Write some code to declare variables for two objects of this class, named thing1 and thing2. SpringBreak thing1 = new SpringBreak (); SpringBreak thing2 = new SpringBreak (); b) Circle all of the following that are valid Java statements: SpringBreak.destination = Puerto Vallarta ; thing1.destination( Cancun ); thing2.destination(thing1); SpringBreak.destination( Miami ); System.out.print(thing2.destination( Cancun )); thing2.shouldistayorshouldigo(21.6) = true; System.out.print(SpringBreak.shouldIStayOrShouldIGo(32.4));

8. ( / 10) Suppose a variable total holds the number of pennies in your piggy bank. Write a code fragment (not a complete program) that computes the number of dollar bills and quarters that can be made with the pennies stored in your piggy bank (Note: we will not bother with nickels and dimes, so the total should be broken down into dollars, quarters, and pennies). Assume all variables have already been declared as follows and the value of total has already been obtained from the user: Scanner scan = new Scanner(System.in); int total, dollars, quarters, pennies; System.out.print( Please enter the amount of pennies ); total = scan.nextint(); dollars = total / 100; total = total % 100; quarters = total / 25; pennies = total %25;

9. ( / 10) Construct an algorithm that inputs a number num and prints all its factors (i.e., all the values of x in the range 2 (num- 1), such that num is divisible by x). After the factors are printed, print a goodbye message. Example: If num (i.e., the input) is 20, the algorithm should print: The factors of 20 are: 2 4 5 10 Goodbye Directions: Write your algorithm by rearranging and structuring elements chosen from the list below, using indentation to show structure. Do not use anything else and note that not all of these are needed, but you may use one of them more than once, if necessary. input num input x x = 1 x = 2 x = x + 1 if (num % x == 0) if (num % 2 == 0) if (num % 2 == x) else while (x < num) while (x <= num) while (num %2 == x) while (num % 2 == 0) print The factors of num are: print x print num print Goodbye ======== input num x = 2 print The factors of num are: while (x < num) if (num % x == 0) print x x = x + 1 print Goodbye ========

9. ( / 10) Construct an algorithm that inputs an integer num and 10,000 other integers and prints a message indicating whether num was found among the 10,000 other integers, followed by a goodbye message. Hint: You need to use a boolean variable found to keep track of whether you found a match. Example: If num (i.e., the first number input) is 1318, and 10,000 other numbers are input after that, none of which is equal to 1318, the algorithm should print: Searching for 1318 Not found Goodbye Alternatively, if the number 1318 occurred one or more times among the other numbers, it should print: Searching for 1318 Found it! Goodbye Directions: Write your algorithm by rearranging and structuring elements chosen from the list below, using indentation to show structure. Do not use anything else and note that not all of these are needed, but you may use one of them more than once, if necessary. found = true found = false input num input x count = 1 count = count + 1 x = x + 1 if (x == num) if (found) if (found == true) if (found == false) if (x!=num) else while (count <= 10000) while (num <= 10000) while (count <= num) print Searching for num print x print num print Found it! print Not found print Goodbye input num found = false count = 1 while (count <=10000) input x if (x == num) found = true count = count + 1 if (found == true) print Found it! else print Not found print Goodbye

10. ( / 10) Write a complete Java program that asks your first name and last name and then prints a greeting using your initials. For example, an interaction might look like this: Please enter your first name: Grace Please enter your last name: Hopper Great meeting you, G.H., have a nice day. It is NOT necessary to include comments with your code, but be sure to use good indentation. import java.util.scanner; public class Initials public static void main (String[] args) Scanner scan = new Scanner(System.in); String firstname, lastname; System.out.println("Please enter your first name:"); firstname = scan.nextline(); System.out.println("Please enter your last name:"); lastname = scan.nextline(); char firstinitial = firstname.charat(0); char lastnameinitial = lastname.charat(0); System.out.println("Great meeting you, " + firstinitial + "." + lastnameinitial+"." + ", have a nice day.");

10. ( / 10) Write a complete Java program that asks your name and then prints it out one letter per line. For example, an interaction might look like this: Please enter your name: Grace Hello... G r a c e It is NOT necessary to include comments with your code, but be sure to use good indentation import java.util.scanner; public class MidtermS15 public static void main (String[] args) Scanner scan = new Scanner(System.in); System.out.println("Please enter your name:"); String name = scan.nextline(); System.out.println("Hello..."); int i = 0; while (i < name.length()) System.out.println(name.charAt(i)); i++;

REFERENCE MATERIAL 20 45 Y 20 Y 10 Drawing a Line 150 Start% x%%%%%%%y% End% x%%%%%%%y% page.drawline (10, 20, 150, 45); page.drawline (150, 45, 10, 20); Drawing an Oval 175 80 50 page.drawoval (175, 20, 50, 80); X X Drawing a Rectangle 50 X 20 40 100 Y Start% x%%%%%%%y% Width%%%%Height% page.drawrect (50, 20, 100, 40); Drawing an Arc An arc is defined by an oval, a start angle, and an arc angle:

REFERENCE MATERIAL Random class double nextdouble() Returns the next pseudorandom, uniformly distributed double value between 0.0 and 1.0 int nextint() Returns the next pseudorandom, uniformly distributed int value from this random number generator's sequence. int nextint(int n) Returns a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive), drawn from this random number generator's sequence. Some methods of the Math class static double abs(double a) Returns the absolute value of a double value. static double cos(double a) Returns the trigonometric cosine of an angle. static double pow(double a, double b) Returns the value of the first argument raised to the power of the second argument. static double random() Returns a double value greater than or equal to 0.0 and less than 1.0. static long round(double a) Returns the closest long to the argument. static double sin(double a) Returns the trigonometric sine of an angle. static double sqrt(double a) Returns the correctly rounded positive square root of a double value. String class boolean isempty() Returns true if, and only if, length() is 0. char charat(int index) Returns the char value at the specified index. int length() Returns the length of this string. String touppercase() Converts all of the characters in this String to upper case using the rules of the default locale.

REFERENCE MATERIAL //*************************************************************** // Wages.java calculates wages with overtime. //*************************************************************** import java.text.numberformat; import java.util.scanner; public class Wages public static void main (String[] args) final double RATE = 8.25; // regular pay rate final int STANDARD = 40; // standard hours in a work week Scanner scan = new Scanner (System.in); double pay = 0.0; System.out.print ("Enter your name: "); String name = scan.nextline(); System.out.print ("Enter the number of hours worked: "); int hours = scan.nextint(); System.out.println (); // Pay overtime at "time and a half" if (hours > STANDARD) pay = STANDARD * RATE + (hours-standard) * (RATE * 1.5); else pay = hours * RATE; NumberFormat fmt = NumberFormat.getCurrencyInstance(); System.out.println("Name: " + name); System.out.println("Gross earnings: " + fmt.format(pay));