What is the output when the sample code below is executed?

4 phương ánCó giải thích
Đề bài
#include <stdio.h>
int main() {
    int i = 10;
    do {
        printf("%d ", i);
        i -= 2;
    } while (i >= 1);
    return 0;
}

Các phương án trả lời

Chọn một phương án
Lời giảiChọn phương án để mở
Đáp án đúng: "10 8 6 4 2". Phép kiểm điều kiện của vòng lặp này nằm ở cuối thân, nên mỗi lượt diễn ra theo đúng thứ tự in xong, giảm đi, rồi mới so sánh. Biến i vào vòng với 10: in 10 rồi i thành 8, in 8 rồi i thành 6, in 6 rồi i thành 4, in 4 rồi i thành 2, in 2 rồi i thành 0; lúc này điều kiện i lớn hơn hoặc bằng 1 cho sai nên vòng lặp dừng. Dãy "10 8 6 4 2 0" cần thân chạy thêm một lượt với i bằng 0, nhưng giá trị 0 chỉ sinh ra ở cuối lượt cuối và điều kiện đã chặn trước khi kịp in. Dãy "10 8 6 4 2 0 -2 -4" đòi điều kiện cho phép số âm, trong khi mốc so sánh là 1. Dãy "10 9 8 7 6 5 4 3 2" ứng với bước giảm một đơn vị, còn lệnh i -= 2 ở đây lấy đi hai đơn vị mỗi lượt nên chỉ in các số chẵn.

Cùng phần 3

Xuất hiện trong 1 bộ đề