Trắc nghiệm Cánh diều Tin học 11 KHMT bài 2 Mảng hai chiều

Trắc nghiệm Cánh diều Tin học 11 KHMT bài 2 Mảng hai chiều

1. Trong Pascal, khai báo `Type Matrix = array[1..5, 1..5] of Integer;` tạo ra một mảng có bao nhiêu hàng và bao nhiêu cột?
2. Để truy cập vào phần tử ở hàng thứ 2 và cột thứ 3 của mảng hai chiều `float matrix[5][6];` trong ngôn ngữ C++, ta sử dụng chỉ số nào sau đây?
3. Phát biểu nào sau đây là đúng về việc sử dụng mảng hai chiều để biểu diễn một hình chữ nhật?
4. Cho mảng hai chiều `char board[5][5];`. Nếu ta muốn kiểm tra xem có ký tự X nào xuất hiện ở bất kỳ vị trí nào trong mảng hay không, ta cần lặp qua tất cả các phần tử và thực hiện phép so sánh nào?
5. Phát biểu nào sau đây là đúng về mảng hai chiều trong lập trình?
6. Cho mảng hai chiều `int arr[3][3];`. Nếu ta muốn tìm phần tử lớn nhất trên đường chéo chính, ta cần duyệt qua các phần tử nào?
7. Nếu một mảng hai chiều biểu diễn một lưới ô vuông, và ta muốn tô màu cho tất cả các ô nằm trên biên của lưới, ta sẽ thực hiện duyệt các phần tử nào?
8. Phát biểu nào sau đây mô tả đúng nhất khái niệm phần tử biên (boundary element) của một mảng hai chiều `M[R][C]`?
9. Phát biểu nào sau đây là đúng về cách lưu trữ mảng hai chiều trong bộ nhớ máy tính?
10. Trong ngôn ngữ C++, khi khai báo `int a[3][2] = {{1, 2}, {3, 4}, {5, 6}};`, giá trị của `a[1][0]` là gì?
11. Cho khai báo mảng hai chiều trong C++: `int arr[3][4];`. Số lượng phần tử tối đa mà mảng này có thể chứa là bao nhiêu?
12. Cho mảng hai chiều `char grid[4][5];`. Nếu ta muốn lưu trữ các ký tự theo từng cột, ví dụ `grid[0][0] = A`, `grid[1][0] = B`, `grid[2][0] = C`, `grid[3][0] = D`, thì cách duyệt nào hiệu quả nhất để khởi tạo cột đầu tiên?
13. Cho đoạn mã Pascal sau: ```pascal Var A: array[1..3, 1..4] of Integer; ... For i := 1 to 3 do For j := 1 to 4 do A[i, j] := i * j; ``` Giá trị của phần tử `A[2, 3]` sau khi thực hiện đoạn mã là bao nhiêu?
14. Cho đoạn mã C++ sau: ```cpp int data[2][3]; for (int i = 0; i < 2; ++i) { for (int j = 0; j < 3; ++j) { data[i][j] = i + j; } } ``` Giá trị của `data[1][2]` là bao nhiêu?
15. Trong ngôn ngữ lập trình Pascal, khi khai báo mảng hai chiều, cú pháp khai báo nào sau đây là đúng?
16. Để tìm phần tử nhỏ nhất trong mỗi cột của mảng hai chiều `float matrix[4][5];`, ta nên sử dụng cấu trúc vòng lặp nào?
17. Trong Pascal, hàm `High()` và `Low()` có thể được sử dụng để xác định giới hạn trên và dưới của chỉ số mảng. Nếu khai báo mảng là `Type Arr = array[5..10] of Real;`, thì `High(Arr)` sẽ trả về giá trị nào?
18. Cho mảng hai chiều `int matrix[3][4];`. Nếu ta muốn tính tổng các phần tử trên đường chéo phụ (từ trên phải xuống dưới trái), ta cần duyệt qua các phần tử nào?
19. Trong C++, nếu bạn muốn tính tổng tất cả các phần tử của mảng hai chiều `int matrix[2][3] = {{1, 2, 3}, {4, 5, 6}};`, đoạn mã nào sau đây thực hiện đúng chức năng đó?
20. Đâu là ưu điểm chính của việc sử dụng mảng hai chiều so với việc sử dụng nhiều mảng một chiều riêng lẻ để biểu diễn dữ liệu dạng bảng?
21. Phát biểu nào sau đây về mảng hai chiều là KHÔNG đúng?
22. Nếu ta có một mảng hai chiều `int scores[3][4];` và muốn gán giá trị 0 cho tất cả các phần tử, cách tiếp cận nào sau đây là phổ biến và hiệu quả nhất?
23. Khi duyệt qua tất cả các phần tử của một mảng hai chiều `int data[R][C];` (với R là số hàng, C là số cột) bằng hai vòng lặp `for` lồng nhau, vòng lặp ngoài thường dùng để duyệt theo chiều nào?
24. Khi thực hiện phép chuyển vị (transpose) cho một ma trận vuông `A` kích thước `n x n`, phần tử `A[i][j]` sẽ được chuyển thành phần tử nào trong ma trận chuyển vị `B`?
25. Cho mảng hai chiều `int matrix[3][3];`. Nếu ta muốn tính tổng các phần tử nằm trên đường chéo chính và đường chéo phụ, cần lưu ý điều gì đặc biệt?