1. Nếu một mảng chỉ số bắt đầu từ 0 (ví dụ: array[0..5]), thì phần tử đầu tiên của mảng sẽ được truy cập bằng chỉ số nào?
2. Phát biểu nào mô tả đúng về tính chất truy cập ngẫu nhiên (random access) của mảng?
A. Thời gian truy cập đến bất kỳ phần tử nào của mảng là như nhau, không phụ thuộc vào vị trí của phần tử đó.
B. Thời gian truy cập đến phần tử đầu tiên luôn nhanh nhất.
C. Thời gian truy cập đến phần tử cuối cùng luôn chậm nhất.
D. Thời gian truy cập phụ thuộc vào giá trị của phần tử.
3. Để lưu trữ thông tin về điểm số của 100 sinh viên trong một môn học, cấu trúc dữ liệu nào sau đây là hiệu quả nhất?
A. Mảng một chiều
B. Biến đơn
C. Kiểu dữ liệu bản ghi (record)
D. Chuỗi ký tự
4. Mục đích chính của việc sử dụng chỉ số (index) khi làm việc với mảng là gì?
A. Để xác định vị trí của một phần tử cụ thể trong mảng.
B. Để lưu trữ giá trị của mảng.
C. Để thay đổi kích thước của mảng.
D. Để định nghĩa kiểu dữ liệu của mảng.
5. Trong ngôn ngữ lập trình C++, khai báo mảng int arr[5]; tạo ra một mảng có bao nhiêu phần tử?
6. Phát biểu nào sau đây là ĐÚNG khi nói về mảng hai chiều?
A. Mảng hai chiều có thể được xem như một bảng hoặc một ma trận.
B. Mảng hai chiều chỉ có thể lưu trữ dữ liệu dạng số.
C. Mảng hai chiều có thể thay đổi kích thước của từng hàng một cách độc lập.
D. Mảng hai chiều chỉ có thể có kích thước là 2x2.
7. Kiểu mảng nào phù hợp để lưu trữ danh sách các điểm thi của một lớp học gồm 40 học sinh?
A. Mảng một chiều
B. Mảng hai chiều
C. Mảng đa chiều
D. Mảng ký tự
8. Cho biết, trong các cấu trúc dữ liệu, kiểu mảng được xem là kiểu dữ liệu gì?
A. Kiểu dữ liệu có cấu trúc
B. Kiểu dữ liệu cơ bản
C. Kiểu dữ liệu trừu tượng
D. Kiểu dữ liệu động
9. Trong lập trình, khi truy cập một phần tử mảng bằng một chỉ số nằm ngoài phạm vi khai báo (ví dụ: truy cập phần tử thứ 11 của mảng có chỉ số từ 1 đến 10), điều gì thường xảy ra?
A. Chương trình sẽ báo lỗi truy cập ngoài giới hạn (out-of-bounds error).
B. Chương trình sẽ tự động điều chỉnh chỉ số.
C. Chương trình sẽ trả về giá trị 0.
D. Chương trình sẽ bỏ qua thao tác truy cập đó.
10. Trong các ngôn ngữ lập trình hiện đại, kiểu mảng có thể được định nghĩa là gì?
A. Một tập hợp các phần tử có cùng kiểu, được lưu trữ liên tiếp trong bộ nhớ và có thể truy cập bằng chỉ số.
B. Một tập hợp các phần tử có kiểu dữ liệu khác nhau, có thể truy cập thông qua tên biến.
C. Một cấu trúc dữ liệu chỉ dùng để lưu trữ chuỗi ký tự.
D. Một cấu trúc dữ liệu có kích thước luôn thay đổi tự động.
11. Trong lập trình, nếu muốn lưu trữ thông tin về ngày tháng năm sinh của nhiều người, ta có thể sử dụng cấu trúc nào?
A. Mảng các bản ghi (array of records), mỗi bản ghi chứa ngày, tháng, năm.
B. Một mảng ký tự đơn lẻ.
C. Một mảng số nguyên duy nhất.
D. Một mảng boolean.
12. Trong Pascal, khai báo var data: array[1..5, a..c] of char; sẽ tạo ra một mảng có bao nhiêu hàng và bao nhiêu cột?
A. 5 hàng và 3 cột
B. 3 hàng và 5 cột
C. 5 hàng và 26 cột
D. 26 hàng và 5 cột
13. Trong Pascal, để truy cập phần tử thứ 5 của mảng a đã khai báo là var a: array[1..10] of integer;, ta sử dụng cú pháp nào?
A. a[5]
B. a(5)
C. a[4]
D. a[6]
14. Cho một mảng hai chiều students[5][10] (giả định ngôn ngữ C++). Làm thế nào để truy cập vào phần tử nằm ở hàng thứ 3, cột thứ 7?
A. students[2][6]
B. students[3][7]
C. students[3][6]
D. students[2][7]
15. Trong một mảng hai chiều, làm thế nào để truy cập vào phần tử nằm ở hàng thứ i và cột thứ j?
A. Sử dụng chỉ số hàng và chỉ số cột, ví dụ: array_name[i, j] hoặc array_name[i][j] tùy ngôn ngữ.
B. Chỉ sử dụng chỉ số hàng.
C. Chỉ sử dụng chỉ số cột.
D. Sử dụng tổng của chỉ số hàng và cột.
16. Khi khai báo một mảng hai chiều, ví dụ var matrix: array[1..3, 1..4] of real;, số lượng phần tử trong mảng matrix là bao nhiêu?
17. Nếu khai báo mảng var numbers: array[10..20] of integer;, thì tổng số phần tử trong mảng numbers là bao nhiêu?
18. Phát biểu nào sau đây là ĐÚNG về cách khai báo kiểu mảng trong Python?
A. Python sử dụng danh sách (list) làm cấu trúc dữ liệu tương tự mảng, cho phép lưu trữ các kiểu dữ liệu khác nhau và có kích thước động.
B. Python bắt buộc phải khai báo kích thước mảng trước khi sử dụng.
C. Trong Python, mảng chỉ có thể chứa các phần tử cùng kiểu dữ liệu.
D. Python sử dụng cú pháp array[start..end] để khai báo mảng.
19. Đâu là phát biểu SAI về kiểu dữ liệu mảng?
A. Các phần tử của mảng phải có cùng kiểu dữ liệu.
B. Kích thước của mảng phải được xác định trước khi sử dụng.
C. Có thể truy cập trực tiếp bất kỳ phần tử nào của mảng bằng chỉ số.
D. Mảng có thể chứa các phần tử thuộc các kiểu dữ liệu khác nhau.
20. Xét mảng scores được khai báo như sau: var scores: array[1..5] of real;. Giá trị của scores[3] sẽ là gì nếu các phần tử của mảng lần lượt là 10.5, 12.0, 15.5, 11.0, 13.5?
A. 15.5
B. 12.0
C. 10.5
D. 11.0
21. Trong ngôn ngữ lập trình Pascal, khai báo mảng nào sau đây là đúng?
A. var a: array[1..10] of integer;
B. var a: integer[1..10];
C. var a: array of integer(1..10);
D. var a: integer array(1..10);
22. Nếu một mảng được khai báo với kích thước lớn hơn nhiều so với nhu cầu sử dụng thực tế, nhược điểm chính là gì?
A. Gây lãng phí bộ nhớ.
B. Làm chậm tốc độ truy cập dữ liệu.
C. Gây khó khăn trong việc đọc hiểu mã.
D. Tăng khả năng xảy ra lỗi tràn bộ đệm.
23. Khi làm việc với mảng trong lập trình, độ dài (length) của mảng thường được hiểu là gì?
A. Tổng số phần tử mà mảng có thể chứa.
B. Kích thước bộ nhớ mà mảng chiếm dụng.
C. Giá trị của phần tử cuối cùng trong mảng.
D. Số lượng phần tử đã được gán giá trị.
24. Ưu điểm chính của việc sử dụng mảng so với việc sử dụng nhiều biến riêng lẻ để lưu trữ cùng một loại dữ liệu là gì?
A. Giúp quản lý và xử lý dữ liệu dễ dàng hơn thông qua chỉ số, tiết kiệm mã lệnh.
B. Tăng tốc độ truy cập dữ liệu một cách đáng kể.
C. Cho phép lưu trữ các kiểu dữ liệu khác nhau trong cùng một cấu trúc.
D. Tự động giảm thiểu bộ nhớ sử dụng.
25. Phát biểu nào sau đây mô tả đúng về cấu trúc mảng?
A. Là một tập hợp các phần tử có cùng kiểu dữ liệu, được tổ chức theo một thứ tự nhất định và có thể truy cập bằng chỉ số.
B. Là một tập hợp các biến có tên khác nhau, mỗi biến có thể có kiểu dữ liệu khác nhau.
C. Là một cấu trúc dữ liệu động, có thể thay đổi kích thước tùy ý trong quá trình chạy chương trình.
D. Là một tập hợp các phần tử, mỗi phần tử là một con trỏ trỏ đến một vùng nhớ khác.