1. Phát biểu nào sau đây là đúng về việc khai báo kích thước của mảng trong các ngôn ngữ lập trình C/C++?
A. Kích thước mảng phải được xác định tại thời điểm biên dịch.
B. Kích thước mảng có thể được xác định tại thời điểm chạy chương trình.
C. Kích thước mảng có thể thay đổi linh hoạt sau khi khai báo.
D. Chỉ có mảng hai chiều mới cần xác định kích thước tại thời điểm biên dịch.
2. Trong biểu diễn mảng hai chiều, nếu một mảng có 3 hàng và 2 cột, thì số lượng phần tử tối đa mà nó có thể chứa là bao nhiêu?
3. Trong ngôn ngữ lập trình Pascal, khai báo một mảng một chiều có tên diem với các phần tử là số thực, có thể được biểu diễn như thế nào?
A. Var diem: array[1..100] of Real;
B. Var diem: array of Real;
C. Var diem: Real[100];
D. Var diem: Real array[1..100];
4. Trong một số ngôn ngữ lập trình, mảng có thể được khởi tạo trực tiếp khi khai báo. Ví dụ: `int arr[] = {1, 2, 3};` (C++). Điều này có nghĩa là gì?
A. Mảng arr có 3 phần tử với giá trị lần lượt là 1, 2, 3 và kích thước được xác định tự động.
B. Mảng arr có 3 phần tử nhưng giá trị của chúng là ngẫu nhiên.
C. Mảng arr chỉ có 1 phần tử với giá trị là chuỗi {1, 2, 3}.
D. Khai báo này là không hợp lệ trong C++.
5. Khi khai báo mảng trong các ngôn ngữ như Python, cú pháp `my_list = list(range(10))` sẽ tạo ra một danh sách (tương tự mảng) với các phần tử nào?
A. [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
B. [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
C. [0, 1, 2, 3, 4, 5, 6, 7, 8]
D. [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
6. Trong thuật toán sắp xếp nổi bọt (Bubble Sort) cho mảng một chiều, bước cơ bản nhất là gì?
A. So sánh một phần tử với phần tử lớn nhất trong mảng.
B. So sánh một phần tử với phần tử tiếp theo và đổi chỗ nếu chúng không theo thứ tự mong muốn.
C. Chia mảng thành hai nửa và sắp xếp đệ quy từng nửa.
D. Chèn phần tử hiện tại vào vị trí đúng trong phần mảng đã sắp xếp.
7. Khi duyệt qua tất cả các phần tử của một mảng một chiều trong lập trình, cấu trúc vòng lặp nào thường được sử dụng phổ biến nhất?
A. Vòng lặp while
B. Vòng lặp for
C. Vòng lặp do-while
D. Cả ba loại vòng lặp trên đều có thể sử dụng
8. Phát biểu nào sau đây là sai về mảng hai chiều?
A. Tất cả các hàng trong một mảng hai chiều phải có cùng số cột.
B. Mảng hai chiều có thể được coi là một mảng của các mảng một chiều.
C. Số phần tử của mảng hai chiều có kích thước R x C là R + C.
D. Để truy cập một phần tử, cần cung cấp hai chỉ số (hàng và cột).
9. Trong lập trình, truy cập phần tử mảng nghĩa là gì?
A. Sắp xếp lại thứ tự các phần tử trong mảng.
B. Tìm kiếm một giá trị cụ thể trong mảng.
C. Lấy hoặc thay đổi giá trị của một phần tử cụ thể dựa vào chỉ số của nó.
D. Đếm số lượng phần tử trong mảng.
10. Phát biểu nào sau đây mô tả đúng vai trò của chỉ số trong mảng?
A. Chỉ số xác định kiểu dữ liệu của phần tử.
B. Chỉ số xác định vị trí của phần tử trong cấu trúc mảng.
C. Chỉ số xác định tổng số phần tử của mảng.
D. Chỉ số xác định tên biến của mảng.
11. Cho mảng hai chiều B như sau:
5 8 3
12 4 9
Để truy cập vào phần tử có giá trị 4, ta sử dụng chỉ số nào (giả sử chỉ số hàng và cột bắt đầu từ 1)?
A. B[1, 2]
B. B[2, 2]
C. B[2, 1]
D. B[1, 1]
12. Để tìm phần tử lớn nhất trong một mảng một chiều, thuật toán phổ biến là gì?
A. Sử dụng vòng lặp để so sánh từng phần tử với phần tử đầu tiên.
B. Khởi tạo biến lưu giá trị lớn nhất bằng phần tử đầu tiên, sau đó duyệt mảng, nếu gặp phần tử lớn hơn thì cập nhật biến này.
C. Sắp xếp mảng theo thứ tự tăng dần và lấy phần tử cuối cùng.
D. Cả ba phương án trên đều có thể được sử dụng để tìm phần tử lớn nhất.
13. Khi tìm kiếm một phần tử trong mảng một chiều chưa được sắp xếp, thuật toán nào sau đây có độ phức tạp thời gian trung bình là O(n)?
A. Tìm kiếm nhị phân.
B. Tìm kiếm tuần tự (Linear Search).
C. Tìm kiếm nội suy (Interpolation Search).
D. Tìm kiếm theo nhảy (Jump Search).
14. Phát biểu nào sau đây là đúng về biến mảng trong lập trình?
A. Là một biến đơn có thể lưu trữ nhiều giá trị cùng lúc.
B. Là một kiểu dữ liệu đặc biệt cho phép lưu trữ một tập hợp các phần tử cùng kiểu dữ liệu dưới một tên duy nhất.
C. Là một biến tạm thời chỉ dùng để tính toán trung gian.
D. Là một biến chỉ lưu trữ các số nguyên.
15. Khi tính tổng các phần tử của mảng hai chiều, vòng lặp ngoài cùng thường duyệt theo chiều nào?
A. Chỉ duyệt theo cột.
B. Chỉ duyệt theo hàng.
C. Duyệt theo hàng, và vòng lặp bên trong duyệt theo cột.
D. Duyệt theo cột, và vòng lặp bên trong duyệt theo hàng.
16. Hoạt động nào sau đây là ví dụ điển hình của việc vận dụng kiến thức về mảng một chiều để giải quyết vấn đề thực tế?
A. Nêu định nghĩa mảng một chiều là gì.
B. Viết chương trình nhập vào 10 điểm số của sinh viên và tính điểm trung bình.
C. Giải thích cách khai báo mảng trong Pascal.
D. Liệt kê các loại vòng lặp có thể dùng để duyệt mảng.
17. Trong việc duyệt mảng hai chiều, nếu ta muốn xử lý từng cột trước rồi mới chuyển sang cột tiếp theo, thứ tự lồng ghép vòng lặp sẽ là:
A. Vòng lặp ngoài cho cột, vòng lặp trong cho hàng.
B. Vòng lặp ngoài cho hàng, vòng lặp trong cho cột.
C. Chỉ cần một vòng lặp duy nhất.
D. Thứ tự lồng ghép không ảnh hưởng đến kết quả.
18. Hoạt động nào sau đây KHÔNG PHẢI là hoạt động cơ bản trên mảng một chiều?
A. Truy cập một phần tử cụ thể thông qua chỉ số.
B. Thêm một phần tử mới vào giữa mảng mà không ảnh hưởng đến các phần tử khác.
C. Tính tổng hoặc giá trị trung bình của tất cả các phần tử.
D. Sắp xếp lại thứ tự các phần tử trong mảng.
19. Cho mảng số nguyên A = [10, 4, 8, 15, 3]. Sau khi thực hiện phép gán A[2] := 7, nội dung mảng A sẽ là gì?
A. [10, 4, 8, 15, 3]
B. [10, 7, 8, 15, 3]
C. [10, 8, 7, 15, 3]
D. [10, 4, 7, 15, 3]
20. Phát biểu nào sau đây mô tả đúng nhất về mảng hai chiều?
A. Một tập hợp các phần tử cùng kiểu dữ liệu, được sắp xếp theo một hàng duy nhất.
B. Một tập hợp các phần tử cùng kiểu dữ liệu, được tổ chức thành các hàng và các cột.
C. Một tập hợp các biến riêng lẻ, mỗi biến có thể có kiểu dữ liệu khác nhau.
D. Một cấu trúc dữ liệu chỉ dùng để lưu trữ các ký tự văn bản.
21. Khi thực hiện phép gán giá trị cho một phần tử của mảng, điều kiện tiên quyết là gì?
A. Chỉ số của phần tử phải là số nguyên dương.
B. Giá trị gán phải cùng kiểu dữ liệu với mảng.
C. Chỉ số của phần tử phải nằm trong phạm vi cho phép của mảng.
D. Cả hai điều kiện Giá trị gán phải cùng kiểu dữ liệu với mảng và Chỉ số của phần tử phải nằm trong phạm vi cho phép của mảng đều cần thiết.
22. Cho mảng A = [5, 12, 8, 3, 15]. Để truy cập vào phần tử có giá trị 8, ta sử dụng chỉ số nào (giả sử chỉ số bắt đầu từ 1)?
A. A[2]
B. A[3]
C. A[4]
D. A[5]
23. Trong Pascal, khai báo một mảng hai chiều có tên ma_tran với 5 hàng và 10 cột, các phần tử là số nguyên, sẽ như thế nào?
A. Var ma_tran: array[1..5, 1..10] of Integer;
B. Var ma_tran: array[1..10, 1..5] of Integer;
C. Var ma_tran: Integer[5, 10];
D. Var ma_tran: array of array[1..5] of Integer;
24. Khi làm việc với mảng hai chiều, để duyệt qua tất cả các phần tử, chúng ta thường sử dụng kiểu vòng lặp nào?
A. Một vòng lặp đơn.
B. Hai vòng lặp lồng nhau.
C. Ba vòng lặp lồng nhau.
D. Vòng lặp while duy nhất.
25. Giả sử bạn có một mảng hai chiều biểu diễn một ma trận. Nếu bạn muốn tính tổng các phần tử trên đường chéo chính, bạn sẽ truy cập các phần tử như thế nào (với chỉ số bắt đầu từ 0)?
A. Ma_tran[i, i+1]
B. Ma_tran[i, i]
C. Ma_tran[i+1, i]
D. Ma_tran[i, i-1]