🌌Tizia

Đề kiểm tra giữa học kì II — Tin học 8

Tin học Lớp 8 · 20 câu hỏi có lời giải

  1. Câu 1.Sắp xếp (sorting) trong tin học được hiểu là gì?

    • A.Sắp xếp lại các phần tử của một dãy theo một thứ tự xác định (tăng dần hoặc giảm dần)
    • B.Xoá bớt các phần tử trong dãy
    • C.Tìm phần tử lớn nhất trong dãy
    • D.Đảo ngược ngẫu nhiên thứ tự các phần tử
    Xem đáp án

    Đáp án: A. Sắp xếp lại các phần tử của một dãy theo một thứ tự xác định (tăng dần hoặc giảm dần)

    Sắp xếp là quá trình tổ chức lại các phần tử của một dãy theo một trật tự xác định, thường là tăng dần hoặc giảm dần.

  2. Câu 2.Sau khi sắp xếp một dãy số theo thứ tự tăng dần, phần tử đứng ở vị trí đầu tiên là phần tử nào?

    • A.Phần tử nhỏ nhất trong dãy
    • B.Phần tử lớn nhất trong dãy
    • C.Phần tử đứng giữa dãy
    • D.Một phần tử bất kỳ
    Xem đáp án

    Đáp án: A. Phần tử nhỏ nhất trong dãy

    Khi sắp xếp tăng dần, các phần tử được xếp từ nhỏ đến lớn, nên phần tử đầu tiên chính là phần tử nhỏ nhất.

  3. Câu 3.Ý tưởng chính của thuật toán sắp xếp chọn (Selection sort) là gì?

    • A.Mỗi lượt chọn phần tử nhỏ nhất trong phần chưa sắp xếp rồi đưa về đúng vị trí
    • B.Chèn từng phần tử vào đúng vị trí trong phần dãy đã sắp xếp
    • C.Chia dãy thành hai nửa rồi sắp xếp riêng từng nửa
    • D.So sánh ngẫu nhiên các cặp phần tử với nhau
    Xem đáp án

    Đáp án: A. Mỗi lượt chọn phần tử nhỏ nhất trong phần chưa sắp xếp rồi đưa về đúng vị trí

    Selection sort lặp lại việc tìm phần tử nhỏ nhất trong phần chưa sắp xếp và đưa nó về đúng vị trí ở đầu phần đó.

  4. Câu 4.Với dãy có n phần tử, thuật toán selection sort cần thực hiện khoảng bao nhiêu lần so sánh?

    • A.Khoảng n(n-1)/2 lần
    • B.Khoảng n lần
    • C.Khoảng log₂n lần
    • D.Khoảng 2n lần
    Xem đáp án

    Đáp án: A. Khoảng n(n-1)/2 lần

    Selection sort cần khoảng n(n-1)/2 phép so sánh vì với mỗi lượt chọn phần tử nhỏ nhất phải so sánh với các phần tử còn lại.

  5. Câu 5.Cho dãy [3, 1, 2]. Áp dụng bước đầu tiên của selection sort (tìm phần tử nhỏ nhất trong toàn dãy và đưa về đầu), kết quả sau bước 1 là dãy nào?

    • A.[1, 3, 2]
    • B.[3, 1, 2]
    • C.[1, 2, 3]
    • D.[2, 1, 3]
    Xem đáp án

    Đáp án: A. [1, 3, 2]

    Phần tử nhỏ nhất của dãy [3,1,2] là 1 (đang ở vị trí thứ 2), đổi chỗ 1 với phần tử đầu dãy (3), được dãy mới [1, 3, 2].

  6. Câu 6.Ý tưởng chính của thuật toán sắp xếp chèn (Insertion sort) là gì?

    • A.Lấy từng phần tử và chèn vào đúng vị trí trong phần dãy đã được sắp xếp
    • B.Luôn chọn phần tử lớn nhất và đưa ra cuối dãy
    • C.Chia đôi dãy liên tục cho đến khi còn một phần tử
    • D.Đảo ngẫu nhiên vị trí các phần tử trong dãy
    Xem đáp án

    Đáp án: A. Lấy từng phần tử và chèn vào đúng vị trí trong phần dãy đã được sắp xếp

    Insertion sort duyệt từng phần tử và chèn nó vào đúng vị trí trong phần dãy con đã được sắp xếp trước đó.

  7. Câu 7.Trong trường hợp xấu nhất, độ phức tạp của thuật toán insertion sort là bao nhiêu?

    • A.O(n²)
    • B.O(n)
    • C.O(log n)
    • D.O(1)
    Xem đáp án

    Đáp án: A. O(n²)

    Trường hợp xấu nhất (dãy sắp xếp ngược), insertion sort cần khoảng n(n-1)/2 phép so sánh và dịch chuyển, tức độ phức tạp O(n²).

  8. Câu 8.Cho dãy [4, 2, 5, 1]. Sau khi chèn xong phần tử thứ hai (giá trị 2) vào đúng vị trí trong phần dãy đã sắp xếp trước đó (chỉ gồm phần tử 4), dãy trở thành gì?

    • A.[2, 4, 5, 1]
    • B.[4, 2, 5, 1]
    • C.[1, 2, 4, 5]
    • D.[2, 4, 1, 5]
    Xem đáp án

    Đáp án: A. [2, 4, 5, 1]

    Xét hai phần tử đầu [4, 2]: vì 2 < 4 nên chèn 2 lên trước 4, được [2, 4], phần còn lại [5, 1] giữ nguyên vị trí ban đầu, kết quả [2, 4, 5, 1].

  9. Câu 9.Trong Python, phương thức a.sort() có tác dụng gì với danh sách a?

    • A.Sắp xếp trực tiếp danh sách a tăng dần, làm thay đổi chính a
    • B.Trả về một danh sách mới đã sắp xếp, giữ nguyên a
    • C.Đảo ngược thứ tự các phần tử trong a
    • D.Xoá các phần tử trùng lặp trong a
    Xem đáp án

    Đáp án: A. Sắp xếp trực tiếp danh sách a tăng dần, làm thay đổi chính a

    a.sort() sắp xếp trực tiếp trên danh sách a (in-place), làm thay đổi thứ tự các phần tử trong chính a.

  10. Câu 10.Cho hs = [7, 5, 9, 3]. Sau khi thực hiện lệnh hs.sort(), danh sách hs trở thành gì?

    • A.[3, 5, 7, 9]
    • B.[9, 7, 5, 3]
    • C.[7, 5, 9, 3]
    • D.[3, 7, 5, 9]
    Xem đáp án

    Đáp án: A. [3, 5, 7, 9]

    sort() mặc định sắp xếp tăng dần, nên [7, 5, 9, 3] trở thành [3, 5, 7, 9].

  11. Câu 11.Thuật toán tìm kiếm tuyến tính (Linear search) hoạt động bằng cách nào?

    • A.Duyệt lần lượt từng phần tử của dãy để so sánh với giá trị cần tìm
    • B.Chia đôi dãy liên tục để tìm nhanh hơn
    • C.Sắp xếp dãy trước rồi mới bắt đầu tìm kiếm
    • D.Chỉ kiểm tra phần tử đầu và phần tử cuối dãy
    Xem đáp án

    Đáp án: A. Duyệt lần lượt từng phần tử của dãy để so sánh với giá trị cần tìm

    Linear search kiểm tra tuần tự từng phần tử từ đầu đến cuối dãy cho đến khi tìm thấy hoặc duyệt hết dãy.

  12. Câu 12.Trong trường hợp xấu nhất, độ phức tạp của thuật toán linear search với dãy n phần tử là bao nhiêu?

    • A.O(n)
    • B.O(log n)
    • C.O(1)
    • D.O(n²)
    Xem đáp án

    Đáp án: A. O(n)

    Trường hợp xấu nhất (giá trị cần tìm ở cuối dãy hoặc không tồn tại), linear search phải kiểm tra cả n phần tử, độ phức tạp O(n).

  13. Câu 13.Thuật toán tìm kiếm nhị phân (Binary search) yêu cầu điều kiện gì ở dãy đầu vào?

    • A.Dãy phải đã được sắp xếp (thường là tăng dần)
    • B.Dãy phải có số lượng phần tử là số chẵn
    • C.Dãy phải chỉ chứa toàn số nguyên dương
    • D.Dãy không được có phần tử trùng nhau
    Xem đáp án

    Đáp án: A. Dãy phải đã được sắp xếp (thường là tăng dần)

    Binary search chỉ hoạt động đúng khi dãy đã được sắp xếp, vì thuật toán dựa vào việc so sánh với phần tử giữa để loại bỏ một nửa dãy.

  14. Câu 14.Ý tưởng chính của thuật toán tìm kiếm nhị phân (Binary search) là gì?

    • A.So sánh với phần tử ở giữa dãy rồi thu hẹp phạm vi tìm kiếm còn một nửa
    • B.Duyệt tuần tự từng phần tử từ đầu đến cuối dãy
    • C.Tìm kiếm tại một vị trí ngẫu nhiên trong dãy
    • D.Sắp xếp lại dãy mỗi lần thực hiện tìm kiếm
    Xem đáp án

    Đáp án: A. So sánh với phần tử ở giữa dãy rồi thu hẹp phạm vi tìm kiếm còn một nửa

    Binary search so sánh giá trị cần tìm với phần tử giữa dãy, từ đó loại bỏ một nửa dãy không thể chứa kết quả, lặp lại cho đến khi tìm thấy.

  15. Câu 15.Với một dãy đã sắp xếp có khoảng 1 triệu phần tử (2²⁰ ≈ 1.048.576), thuật toán binary search cần tối đa khoảng bao nhiêu lần so sánh để tìm ra một giá trị?

    • A.Khoảng 20 lần
    • B.Khoảng 1 triệu lần
    • C.Khoảng 1000 lần
    • D.Khoảng 2 lần
    Xem đáp án

    Đáp án: A. Khoảng 20 lần

    Số lần so sánh tối đa của binary search xấp xỉ log₂n; với n ≈ 2²⁰ thì log₂n ≈ 20 lần.

  16. Câu 16.Để tạo một xâu (chuỗi) ký tự trong Python, nội dung của xâu cần được đặt trong cặp dấu nào?

    • A.Dấu nháy đơn ' ' hoặc dấu nháy kép " "
    • B.Dấu ngoặc vuông [ ]
    • C.Dấu ngoặc nhọn { }
    • D.Dấu ngoặc tròn ( )
    Xem đáp án

    Đáp án: A. Dấu nháy đơn ' ' hoặc dấu nháy kép " "

    Xâu ký tự trong Python được đặt trong cặp dấu nháy đơn hoặc nháy kép, ví dụ 'Python' hoặc "Python".

  17. Câu 17.Cho s = "Tin hoc". Biểu thức len(s) trả về giá trị nào?

    • A.7
    • B.6
    • C.8
    • D.1
    Xem đáp án

    Đáp án: A. 7

    Xâu "Tin hoc" gồm 7 ký tự: T-i-n-(dấu cách)-h-o-c, nên len(s) = 7.

  18. Câu 18.Để tách một xâu thành danh sách các từ dựa theo dấu cách, ta dùng phương thức nào?

    • A.s.split()
    • B.s.join()
    • C.s.find()
    • D.s.replace()
    Xem đáp án

    Đáp án: A. s.split()

    Phương thức split() mặc định tách xâu thành danh sách các từ dựa trên khoảng trắng.

  19. Câu 19.Cho s = "Tin hoc". Biểu thức s.find("hoc") trả về giá trị nào (vị trí tính từ 0)?

    • A.4
    • B.3
    • C.0
    • D.-1
    Xem đáp án

    Đáp án: A. 4

    Trong xâu "Tin hoc", các ký tự có chỉ số: T(0) i(1) n(2) (khoảng trắng)(3) h(4) o(5) c(6); xâu con "hoc" bắt đầu từ vị trí 4.

  20. Câu 20.Cho dict diem = {"Toan": 8, "Van": 7}. Để thêm cặp khoá-giá trị mới "Anh": 9 vào dictionary này, câu lệnh nào đúng?

    • A.diem["Anh"] = 9
    • B.diem.append("Anh", 9)
    • C.diem.add("Anh": 9)
    • D.diem + "Anh" = 9
    Xem đáp án

    Đáp án: A. diem["Anh"] = 9

    Để thêm hoặc cập nhật một cặp khoá-giá trị trong dictionary, dùng cú pháp ten_dict[khoa] = gia_tri.