Trắc nghiệm Tin học 11 Kết nối tri thức Bài 18: Thực hành dữ liệu mảng một chiều và hai chiều - Đề 05
Trắc nghiệm Tin học 11 Kết nối tri thức Bài 18: Thực hành dữ liệu mảng một chiều và hai chiều - Đề 05 bao gồm nhiều câu hỏi hay, bám sát chương trình. Cùng làm bài tập trắc nghiệm ngay.
Câu 1: Xét đoạn chương trình Python sau:
```python
numbers = [10, 20, 30, 40, 50]
result = numbers[1:4]
print(result)
```
Đoạn chương trình trên sẽ in ra kết quả nào?
- A. [20, 30, 40]
- B. [10, 20, 30, 40]
- C. [20, 30, 40, 50]
- D. [30, 40]
Câu 2: Cho một mảng hai chiều `matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]`. Để truy cập vào phần tử có giá trị là 5, bạn sử dụng cú pháp nào trong Python?
- A. matrix[2][2]
- B. matrix[1][1]
- C. matrix[5]
- D. matrix[2, 2]
Câu 3: Bạn có một danh sách điểm thi của học sinh trong một lớp được lưu trữ trong mảng một chiều. Để tìm ra điểm số cao nhất của lớp, bạn nên sử dụng thuật toán nào hiệu quả nhất?
- A. Sắp xếp mảng và lấy phần tử cuối cùng
- B. Tìm kiếm nhị phân
- C. Duyệt tuyến tính và so sánh từng phần tử với giá trị lớn nhất hiện tại
- D. Đệ quy chia để trị
Câu 4: Giả sử bạn có một mảng hai chiều biểu diễn một bảng dữ liệu, trong đó mỗi hàng là thông tin của một sản phẩm (Tên sản phẩm, Giá, Số lượng tồn kho). Để tính tổng giá trị tồn kho của tất cả sản phẩm, bạn cần thực hiện thao tác nào trên mảng?
- A. Tính tổng tất cả các phần tử trong mảng
- B. Lặp qua từng hàng, nhân giá (cột thứ hai) với số lượng (cột thứ ba), và cộng dồn kết quả
- C. Tìm giá trị lớn nhất trong mảng
- D. Sắp xếp mảng theo cột giá
Câu 5: Trong Python, hàm nào sau đây được sử dụng để thêm một phần tử vào cuối một mảng (list)?
- A. insert()
- B. add()
- C. extend()
- D. append()
Câu 6: Cho mảng `A = [5, 2, 8, 1, 9]`. Sau khi thực hiện thuật toán sắp xếp nổi bọt (Bubble Sort) một lượt từ đầu đến cuối mảng, mảng A sẽ trở thành:
- A. [1, 2, 5, 8, 9]
- B. [9, 8, 5, 2, 1]
- C. [2, 5, 1, 8, 9]
- D. [5, 2, 8, 1, 9]
Câu 7: Ưu điểm chính của việc sử dụng mảng (so với các cấu trúc dữ liệu khác như danh sách liên kết) khi truy cập ngẫu nhiên đến các phần tử là gì?
- A. Truy cập phần tử theo chỉ số rất nhanh (thời gian hằng số)
- B. Dễ dàng thay đổi kích thước mảng
- C. Tiết kiệm bộ nhớ hơn
- D. Linh hoạt hơn trong việc chèn và xóa phần tử
Câu 8: Trong ngôn ngữ lập trình, khi khai báo một mảng, điều gì thường cần được xác định trước?
- A. Giá trị của phần tử đầu tiên
- B. Kiểu dữ liệu của các phần tử
- C. Giá trị của phần tử cuối cùng
- D. Tên biến mảng
Câu 9: Cho đoạn mã Python:
```python
matrix = [[1, 2], [3, 4], [5, 6]]
for row in matrix:
print(len(row))
```
Đoạn mã này sẽ in ra kết quả gì?
- A. 3
- B. 2
- C. 2
2
2
- D. 2 2 2
Câu 10: Bạn muốn biểu diễn một bàn cờ vua 8x8 trên máy tính. Cấu trúc dữ liệu mảng nào phù hợp nhất để thực hiện việc này?
- A. Mảng một chiều
- B. Mảng hai chiều
- C. Danh sách liên kết
- D. Cây nhị phân
Câu 11: Để tính trung bình cộng các phần tử trong một mảng số nguyên, bạn cần thực hiện các bước nào theo thứ tự sau:
- A. 1. Tính tổng các phần tử trong mảng; 2. Đếm số lượng phần tử trong mảng; 3. Chia tổng cho số lượng
- B. 1. Đếm số lượng phần tử trong mảng; 2. Chia tổng cho số lượng; 3. Tính tổng các phần tử trong mảng
- C. 1. Chia tổng cho số lượng; 2. Tính tổng các phần tử trong mảng; 3. Đếm số lượng phần tử trong mảng
- D. 1. Đếm số lượng phần tử trong mảng; 2. Tính tổng các phần tử trong mảng; 3. Nhân tổng với số lượng
Câu 12: Cho mảng `data = [15, 8, 22, 5, 12]`. Nếu bạn muốn tạo một mảng mới chỉ chứa các phần tử lớn hơn 10 từ mảng `data`, bạn sẽ sử dụng kỹ thuật nào?
- A. Sắp xếp mảng
- B. Tìm kiếm nhị phân
- C. Lọc (Filtering)
- D. Đảo ngược mảng
Câu 13: Trong Python, để biết số chiều của một mảng (ví dụ, kiểm tra xem mảng là một chiều hay hai chiều), bạn có thể sử dụng thuộc tính hoặc hàm nào (nếu có thư viện NumPy)?
- A. len()
- B. size()
- C. shape()
- D. ndim (nếu dùng NumPy)
Câu 14: Xét tình huống bạn cần lưu trữ thông tin về nhiệt độ trung bình hàng ngày trong một năm. Loại mảng nào (một chiều hay hai chiều) sẽ phù hợp nhất và tại sao?
- A. Mảng một chiều, vì chỉ cần một danh sách các giá trị nhiệt độ theo thứ tự thời gian.
- B. Mảng hai chiều, vì cần hàng và cột để biểu diễn ngày và nhiệt độ.
- C. Cả hai đều phù hợp như nhau.
- D. Không loại nào phù hợp, cần cấu trúc dữ liệu khác.
Câu 15: Giả sử bạn có một mảng các chuỗi tên học sinh. Bạn muốn sắp xếp mảng này theo thứ tự bảng chữ cái. Thuật toán sắp xếp nào sau đây thường được coi là hiệu quả và dễ cài đặt cho mảng kích thước nhỏ và vừa?
- A. Sắp xếp trộn (Merge Sort)
- B. Sắp xếp chèn (Insertion Sort)
- C. Sắp xếp nhanh (Quick Sort)
- D. Sắp xếp vun đống (Heap Sort)
Câu 16: Trong mảng hai chiều, các phần tử được tổ chức theo cấu trúc nào?
- A. Dạng cây
- B. Dạng đồ thị
- C. Dạng bảng với hàng và cột
- D. Dạng danh sách liên kết
Câu 17: Cho mảng một chiều `numbers = [7, 3, 9, 1, 5]`. Nếu bạn muốn đảo ngược thứ tự các phần tử trong mảng này, bạn sẽ được mảng nào?
- A. [1, 3, 5, 7, 9]
- B. [9, 7, 5, 3, 1]
- C. [7, 3, 9, 1, 5]
- D. [5, 1, 9, 3, 7]
Câu 18: Khi nào việc sử dụng mảng hai chiều trở nên đặc biệt hữu ích so với mảng một chiều?
- A. Khi cần lưu trữ danh sách các số
- B. Khi cần biểu diễn dữ liệu có cấu trúc bảng hoặc ma trận
- C. Khi cần truy cập phần tử đầu tiên nhanh chóng
- D. Khi cần chèn hoặc xóa phần tử thường xuyên
Câu 19: Cho mảng `values = [2, 4, 6, 8, 10]`. Bạn muốn nhân mỗi phần tử trong mảng này với 2. Thao tác nào sau đây mô tả đúng cách thực hiện điều này?
- A. values * 2
- B. values.multiply(2)
- C. Lặp qua từng phần tử của mảng và nhân mỗi phần tử với 2
- D. values + [2, 2, 2, 2, 2]
Câu 20: Trong bài toán quản lý kho hàng, bạn có thể dùng mảng hai chiều để lưu thông tin về số lượng từng mặt hàng trong từng kho. Hàng sẽ đại diện cho gì và cột sẽ đại diện cho gì?
- A. Hàng: Mặt hàng, Cột: Kho
- B. Hàng: Kho, Cột: Mặt hàng
- C. Hàng: Ngày nhập kho, Cột: Mặt hàng
- D. Hàng: Giá mặt hàng, Cột: Kho
Câu 21: Để kiểm tra xem một giá trị `x` có tồn tại trong mảng một chiều hay không, thuật toán tìm kiếm tuyến tính sẽ thực hiện như thế nào?
- A. Chia mảng thành hai phần và tìm kiếm trong từng phần
- B. Duyệt qua từng phần tử của mảng từ đầu đến cuối và so sánh với `x`
- C. Sắp xếp mảng trước rồi mới tìm kiếm
- D. Chỉ kiểm tra phần tử đầu và cuối của mảng
Câu 22: Cho mảng `letters = ["a", "b", "c", "d", "e"]`. Lệnh `letters.pop(2)` sẽ trả về giá trị nào và mảng `letters` sau đó sẽ là gì?
- A. Trả về "b", mảng còn lại ["a", "c", "d", "e"]
- B. Trả về "c", mảng còn lại ["a", "b", "d", "e"]
- C. Trả về "c", mảng còn lại ["a", "b", "d", "e"]
- D. Trả về "d", mảng còn lại ["a", "b", "c", "e"]
Câu 23: Trong Python, bạn có thể khởi tạo một mảng hai chiều các số 0 kích thước 3x4 bằng cách nào?
- A. [[0]4]3
- B. [[0 for _ in range(4)] for _ in range(3)]
- C. [0]*12
- D. array([0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0])
Câu 24: Khi truy cập một phần tử mảng bằng chỉ số, nếu chỉ số đó vượt quá kích thước mảng, điều gì thường xảy ra trong hầu hết các ngôn ngữ lập trình?
- A. Trả về giá trị mặc định (ví dụ: 0)
- B. Trả về phần tử đầu tiên của mảng
- C. Trả về phần tử cuối cùng của mảng
- D. Gây ra lỗi "Index out of bounds" hoặc tương tự
Câu 25: Cho hai mảng một chiều `list1 = [1, 2, 3]` và `list2 = [4, 5, 6]`. Toán tử `+` khi dùng với hai mảng này trong Python sẽ thực hiện phép toán nào?
- A. Nối hai mảng thành một mảng mới [1, 2, 3, 4, 5, 6]
- B. Cộng tương ứng các phần tử của hai mảng (yêu cầu cùng kích thước)
- C. Không thực hiện được, gây ra lỗi
- D. Tạo ra mảng hai chiều
Câu 26: Xét đoạn mã Python:
```python
matrix = [[1, 2, 3], [4, 5, 6]]
print(len(matrix[1]))
```
Kết quả in ra của đoạn mã trên là bao nhiêu?
Câu 27: Bạn cần lưu trữ điểm kiểm tra của 3 môn học cho 40 học sinh trong lớp. Cấu trúc mảng nào là phù hợp nhất để tổ chức dữ liệu này?
- A. Ba mảng một chiều, mỗi mảng cho một môn
- B. Một mảng hai chiều 40x3 (hoặc 3x40)
- C. Một mảng một chiều kích thước 120
- D. Không cần dùng mảng
Câu 28: Trong thuật toán sắp xếp chọn (Selection Sort), sau mỗi lượt lặp, phần tử nào của mảng được đưa về đúng vị trí?
- A. Phần tử lớn nhất
- B. Phần tử ở giữa mảng
- C. Phần tử nhỏ nhất (hoặc lớn nhất) trong phần còn lại của mảng
- D. Phần tử đầu tiên của mảng
Câu 29: Để sao chép một mảng một chiều sang một mảng mới trong Python, cách nào sau đây là đúng và tạo ra bản sao độc lập (không phải tham chiếu)?
- A. new_array = old_array
- B. new_array = old_array.clone()
- C. new_array = list(old_array)
- D. new_array = old_array[:]
Câu 30: Bạn có một mảng các số đo chiều cao của học sinh. Để xác định số lượng học sinh có chiều cao trên 1.6 mét, bạn cần thực hiện thao tác gì trên mảng?
- A. Tính tổng chiều cao của tất cả học sinh
- B. Duyệt qua mảng và đếm số lượng phần tử lớn hơn 1.6
- C. Tìm chiều cao trung bình
- D. Sắp xếp mảng theo chiều cao