What is the results will be displayed on the screen after executing the following code:
4 phương ánCó giải thích
int a[] = {1,2,3,4};
int i=0, s=0;
for (; a[i]; ++i)
s += a[i];
printf("%d", s);Các phương án trả lời
Chọn một phương ánLời giảiChọn phương án để mở
Đá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.
Cùng phần 7
What does the following program display?
#include <stdio.h>
int main() {
int a[5] = {1, 2, 3};
printf("%d %d %d %d %d", a[0], a[1], a[2], a[3], a[4]);
return 0;
}Có lời giảiCâu hỏiConsider the following code:
int func(int* a, int n){
int S = 0;
for(int i = 0; i < n; i++) {
S = S + (a[i] % 2)*a[i];
}
return S;
}
What does the above code snippet do?Có lời giảiCâu hỏiWhat does the expression sizeof(arr) / sizeof(arr[0]) evaluate to, where arr is an array?Có lời giảiCâu hỏiCả 21 câu của chủ đề21 câu
Xuất hiện trong 1 bộ đề
Đi tiếp từ đây