Quiz submission record for quiz3-2-2 at Thu Jul 8 01:18:24 2004: Your Answer for Question 1: Before compilation of the program, the C preprocessor scans through the actual code for preprocessor commands such as #define and #include. Its purposes include file inclusion, macro substitution, and conditional inclusion. Its main purpose is to make code appear cleaner/more readable - it simplifies programming, somewhat. The C preprocessor is like an interpreter of the code - its input is in C, and its output is in C. Thus, since it doesn't really do any compiling or changing C code to anything else, it belongs between "C program" and "Compiler" in the diagram. As K&R pointed out, it's a "separate first step in compilation". Your Answer for Question 2: I think for the typical C programmer, having the compiler perform all the work of the assembler and linker doesn't have much impact because the typical C programmer probably just wants his/her code compiled and ready to execute right away. However, if the programmer were an assembly expert, such a compiler would prevent him/her from optimizing the low level assembly before linking and loading. Your unique submission ID is quiz3-2-2-cs61c-ck-1089274704-1803.