2-D arrays: working with a grid · Mảng 2-D: thao tác với lưới ô vuông
A grid of boxes
- A 2-D array is a grid: rows and columns of the same type.
int g[2][3];makes 2 rows and 3 columns — 6 ints in all.- You reach one cell with two indexes:
g[row][col].
Lưới ô vuông
- Một mảng 2-D là một lưới: các hàng và cột cùng một loại dữ liệu.
int g[2][3];tạo ra 2 hàng và 3 cột — tổng cộng 6 số nguyên.- Bạn truy cập vào một ô với hai chỉ số:
g[row][col].
Rows then columns (row-major)
- C stores a grid row by row: all of row 0, then all of row 1.
- To visit every cell, use a
forloop for the rows, and aforloop inside it for the columns. g[r][c]is the cell in rowr, columnc. Both start at0.
Hàng trước rồi cột (hàng trước)
- C lưu trữ lưới theo từng hàng: toàn bộ hàng 0, sau đó toàn bộ hàng 1.
- Để truy cập mọi ô, hãy dùng vòng lặp
forcho các hàng, và vòng lặpforlồng bên trong cho các cột. g[r][c]là ô nằm ở hàngr, cộtc. Cả hai đều bắt đầu từ0.
Passing a 2-D array
- When you pass a grid to a function, you must give the column count:
int g[][3]. - C needs the number of columns to find each row in memory; the row count can stay blank.
- So a function takes
int g[][3], int rows— the columns are fixed at3, the rows are passed in.
Truyền mảng 2-D
- Khi truyền lưới vào một hàm, bạn phải cung cấp số lượng cột:
int g[][3]. - C cần biết số lượng cột để xác định vị trí từng hàng trong bộ nhớ; số lượng hàng có thể để trống.
- Vì vậy, hàm nhận
int g[][3], int rows— số cột được cố định ở3, số hàng được truyền vào.
#include <stdio.h>
int main(void) {
int g[2][3] = {{1, 2, 3}, {4, 5, 6}};
int total = 0;
for (int r = 0; r < 2; r++) {
for (int c = 0; c < 3; c++) {
total += g[r][c];
}
}
printf("%d\n", total); // 21
return 0;
}
Working one row at a time
- You can also work on a single row: loop only the columns for a fixed row
r. - This is how you sum one row, or find the biggest value in a row.
- Mixing the two — an outer row loop with an inner column loop — handles the whole grid.
Làm việc với từng hàng một
- Bạn cũng có thể làm việc với một hàng duy nhất: chỉ lặp các cột cho một hàng cố định
r. - Đây là cách bạn tính tổng một hàng, hoặc tìm giá trị lớn nhất trong một hàng.
- Kết hợp cả hai — vòng lặp hàng ngoài lồng vòng lặp cột trong — sẽ xử lý toàn bộ lưới.
Common mistakes
- Index a grid
grid[row][col]. - The outer loop walks the rows, the inner loop the columns.
Lỗi thường gặp
- Chỉ số cho grid
grid[row][col]. - Vòng lặp ngoài duyệt qua các hàng, vòng lặp trong duyệt qua các cột.
Now you try
- For the function tasks, the grid has 3 columns, so the parameter is
int g[][3]. - Do not write a
main— the checker provides one.
Bây giờ bạn thử
- Đối với các bài tập hàm, lưới có 3 cột, nên tham số là
int g[][3]. - Không viết một
main— trình kiểm tra sẽ cung cấp cho bạn một cái.
A 2-D array is a grid · Một mảng 2-D là một lưới ô vuông
Reach a cell with a[row][col] — row first, then column. · Truy cập ô với a[row][col] — hàng trước, sau đó là cột.
Complete int sum_grid(int g[][3], int rows) so it returns the total of every cell in a grid with rows rows and 3 columns. Do not write a main. · Hoàn thành int sum_grid(int g[][3], int rows) để trả về tổng của tất cả các ô trong lưới có rows hàng và 3 cột. Không viết một main.
Click Run to see the output here. · Nhấn Chạy để xem kết quả ở đây.
Complete int row_sum(int g[][3], int r) so it returns the total of the three cells in row r. Do not write a main. · Hoàn thành int row_sum(int g[][3], int r) để trả về tổng của ba ô ở hàng r. Không viết một main.
Click Run to see the output here. · Nhấn Chạy để xem kết quả ở đây.
The 2×3 grid g is given. In main, print each row with the three numbers separated by single spaces, one row per line. · Lưới 2×3 g được cung cấp. Trong main, in mỗi hàng với ba số cách nhau bởi khoảng trắng đơn, mỗi hàng trên một dòng.
Click Run to see the output here. · Nhấn Chạy để xem kết quả ở đây.