Câu hỏi: PRF192 - Phần 7: Mảng và kiểu cấu trúc (struct)
21 câu trắc nghiệm kèm lời giải của môn PRF192 - Cơ sở lập trình, xếp theo thứ tự nhập vào ngân hàng. Trang 2/2 — câu 21–21.
Danh sách câu hỏi
21/21 câuHết danh sách
21What is the results will be displayed on the screen after executing the following code:4 lựa chọncó code
int a[] = {1,2,3,4};
int i=0, s=0;
for (; a[i]; ++i)
s += a[i];
printf("%d", s);A10
BCompiler error
CRuntime error
DGarbage value
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "10". Vòng for bỏ trống phần khởi tạo vì i đã bằng 0 từ trước, và dùng chính a[i] làm điều kiện: C coi mọi số khác không là đúng, nên vòng còn chạy khi phần tử hiện tại khác 0. Bốn phần tử 1, 2, 3, 4 đều khác không nên s cộng dồn thành 10, rồi i lên 4. Cần nói rõ một điểm yếu của đề: mảng chỉ có bốn ô, nên lần đọc a[4] đã ra ngoài biên và theo chuẩn là hành vi không xác định; đề ngầm giả định ô kề đó bằng 0 để vòng dừng, và với giả định ấy printf in 10. Kết luận "Compiler error" sai vì cú pháp hợp lệ, phần khởi tạo của for được phép để trống. Kết luận "Runtime error" không bắt buộc xảy ra vì đọc một ô ngay sau mảng trên ngăn xếp thường không bị hệ điều hành chặn. Kết luận "Garbage value" chỉ xảy ra nếu ô ngoài biên khác 0, và khi đó tổng sẽ lớn hơn 10.