JavaScript is required

What is output? #include #include int main() { int i = 0, j = 0; while (i < 2) { l1: i++; while (j < 3) { printf("loop\n"); goto l1; } } getch(); }

A.

loop loop loop

B.

Infinite loop

C.

Complie error

Trả lời:

Đáp án đúng: C


Đoạn code có hai vòng lặp `while`. Vòng lặp bên ngoài kiểm tra điều kiện `i < 2`. Vòng lặp bên trong kiểm tra điều kiện `j < 3`. Tuy nhiên, điểm mấu chốt nằm ở lệnh `goto l1;` trong vòng lặp bên trong. Ban đầu, `i = 0` và `j = 0`. Vòng lặp bên ngoài chạy. Vòng lặp bên trong cũng chạy vì `j < 3`. Trong vòng lặp bên trong, lệnh `printf("loop\n");` in ra "loop" và sau đó lệnh `goto l1;` nhảy đến nhãn `l1:`, làm tăng `i` lên 1. `j` không bao giờ được tăng, và vì thế vòng lặp bên trong sẽ luôn chạy nếu nó được bắt đầu, tức là `i` sẽ tăng liên tục và in ra "loop" liên tục mà không bao giờ dừng lại. Do đó, chương trình sẽ rơi vào vòng lặp vô hạn và in ra "loop" liên tục. Vì vậy, đáp án đúng là B. Infinite loop

Câu hỏi liên quan