Answer from cs61c-ep (Hao Wen Vivian Chong 15826235) for Question 1 No, C does not need all of them. Goto can be dropped, as can while and do while (they can both be rewritten using for). I think that the C designers included all of these so that the programmer could have different options of how they wanted to have their code represented in such a way that it's most logical and easy to decipher by someone reading it.