> 1. What output does the following program fragment produce? ```c i = 1; while (i <= 128) { printf("%d ", i); i *= 2; } ``` Output: ``` 1 2 4 8 16 32 64 128 ``` > 2. What output does the following program fragment produce? ```c i = 9384 do { printf("%d ", i); i /= 10; } while (i <= 128); ``` Output: ``` 9384 938 93 9 ``` > 3. What output does the following `for` statement produce? ```c for (i = 5, j = i - 1; i > 0, j > 0; --i, j = i - 1) printf("%d ", i); ``` Output: ``` 5 4 3 2 ``` > 4. Which one of the following statements is not equivalent to the other two (assuming that the loop bodies are the same?) ```c for (i = 0; i < 10; i++) // (a) for (i = 0; i < 10; ++i) // (b) for (i = 0; i ++ < 10; ) // (c) ``` Answer: C is not the same as A and B, because the increment takes place before the loop body is executed. > 5. Which one of the following statements is not equivalent to the other two (assuming that the loop bodies are the same)? ```c while (i < 10) {...} // (a) for (; i < 10;) {...} // (b) do {...} while (i < 10); // (c) ``` Answer: C is not the same as A and B, because the block is executed before the condition is checked.