Answer from cs61c-el (David Tung 16479725) for Question 1 It does not need them all because some statements are just specializations of others. In terms of loops, for loops and do while loops could all be written as while loops. Also, you could use if statements and gotos to accomplish any tasks that utilize loops (Using loops to replace if statements does not work out to be very nice, and gotos cannot be replaced by any other statement). Therefore, C could drop all of its loops and accomplish the same tasks with if and goto. However, I think that the designers of C chose to include the loops because the situations in which they come up are so frequent that it is useful to have an easy way to program such situations. Having a unique loop statement makes it more apparent when a loop is being used, and having for/while/do while also helps make it clear in what situation a loop is needed. Basically, they were included for ease of programming (since loops are often needed) and for ease of understanding.