JavaScript is required

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);

};

A.

“ 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1”.

B.

“ 18 9 4 2 1”.

C.

“ 18 9 4 2 1 0”.

D.
Không câu nào đúng.
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.

Câu hỏi liên quan