Consider the following code:

4 phương ánCó giải thích
Đề bài
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á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: "Calculates the sum of the absolute value of all odd elements in the array a of size n." Chìa khoá là biểu thức (a[i] % 2)*a[i]: với số chẵn phần dư là 0 nên hạng tử bằng 0; với số lẻ dương phần dư là 1 nên hạng tử bằng chính a[i]; với số lẻ âm, phép lấy dư trong C giữ dấu của toán hạng bên trái nên -3 % 2 cho -1, hạng tử thành -1 nhân -3 là 3, tức trị tuyệt đối. "Calculates the sum of all odd elements in the array a of size n." chỉ trùng kết quả khi mảng không có số lẻ âm, nên sai trong trường hợp tổng quát: gặp -3 thì hàm cộng 3 chứ không cộng -3. "Calculates the sum of all even elements in the array a of size n." sai vì số chẵn cho phần dư 0 nên không góp gì vào tổng. "Calculates the sum of squares of all elements in the array a of size n." sai vì bình phương phải là a[i] nhân a[i], còn ở đây một thừa số chỉ nhận 0, 1 hoặc -1.

Cùng phần 7

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