Khi bạn thực thi đoạn mã C sau, kết quả sẽ như thế nào? void main() { int i = 0; char ch = 'A'; do { putchar(ch); } while(i++ < 5 || ++ch <= 'F'); getch(); }
Trả lời:
Đáp án đúng: A
Đoạn mã C sử dụng vòng lặp `do...while`. Vòng lặp này sẽ thực hiện ít nhất một lần trước khi kiểm tra điều kiện. Trong trường hợp này:
- `putchar(ch)`: In ký tự `ch` ra màn hình.
- `i++ < 5`: So sánh giá trị của `i` với 5, sau đó tăng `i` lên 1. Biểu thức này đúng (true) khi `i` nhỏ hơn 5.
- `++ch <= 'F'`: Tăng giá trị của `ch` lên 1, sau đó so sánh với 'F'. Biểu thức này đúng (true) khi `ch` nhỏ hơn hoặc bằng 'F'.
- `||`: Toán tử OR. Vòng lặp tiếp tục nếu một trong hai biểu thức trên đúng.
Bây giờ, hãy xem xét từng bước:
1. **Lần lặp đầu tiên:**
- `i = 0`, `ch = 'A'`
- In 'A'.
- `i++ < 5` là `0 < 5` (true), `i` trở thành 1.
- `++ch <= 'F'` là `'B' <= 'F'` (true), `ch` trở thành 'B'.
- Vì một trong hai biểu thức đúng, vòng lặp tiếp tục.
2. **Lần lặp thứ hai:**
- `i = 1`, `ch = 'B'`
- In 'B'.
- `i++ < 5` là `1 < 5` (true), `i` trở thành 2.
- `++ch <= 'F'` là `'C' <= 'F'` (true), `ch` trở thành 'C'.
- Vòng lặp tiếp tục.
3. **Các lần lặp tiếp theo:**
- Vòng lặp tiếp tục tương tự cho đến khi `ch` vượt quá 'F'.
4. **Khi `ch = 'F'`:**
- `i` có thể là bất kỳ giá trị nào đó nhỏ hơn 5.
- In 'F'.
- `i++ < 5` (có thể đúng hoặc sai, tùy thuộc vào giá trị của i)
- `++ch <= 'F'` là `'G' <= 'F'` (false), `ch` trở thành 'G'.
- Vòng lặp sẽ tiếp tục nếu `i++ < 5` đúng.
5. **Khi `i = 5`:**
- Giả sử vòng lặp tiếp tục đến khi i = 5 và ch = 'G'
- In 'G'
- `i++ < 5` là `5 < 5` (false), `i` trở thành 6.
- `++ch <= 'F'` là `'H' <= 'F'` (false), `ch` trở thành 'H'.
- Cả hai điều kiện đều sai. Vòng lặp kết thúc.
Kết quả in ra là ABCDEF. Do đó, đáp án đúng là C. ABCDEF





