Đề cương kiểm tra giữa kỳ II – Môn Tin học 11 CS

I. PHẦN TRẮC NGHIỆM  (7 điểm)

Bài 17. Dữ liệu mảng một chiều và hai chiều

Câu 1. Trong Python, các phần tử của mảng cách nhau bởi dấu?
A. Dấu chấm (.)
B. Dấu phẩy (,)
C. Dấu cách ( )
D. Dấu trừ (-)

Câu 2. Trong Python, chỉ số của mảng bắt đầu từ số?
A. 0
B. 1
C. 2
D. 3                                    

Câu 3. Trong Python, để kiểm tra một đối tượng có nằm trong mảng hay không ta dùng toán tử nào?
A. not
B. or
C. in
D. and                                 

Câu 4. Trong Python, kiểu mảng là?
A. float
B. str
C. bool
D. list

Câu 5. Trong Python, để bổ sung phần tử có giá trị bằng m vào cuối mảng arr, ta dùng lệnh?
A. arr.insert(m)
B. m.insert(arr)
C. arr.append(m)
D. m.append(arr)

Câu 6. Trong Python, để xóa toàn bộ các phần tử của mảng ta dùng lệnh?
A. append
B. remove
C. insert
D. clear

Câu 7. Trong Python, để biết số phần tử của mảng A dùng lệnh?
A. append(A)
B. len(A)
C. str(A)
D. del(A)

Câu 8. Trong Python, để bổ sung phần tử vào vị trí bất kì của mảng ta dùng lệnh?
A. append
B. remove
C. insert
D. clear

Câu 9. Trong Python, chọn lệnh khởi tạo mảng A gồm 03 phần tử có giá trị 1, 3 và 5?
A. A = (1, 3, 5)
B. A = {1, 3, 5}
C. A = [1, 3, 5]
D. A = 1, 3, 5

Câu 10. Trong Python, để tham chiếu đến phần tử thứ ba của mảng arr ta dùng lệnh?
A. arr[0]
B. arr[1]
C. arr[2]
D. arr[3]

Câu 11. Để truy cập phần tử cuối cùng của một mảng trong Python, bạn sử dụng chỉ số nào?
A. -1
B. 0
C. 1
D. Không xác định

Câu 12. Hàm nào sau đây trong Python được sử dụng để sắp xếp các phần tử trong mảng M theo thứ tự tăng dần?
A. M.sort()
B. M.copy()
C. sort(M)
D. copy(M)

Bài 18. Thực hành dữ liệu mảng một chiều và hai chiều

Câu 1. Cho một mảng numbers = [3, 7, 9, 2, 5], giá trị của numbers[2] là gì?
A. 3
B. 7
C. 9
D. 2

Câu 2. Cho một mảng colors = [‘red’, ‘blue’, ‘green’, ‘yellow’], cách để truy cập phần tử ‘green’ là?
A. colors[2]
B. colors[3]
C. colors[1]
D. colors[0]

Câu 3. Cho một mảng numbers = [1, 2, 3, 4, 5], cách để thêm phần tử 6 vào cuối mảng là?
A. numbers.append(6)
B. numbers.add(6)
C. numbers.insert(6)
D. numbers.push(6)

Câu 4. Cho một mảng fruits = [‘apple’, ‘banana’, ‘orange’], cách để xóa phần tử ‘banana’ ra khỏi mảng là?
A. fruits.delete(‘banana’)
B. fruits.remove(‘banana’)
C. fruits.pop(‘banana’)
D. fruits.discard(‘banana’)

Câu 5. Cho một mảng numbers = [4, 1, 7, 3, 2], cách để sắp xếp các phần tử của mảng theo thứ tự tăng dần là?
A. numbers.sort()
B. numbers.ascending()
C. sort(numbers)
D. ascending(numbers)

Câu 6. Cho một mảng matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]], giá trị của matrix[1][2] là gì?
A. 1
B. 2
C. 3
D. 6

Câu 7. Cho một mảng numbers = [2, 4, 6, 8, 10], cách để tính tổng các phần tử trong mảng là?
A. sum(numbers)
B. total(numbers)
C. add(numbers) 
D. calculate(numbers)

Câu 8. Cho một mảng words = [‘apple’, ‘banana’, ‘cherry’, ‘apple’], cách để đếm số lần xuất hiện của từ ‘apple’ trong mảng là?
A. words.count(‘apple’)
B. count(words, ‘apple’)
C. len(words[‘apple’])
D. words.find(‘apple’)

Câu 9. Cho một mảng numbers = [5, 2, 8, 3, 9], cách để tìm giá trị lớn nhất trong mảng là?
A. max(numbers)
B. largest(numbers)
C. maximum(numbers)
D. find_max(numbers)

Câu 10. Cho một mảng letters = [‘a’, ‘b’, ‘c’, ‘d’, ‘e’], cách để sao chép mảng này là?
A. new_letters = copy(letters)
B. new_letters = letters.clone()
C. new_letters = list(letters)
D. new_letters = letters.copy()

Bài 19. Bài toán tìm kiếm

Câu 1. Thuật toán tìm kiếm nào dưới đây yêu cầu mảng đã được sắp xếp trước khi thực hiện?
A. Tìm kiếm tuần tự (Sequential Search)
B. Tìm kiếm nhị phân (Binary Search)
C. Tìm kiếm nội suy (Interpolation Search)
D. Tìm kiếm trong cây (Tree Search)

Câu 2. Trong thuật toán tìm kiếm nhị phân, mảng được chia nhỏ mỗi lần tìm kiếm dựa trên?
A. Giá trị của phần tử đầu tiên
B. Giá trị trung bình của mảng
C. Giá trị tại chỉ số trung tâm của mảng
D. Giá trị nhỏ nhất của mảng

Câu 3. Chọn câu diễn đạt đúng hoạt động của thuật toán tìm kiếm tuần tự?
A. Tìm trên danh sách đã sắp xếp, bắt đầu từ đầu danh sách, chừng nào chưa tìm thấy hoặc chưa tìm hết thì còn tìm tiếp.
B. Tìm trên danh sách đã sắp xếp, bắt đầu từ giữa danh sách, chừng nào chưa tìm thấy hoặc chưa tìm hết thì còn tìm tiếp.
C. Tìm trên danh sách bắt kì, bắt đầu từ giữa danh sách, chừng nào chưa tìm thấy hoặc chưa tìm hết thì còn tìm tiếp.
D. Tìm trên danh sách bất kì, bắt đầu từ đầu danh sách, chừng nào chưa tìm thấy hoặc chưa tìm hết thì còn tìm tiếp.

Câu 4. Chọn phát biểu SAI?
A. Thuật toán tìm kiếm tuần tự chỉ áp dụng với dãy giá trị đã được sắp xếp.
B. Thuật toán tìm kiếm nhị phân chỉ áp dụng với dãy gia trị đã được sắp xếp.
C. Thuật toán tìm kiếm nhị phân thực hiện chia bài toán tìm kiếm ban đầu thành những bài toán tìm kiếm nhỏ hơn.
D. Việc chia bài toán thành những bài toán nhỏ hơn giúp tăng hiệu quả tìm kiếm.

Bài 20. Thực hành bài toán tìm kiếm

Câu 1. Trong tìm kiếm tuần tự thì có mấy điều kiện cần kiểm tra để dừng vòng lặp?
A. 0
B. 1
C. 2
D. 3

Câu 2. Trong thuật toán tìm kiếm nhị phân, chỉ số mid được tính theo công thức nào?
A. mid = (left + right)%2
B. mid = (left + right)//2
C. mid = (left + right)%3
D. mid = (left + right)//3

Câu 3. Thuật toán tìm kiếm tuần tự cần bao nhiêu bước để tìm thấy số 7 trong danh sách [1, 4, 8, 7, 10, 28]?
A. 2
B. 3
C. 4
D. 5

Bài 21. Các thuật toán sắp xếp đơn giản

Câu 1. Thuật toán sắp xếp nào hoạt động bằng cách so sánh từng cặp phần tử liên tiếp và đổi chỗ nếu chúng không đúng thứ tự?
A. Sắp xếp chèn (Insertion Sort)
B. Sắp xếp nhanh (Quick Sort)
C. Sắp xếp nổi bọt (Bubble Sort)
D. Sắp xếp lựa chọn (Selection Sort)

Câu 2.  Thuật toán sắp xếp nào phù hợp nhất khi mảng đã được sắp xếp gần như hoàn toàn?
A. Sắp xếp nổi bọt (Bubble Sort)
B. Sắp xếp chèn (Insertion Sort)
C. Sắp xếp nhanh (Quick Sort)
D. Sắp xếp chọn (Selection Sort)

Câu 3. Thuật toán nào có độ phức tạp thời gian tốt nhất là O(n2) trong trường hợp trung bình?
A. Sắp xếp nổi bọt (Bubble Sort)
B. Sắp xếp chọn (Selection Sort)
C. Sắp xếp nhanh (Quick Sort)
D. Sắp xếp trộn (Merge Sort)

Câu 4. Thuật toán sắp xếp nào có độ phức tạp thời gian tồi nhất trong trường hợp xấu nhất là O(n2)?
A. Sắp xếp chọn (Selection Sort)
B. Sắp xếp chèn (Insertion Sort)
C. Sắp xếp nổi bọt (Bubble Sort)
D. Sắp xếp nhanh (Quick Sort)

Bài 22. Thực hành bài toán sắp xếp

Câu 1. Cho dãy số: 15, 1, 31, 9, 78, 42. Nếu sử dụng thuật toán sắp xếp nổi bọt để sắp xếp dãy trên tăng dần thì sau bao nhiêu lượt đổi chỗ thì thuật toán kết thúc?
A. 2
B. 3
C. 4
D. 5

Câu 2. Cho dãy số: 6, 4, 5, 3. Nếu sử dụng thuật toán sắp xếp nổi bọt để sắp xếp dãy tăng dần thì sau bao nhiêu vòng lặp thì thuật toán kết thúc?
A. 2
B. 3
C. 4
D. 5

Bài 23. Kiểm thử và đánh giá chương trình

Câu 1. Đâu không là công cụ để kiểm thử chương trình?
A. Công cụ in biến trung gian
B. Công cụ sinh các bộ dữ liệu test
C. Công cụ thống kê dữ liệu
D. Công cụ điểm dừng trong phần mềm soạn thảo lập trình

Câu 2. Hoàn thành phát biểu sau: “Có rất nhiều công cụ và phương pháp khác nhau để kiểm thử chương trình. Các công cụ có mục đích … của chương trình và …, … các lỗi phát sinh trong tương lai”
A. Tìm ra lỗi, phòng ngừa, ngăn chặn
B. Tìm ra lỗi, phòng ngừa, xử lí
C. Phòng ngừa, ngăn chặn, xử lí lỗi
D. Xử lí lỗi, phòng ngừa, ngăn chặn

Câu 3. Chương trình chạy phát sinh lỗi ngoại lệ ZeroDivision, nên xử lí như thế nào?
A. Kiểm tra lại giá trị số chia
B. Kiểm tra lại chỉ số trong mảng
C. Kiểm tra giá trị của số bị chia
D. Kiểm tra kiểu dữ liệu nhập vào

Câu 4. Chương trình chạy phát sinh lỗi ngoại lệ IndexError, nên xử lí như thế nào?
A. Kiểm tra lại giá trị số chia
B. Kiểm tra lại chỉ số trong mảng
C. Kiểm tra giá trị của số bị chia
D. Kiểm tra kiểu dữ liệu nhập vào

Bài 24. Đánh giá độ phức tạp thời gian thuật toán

Câu 1. Các bước giải bài toán trên máy tính được tiến hành theo thứ tự nào sau đây?
A. Xác định bài toán – Lựa chọn thuật toán – Viết chương trình – Hiệu chỉnh – Viết tài liệu
B. Xác định bài toán – Viết chương trình – Lựa chọn thuật toán – Viết tài liệu
C. Lựa chọn thuật toán – Xác định bài toán – Viết chương trình – Hiệu chỉnh – Viết tài liệu
D. Viết chương trình – Hiệu chỉnh – Viết tài liệu

Câu 2. Trong đánh giá thời gian chạy chương trình thì các phép tính số học gồm +, -, *, / sẽ được tính là mấy đơn vị thời gian?
A. 0
B. 1 
C. 2
D. 3

Câu 3. Trong đánh giá thời gian chạy chương trình thì các phép toán logic cơ bản như and, or, not sẽ được tính là mấy đơn vị thời gian?
A. 0
B. 1
C. 2
D. 3

Câu 4. Trong đánh giá thời gian chạy chương trình thì các lệnh đơn như lệnh gán, lệnh in, đọc dữ liệu sẽ được tính là mấy đơn vị thời gian?
A. 0   
B. 1
C. 2
D. 3

Câu 5. Trong đánh giá thời gian chạy chương trình thì vòng lặp while hoặc for sẽ được tính là mấy đơn vị thời gian?
A. Bằng đơn vị thời gian của mỗi bước lặp
B. Bằng tích của đơn vị thời gian của mỗi bước lặp
C. Bằng tổng đơn vị thời gian của mỗi bước lặp
D. Bằng lũy thừa của đơn vị thời gian của mỗi bước lặp

Câu 6. Trong đánh giá thời gian chạy chương trình thì lệnh if với nhiều trường hợp  rẽ nhánh sẽ được tính là mấy đơn vị thời gian?
A. Bằng đơn vị thời gian bé nhất của các lệnh nhánh
B. Bằng hiệu của đơn vị thời gian lớn nhất trừ đi đơn vị thời gian bé nhất của các lệnh nhánh
C. Bằng tổng đơn vị thời gian lớn nhất và đơn vị thời gian bé nhất của các lệnh nhánh
D. Bằng đơn vị thời gian lớn nhất của các lệnh nhánh

II. PHẦN TỰ LUẬN (3 điểm)

Câu 1. Viết chương trình nhập vào dãy các số nguyên cách nhau bởi dấu cách, sau đó tính và xuất ra màn hình tổng của các số chẵn?

Câu 2. Viết chương trình nhập vào một dãy các số nguyên cách nhau bởi dấu cách, sau đó nhập vào số nguyên x. Dùng thuật toán tìm kiếm tuần tự, hãy cho biết vị trí cuối cùng tìm thấy của x trong dãy vừa nhập, nếu không tìm thấy thì trả về -1

Ví dụ : A = [1, 3, 5, 7] và x = 5 thì kết quả xuất ra màn hình là 2

Câu 3. Viết chương trình nhập vào dãy số nguyên cách nhau bởi dấu cách. Sau đó sử dụng thuật toán sắp xếp chèn để sắp xếp dãy số đó theo thứ tự tăng dần và xuất kết quả ra màn hình.

Gợi ý trả lời:

Câu 1. Chương trình tính tổng các số chẵn

A = list(map(int,input('Nhập dãy số nguyên: ').split()))
s = 0
for x in A:
    if x%2==0: s = s + x
print('Tổng các số chẵn là',s)

Câu 2. Tìm kiếm x trong mảng A

A = list(map(int,input('Nhập dãy số nguyên: ').split()))
x = int(input('Mời nhập số nguyên x: '))
vt = -1
for i in range(len(A)):
    if A[i]==x: vt = i
print('Vị trí của',x,'là',vt)

Câu 2. Sắp xếp mảng

def  InsertionSort(A):
    n = len(A)
    for i in range(1,n):
        value = A[i]
        j = i - 1
        while j>=0 and A[j]>value:
            A[j+1] = A[j]
            j = j - 1
        A[j+1] = value

A = list(map(int,input('Nhập dãy số nguyên: ').split()))
InsertionSort(A)
print('Dãy số sau khi được sắp xếp tăng dần:')
for x in A:
    print(x,end=' ')

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *