What happens in this do/while loop?

4 phương ánCó giải thích
Đề bài
int n;
do {
    printf("Enter a number:");
    scanf("%d", &n);
} while (n < 1 || n > 5);

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: "Runs at least once". Vòng do-while đặt phép kiểm điều kiện ở cuối, nên thân luôn chạy trọn một lượt trước khi điều kiện được tính lần đầu; ở đây lượt đầu in lời mời rồi đọc n, sau đó mới xét n có nằm ngoài khoảng từ 1 tới 5 hay không để quyết định lặp lại. Đó chính là khuôn mẫu quen dùng để buộc người nhập phải nhập lại cho tới khi hợp lệ. Mô tả "Never runs" trái hẳn với vị trí của phép kiểm, không có đường nào để thân bị bỏ qua. Mô tả "Runs only when n = 1" lẫn chiều điều kiện: n bằng 1 làm điều kiện sai nên vòng lặp dừng, hơn nữa n chỉ có giá trị sau khi thân đã chạy một lượt. Mô tả "Infinite loop" chỉ xảy ra khi người nhập cứ đưa số ngoài khoảng, hoặc nhập chữ làm scanf thất bại và n giữ nguyên giá trị cũ, chứ không phải hành vi mặc định của đoạn mã.

Cùng phần 3

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