1. Khi khai báo một mảng với kích thước cố định, điều này có ý nghĩa gì đối với bộ nhớ?
A. Bộ nhớ cho mảng sẽ được cấp phát động khi chương trình chạy.
B. Bộ nhớ cho mảng được cấp phát cố định tại thời điểm biên dịch.
C. Bộ nhớ cho mảng chỉ được cấp phát khi có yêu cầu truy cập dữ liệu.
D. Kích thước mảng có thể thay đổi linh hoạt trong quá trình chạy chương trình.
2. Trong ngôn ngữ C, khi khai báo `struct SinhVien { char ten[50]; int tuoi; float diem; };`, biến `sv1` thuộc kiểu `struct SinhVien` sẽ truy cập trường tuoi như thế nào?
A. sv1.tuoi
B. sv1[tuoi]
C. sv1(tuoi)
D. sv1->tuoi
3. Sự khác biệt cơ bản giữa mảng và cấu trúc (struct/record) nằm ở điểm nào?
A. Mảng có kích thước cố định, cấu trúc có kích thước động.
B. Mảng chỉ lưu trữ một loại dữ liệu, cấu trúc có thể lưu trữ nhiều loại dữ liệu khác nhau.
C. Mảng được truy cập bằng chỉ số, cấu trúc được truy cập bằng tên trường.
D. Tất cả các phương án trên đều đúng.
4. Trong ngôn ngữ lập trình Python, cách khai báo một mảng (list) với 5 phần tử số nguyên có thể là:
A. array numbers = [1, 2, 3, 4, 5]
B. int numbers[5] = {1, 2, 3, 4, 5};
C. numbers = [1, 2, 3, 4, 5]
D. numbers = new array(5) {1, 2, 3, 4, 5};
5. Phát biểu nào là SAI khi nói về việc khai báo và sử dụng mảng trong các ngôn ngữ lập trình?
A. Kích thước mảng thường được xác định tại thời điểm biên dịch.
B. Các phần tử mảng được lưu trữ liền kề nhau trong bộ nhớ.
C. Chỉ số mảng luôn bắt đầu từ 1.
D. Mảng giúp tổ chức dữ liệu một cách có hệ thống.
6. Mục đích chính của việc sử dụng kiểu mảng là gì?
A. Để lưu trữ một số lượng lớn các giá trị không liên quan.
B. Để tổ chức và truy cập hiệu quả một tập hợp các dữ liệu có cùng bản chất.
C. Để thực hiện các phép toán số học phức tạp.
D. Để tạo ra giao diện người dùng đồ họa.
7. Nếu một chương trình cần lưu trữ một danh sách các tên file, mỗi tên file là một chuỗi ký tự, thì cấu trúc dữ liệu phù hợp nhất là:
A. Một mảng các số nguyên.
B. Một mảng các chuỗi ký tự.
C. Một biến đơn kiểu số thực.
D. Một cấu trúc chỉ chứa một trường là số nguyên.
8. Nếu bạn cần lưu trữ thông tin về tên, tuổi và điểm số của nhiều học sinh, cấu trúc dữ liệu nào sau đây là phù hợp nhất?
A. Một mảng các số nguyên.
B. Một mảng các chuỗi ký tự.
C. Một cấu trúc (struct) hoặc bản ghi (record) chứa các trường tên, tuổi, điểm số, và sau đó là một mảng các cấu trúc đó.
D. Một biến đơn lưu trữ tất cả thông tin dưới dạng một chuỗi ký tự dài.
9. Cho đoạn mã C++: `int arr[5] = {10, 20, 30, 40, 50};`. Giá trị của `arr[2]` là gì?
10. Khai báo mảng nào sau đây là KHÔNG hợp lệ trong Ngôn ngữ lập trình C?
A. int arr[10];
B. char str[5] = {a, b, c};
C. float values[-5];
D. double data[3.14];
11. Yếu tố nào là quan trọng nhất để đảm bảo tính đúng đắn khi làm việc với mảng?
A. Sử dụng tên biến mảng thật dài và dễ nhớ.
B. Đảm bảo chỉ số truy cập phần tử nằm trong giới hạn cho phép của mảng.
C. Khởi tạo tất cả các phần tử mảng với giá trị lớn nhất có thể.
D. Chỉ sử dụng mảng có kích thước nhỏ để tránh lỗi.
12. Trong một số ngôn ngữ lập trình, mảng có thể được xem là một dạng của:
A. Biến đơn
B. Hằng số
C. Kiểu dữ liệu trừu tượng (Abstract Data Type - ADT)
D. Toán tử
13. 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 biến đơn lẻ không liên quan.
B. Là một phương thức để sắp xếp dữ liệu theo thứ tự bảng chữ cái.
C. Là một cách tổ chức dữ liệu tương tự như mảng nhưng cho phép các phần tử có kiểu dữ liệu khác nhau.
D. Là một cách để tạo ra các hàm đệ quy.
14. Phát biểu nào sau đây mô tả chính xác nhất khái niệm chỉ số (index) trong mảng?
A. Giá trị của phần tử mảng.
B. Vị trí duy nhất để xác định một phần tử trong mảng.
C. Kiểu dữ liệu của các phần tử trong mảng.
D. Tổng số phần tử của mảng.
15. Khi làm việc với mảng, thao tác nào sau đây thường tốn nhiều thời gian nhất nếu mảng có kích thước rất lớn?
A. Truy cập một phần tử bằng chỉ số.
B. Thêm một phần tử vào cuối mảng.
C. Xóa một phần tử ở giữa mảng.
D. Cập nhật giá trị của một phần tử.
16. Khi xem xét các ngôn ngữ lập trình hiện đại, có những loại mảng nào khác ngoài mảng có kích thước cố định?
A. Chỉ có mảng hai chiều.
B. Mảng động (dynamic arrays) có thể thay đổi kích thước.
C. Mảng chỉ có thể chứa các giá trị boolean.
D. Mảng chỉ có thể được sử dụng trong các ứng dụng web.
17. Tại sao việc sử dụng mảng lại hiệu quả hơn so với việc khai báo nhiều biến riêng lẻ cho cùng một loại dữ liệu?
A. Nó làm cho tên biến dễ nhớ hơn.
B. Nó cho phép xử lý tập thể các dữ liệu bằng vòng lặp và chỉ số.
C. Nó làm giảm kích thước chương trình.
D. Nó tự động sắp xếp dữ liệu.
18. Phát biểu nào sau đây là đúng về mảng đa chiều?
A. Chỉ có thể có hai chiều (mảng hai chiều).
B. Mỗi phần tử được truy cập bằng một chỉ số duy nhất.
C. Mỗi phần tử được truy cập bằng một tập hợp các chỉ số.
D. Kích thước của mỗi chiều không cần phải giống nhau.
19. Trong ngữ cảnh của cấu trúc dữ liệu, kiểu mảng thường được hiểu là:
A. Một tập hợp các biến con trỏ.
B. Một tập hợp các phần tử có cùng kiểu dữ liệu, được truy cập bằng chỉ số.
C. Một cấu trúc để lưu trữ các cặp khóa-giá trị.
D. Một danh sách liên kết các nút.
20. Nếu một mảng được khai báo là `array[1..5, 1..5] of integer;` trong Pascal, đây là loại mảng nào?
A. Mảng một chiều
B. Mảng hai chiều
C. Mảng đa chiều
D. Mảng động
21. Trong lập trình, một mảng được gọi là mảng một chiều khi nào?
A. Khi tất cả các phần tử là số.
B. Khi nó chỉ có một hàng hoặc một cột dữ liệu.
C. Khi nó được truy cập bằng hai chỉ số.
D. Khi nó có khả năng lưu trữ dữ liệu văn bản.
22. Phát biểu nào sau đây mô tả đúng về sự khác biệt giữa mảng và biến đơn?
A. Biến đơn lưu trữ nhiều giá trị, mảng chỉ lưu trữ một giá trị.
B. Mảng lưu trữ nhiều giá trị cùng kiểu, biến đơn lưu trữ một giá trị.
C. Mảng chỉ có thể lưu trữ số, biến đơn có thể lưu trữ bất kỳ kiểu dữ liệu nào.
D. Không có sự khác biệt cơ bản nào, chúng là hai tên gọi cho cùng một khái niệm.
23. Trong các phát biểu sau đây về kiểu mảng, phát biểu nào là SAI?
A. Các phần tử của mảng có thể có kiểu dữ liệu khác nhau.
B. Mảng là một tập hợp các phần tử có cùng kiểu dữ liệu.
C. Các phần tử của mảng được truy cập thông qua chỉ số.
D. Kích thước của mảng phải được xác định trước khi sử dụng.
24. Nếu một mảng có 10 phần tử và các chỉ số bắt đầu từ 0, thì chỉ số của phần tử cuối cùng là bao nhiêu?
25. Cho khai báo mảng trong Pascal: `var a: array[1..10] of integer;`. Phần tử thứ 5 của mảng a được truy cập như thế nào?
A. a(5)
B. a[5]
C. a.5
D. a[5.0]