Chọn kết quả của đoạn code sau:
for (int i = 1; i < 10; i++)
for (int j = 1; j < 10; j++)
if (j % i == 0)
printf("Hello\n");
>>
Trả lời:
Đáp án đúng: D
Đoạn code sử dụng hai vòng lặp `for` lồng nhau. Vòng lặp ngoài chạy từ `i = 1` đến `i < 10`, và vòng lặp trong chạy từ `j = 1` đến `j < 10`. Bên trong vòng lặp trong, có một câu lệnh `if (j % i == 0)`, kiểm tra xem `j` có chia hết cho `i` hay không. Nếu có, nó sẽ in ra "Hello\n".
Chúng ta cần đếm số lần "Hello\n" được in ra.
- Khi i = 1, j chạy từ 1 đến 9. Vì mọi j đều chia hết cho 1, "Hello\n" in ra 9 lần.
- Khi i = 2, j chạy từ 1 đến 9. j chia hết cho 2 khi j = 2, 4, 6, 8. "Hello\n" in ra 4 lần.
- Khi i = 3, j chạy từ 1 đến 9. j chia hết cho 3 khi j = 3, 6, 9. "Hello\n" in ra 3 lần.
- Khi i = 4, j chạy từ 1 đến 9. j chia hết cho 4 khi j = 4, 8. "Hello\n" in ra 2 lần.
- Khi i = 5, j chạy từ 1 đến 9. j chia hết cho 5 khi j = 5. "Hello\n" in ra 1 lần.
- Khi i = 6, j chạy từ 1 đến 9. j chia hết cho 6 khi j = 6. "Hello\n" in ra 1 lần.
- Khi i = 7, j chạy từ 1 đến 9. j chia hết cho 7 khi j = 7. "Hello\n" in ra 1 lần.
- Khi i = 8, j chạy từ 1 đến 9. j chia hết cho 8 khi j = 8. "Hello\n" in ra 1 lần.
- Khi i = 9, j chạy từ 1 đến 9. j không chia hết cho 9 trong khoảng từ 1 đến 9, vậy có thể thấy vòng lặp j chỉ chạy đến 8 và như vậy không có giá trị nào của j chia hết cho i, do đó "Hello\n" in ra 0 lần.
Tổng cộng: 9 + 4 + 3 + 2 + 1 + 1 + 1 + 1 + 0 = 22. Tuy nhiên, không có đáp án nào là 22, đáp án gần nhất là 23. Xét lại khi i=9, j chạy từ 1 đến 8, j không chia hết cho 9, số lần in ra là 0. Vậy tổng là 23 là sai, ta cần xem xét lại điều kiện vòng lặp.
Nếu i = 9, j chạy từ 1 đến 9. j chia hết cho 9 khi j = 9. "Hello\n" in ra 1 lần.
Tổng cộng: 9 + 4 + 3 + 2 + 1 + 1 + 1 + 1 + 1 = 23
Vậy đáp án đúng là 23 chuỗi "Hello".