What will be the output of this program? int n = 5, i, S = 1;

4 phương ánCó giải thích
Đề bài
for (i = 2; i <= n; i++) {
    S *= i;
}
printf("%d", S);

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: "120". Biến tích khởi tạo bằng 1 vì đó là phần tử trung tính của phép nhân; khởi tạo bằng 0 thì mọi phép nhân sau đó đều cho 0. Vòng lặp cho i chạy từ 2 tới n là 5, mỗi nhịp nhân dồn, nên giá trị lần lượt là 2, 6, 24 rồi 120, đúng bằng giai thừa của 5. Số "60" đúng bằng tích của 3, 4 và 5, tức bỏ mất nhịp nhân với 2 ở đầu vòng lặp. Số "24" là giai thừa của 4, tức kết quả khi điều kiện dừng ở i nhỏ hơn n thay vì nhỏ hơn hoặc bằng n, bỏ mất nhịp cuối. Số "100" không phải tích của dãy số nguyên liên tiếp nào bắt đầu từ 2. Ở đây thân vòng có ngoặc nhọn nên phạm vi rõ ràng, dù bên trong chỉ có một lệnh.

Cùng phần 3

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