> 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.