Câu 3 Phần II · Đề chính thức Tin học 2026 (Bộ GD&ĐT) – mã đề 0501

Tin học 2026 · Có lời giải chi tiết

Câu 3.(Khoa học máy tính)

Cho hàm sau đây được viết bằng ngôn ngữ lập trình Python và C++, trong đó A là một mảng gồm n số nguyên dương:

Python:

def F(A, n):
    j = 0
    for i in range(n):
        if A[i] % 2 == 0:
            if A[j] % 2 != 0:
                t = A[i]
                A[i] = A[j]
                A[j] = t
            j = j + 1
    return A[0] + A[n - 1]

C++:

int F(int A[], int n) {
    int j = 0;
    for (int i = 0; i < n; i++)
        if (A[i] % 2 == 0) {
            if (A[j] % 2 != 0) {
                int t = A[i];
                A[i] = A[j];
                A[j] = t;
            }
            j = j + 1;
        }
    return A[0] + A[n - 1];
}

Sau khi chọn một trong hai ngôn ngữ lập trình Python hoặc C++ để tìm hiểu hàm trên, có các ý kiến sau:

  • a)

    Hàm F có đúng một tham số.

    Sai
  • b)

    Sau khi thực hiện hàm F, mảng A không tồn tại phần tử có giá trị chẵn nào có chỉ số lớn hơn chỉ số của phần tử có giá trị lẻ.

    Đúng
  • c)

    Nếu nhận vào hai đối số, mảng A là (5, 6, 7, 4, 2, 3, 1) và n = 7, thì hàm F trả về giá trị 7.

    Đúng
  • d)

    Với mảng A bất kì, giả sử mảng B được tạo ra bằng cách sao chép mảng A rồi hoán đổi vị trí của một số phần tử thì kết quả trả về của hai lần gọi hàm F(A, n) và F(B, n) là bằng nhau.

    Sai
Lời giải

a) Sai: hàm F có hai tham số là A và n.

b) Đúng: biến j đánh dấu vị trí cho số chẵn tiếp theo; mỗi khi gặp A[i] chẵn mà A[j] lẻ thì đổi chỗ. Sau khi chạy, mọi số chẵn đứng trước mọi số lẻ.

c) Đúng: với A = (5, 6, 7, 4, 2, 3, 1), sau khi chạy A trở thành (6, 4, 2, 5, 7, 3, 1); hàm trả về A[0] + A[6] = 6 + 1 = 7.

d) Sai: kết quả trả về phụ thuộc thứ tự phần tử. Ví dụ A = (2, 4, 1) cho 2 + 1 = 3, còn B = (4, 2, 1) cho 4 + 1 = 5.