Problem 2: Deduct 0.1 for each missed type. Deduct 0.4 for each missed value. Also, deduct for non-literals, e.g., C rather than 'C' Problem 3: 1.5 per problem Problem 4: 0.5 for missing if warning should or should be willing 0.5 for wrong warning Problem 5: 1 point for test if even or less than 5 1 point for top-level for loop -- top of Y 1 point for inner for lop -- top of Y, outside of Y 1 point for inner for lop -- top of Y, inside of Y 1 point for top-level for loop -- bottom of Y 1 point for inner for lop -- bottom of Y, inside of Y 0.5 point for appropriate putchar('*') 0.5 point for appropriate putchar('.' 0.5 point for appropriate putchar('\n') 0.5 point for needed declaraions Problem 6: 4 points awarded for correct loop-free solution 3 points awarded for loop-free solution with minor problems 3 points awarded for correct solution with loops (including an unrolled loop like Dice[0]==Dice[1] && ...) 2 points awarded if approach showed framework for correct solutions Other answers had many problems and were graded individually Problem 7: 1 point -- use of parameter (N) 1 point -- initialization of variables 1 point -- handles EOF 2 points -- handles '\n' (new line) 1 point -- handles space 1 point -- handles non space 1 point -- return Problem 8: 0.5 point -- test if argc >= 2 0.5 point -- File * declaration 1.0 point -- using filename from argc 1.0 point -- fopen with right mode 1.0 point -- testing for failed fopen 1.0 point -- message for failed output 1.5 point -- call of NumberSpaceyLines 1.5 point -- appropriate output message Problem 9: 4 points for the histogram part Two common approaches Usual algorithm -- one loop through V -0.5 -- Not initialzing H Very slow algorithm -- nested loops with tests like j == V[i] -0.7 -- Not initializing counter in each loop -0.5 -- Wrong loop boundaries -1.3 -- Wrong comparision with W array -1.5 -- Uninitialized array index variables 8 points for the stem and leaf part The natural solution for the problem has three nested loops 2.0 points per loop (3) and three output statements 0.5 points per output (3) and finally for the declarations 0.5 points for declarations Problem 10: 1 pt -- malloc of right size 1 pt -- test if malloc works 1 pt -- setting value field 1 pt -- correct returns Problem 11: 1 pt -- struct name and { } 1.5 pt -- two fields Letter 1.5 pt -- typedef Problem 12: A rather tedious problem 1.5 pt -- for allocating the 5 LetterObj with correct value 1.5 pt -- for allocating the top-level LetterLollipop 0 pt -- for testing allocation results [Only one person did this] 1.5 pt -- for linking the 5 LetterObj's correctly 1.5 pt -- for linking LetterLollipop to start and cycle Problem 13: 1.0 pt -- using parameter 1.0 pt -- returning value 0.5 pt -- initializing node counter 1.5 pt -- incrementing node counter correctly (1.0) 1.0 pt -- initializing traversal pointer to P->start 1.0 pt -- incrementing traversal pointer (T = T->next) 2.0 pt -- testing for traversal pointer encountering cycle point (twice)