Tìm kết quả của chương trình sau:
main()
{
int n;
for (n = 18; n > 0; n /= 2)
printf("%3d", n);
};
Trả lời:
Đáp án đúng: B
Đề bài yêu cầu tìm kết quả in ra màn hình của đoạn chương trình C cho sẵn.
Phân tích đoạn chương trình:
- Vòng lặp `for` khởi tạo biến `n = 18`, điều kiện lặp là `n > 0`, và sau mỗi lần lặp `n` được gán bằng `n / 2` (chia nguyên cho 2).
- Trong mỗi lần lặp, giá trị của `n` được in ra màn hình theo định dạng `%3d` (chiếm 3 khoảng trắng).
Thực hiện vòng lặp:
- Lần 1: `n = 18`, in ra " 18", `n` trở thành `18 / 2 = 9`.
- Lần 2: `n = 9`, in ra " 9", `n` trở thành `9 / 2 = 4`.
- Lần 3: `n = 4`, in ra " 4", `n` trở thành `4 / 2 = 2`.
- Lần 4: `n = 2`, in ra " 2", `n` trở thành `2 / 2 = 1`.
- Lần 5: `n = 1`, in ra " 1", `n` trở thành `1 / 2 = 0`.
- Vòng lặp kết thúc vì `n = 0` không thỏa mãn điều kiện `n > 0`.
Vậy kết quả in ra màn hình là: " 18 9 4 2 1".
Phương án B là đáp án đúng.