Mảng 2 Chiều 2d Array Trong C - Lập Trình Từ Đầu
Có thể bạn quan tâm
Mảng 2 chiều là việc khai báo một danh sách gồm các mảng một chiều, có nghĩa là mảng 2 chiều là tập hợp gồm các mảng 1 chiều.
Ví dụ ta có mảng 1 chiều:
int a[10];
các phần tử của mảng một chiều trên là:
a[0] | a[1] | a[2] | a[3] | a[4] | a[5] | a[6] | a[7] | a[8] | a[9] |
Khai báo mảng 2 chiều
type Name[row][col]
Trong đó:
- type là kiểu dữ liệu của mảng
- name là tên mảng
- row là số lượng hàng của mảng
- col là số lượng cột của mảng
Ví dụ: int a[5][7]
COL 0 | COL 1 | COL 2 | COL 3 | COL 4 | COL 5 | COL 6 | |
ROW 0 | a[0][0] | a[0][1] | a[0][2] | a[0][3] | a[0][4] | a[0][5] | a[0][6] |
ROW 1 | a[1][0] | a[1][1] | a[1][2] | a[1][3] | a[1][4] | a[1][5] | a[1][6] |
ROW 2 | a[2][0] | a[2][1] | a[2][2] | a[2][3] | a[2][4] | a[2][5] | a[2][6] |
ROW 3 | a[3][0] | a[3][1] | a[3][2] | a[3][3] | a[3][4] | a[3][5] | a[3][6] |
ROW 4 | a[4][0] | a[4][1] | a[4][2] | a[4][3] | a[4][4] | a[4][5] | a[4][6] |
Ví dụ ta có phần tử a[0][3] nghĩa là đây là phần tử tại hàng thứ 0 cột thứ 3 trong mảng hay phần tử a[3][4] nghĩa là phần tử tại hàng thứ 3 cột thứ 4
Lưu ý: chỉ số bắt đầu của hàng là 0, chỉ số bắt đầu của cột cũng là 0
Ví dụ khai báo mảng a[5][7] với kiểu dữ liệu int trong C
#include <stdio.h> int main(){ int a[5][7]; return 0; }Khai báo và gán giá trị mặc định cho mảng a[5][7]
#include <stdio.h> int main(){ int a[5][7] = { {5,3,6,5,9,3,7}, {1,3,6,8,0,9,3}, {7,3,9,2,8,2,3}, {7,6,3,2,3,9,2}, {8,6,3,9,3,2,5} }; printf("Gia tri cua mang tai hang 0 cot 3 la: %d",a[0][1]); printf("\nGia tri cua mang tai hang 5 cot 6 la: %d",a[4][6]); return 0; }Gia tri cua mang tai hang 0 cot 3 la: 3 Gia tri cua mang tai hang 5 cot 6 la: 5 |
Ta nhìn có thể thấy mảng 2 chiều là các mảng một chiều được viết lại thành một danh sách với dấu “ ,” (dấu phẩy)
Ta cũng có thể truy cập và thay thế giá trị ở hàng thứ m, cột thứ n trong mảng 2 chiều bằng cách a[m][n] = giatri;
Ví dụ dưới đây tôi thay thế a[0][1] = 10
#include <stdio.h> int main(){ int a[5][7] = { {5,3,6,5,9,3,7}, {1,3,6,8,0,9,3}, {7,3,9,2,8,2,3}, {7,6,3,2,3,9,2}, {8,6,3,9,3,2,5} }; printf("Gia tri cua mang tai hang 0 cot 3 la: %d",a[0][1]); a[0][1] = 10; printf("\nGia tri a[0][1]cua mang sau khi thay the la: %d",a[0][1]); return 0; }Gia tri cua mang tai hang 0 cot 3 la: 3 Gia tri a[0][1]cua mang sau khi thay the la: 10 |
Khác với duyệt mảng 1 chiều, khi thực hiện duyệt mảng hai chiều ta cần sử dụng hai vòng lặp
- 1 vòng lặp duyệt theo hàng
- 1 vòng lặp duyệt theo cột
Ví dụ dưới đây tôi duyệt mảng trên với 2 vòng lặp for để in ra màn hình tất cả phần tử có trong mảng
#include <stdio.h> int main(){ int a[5][7] = { {5,3,6,5,9,3,7}, {1,3,6,8,0,9,3}, {7,3,9,2,8,2,3}, {7,6,3,2,3,9,2}, {8,6,3,9,3,2,5} }; for(int i = 0; i<5; i++){ for(int j = 0; j < 7; j++){ printf("%d \t", a[i][j]); } printf("\n"); } return 0; }5 3 6 5 9 3 7 1 3 6 8 0 9 3 7 3 9 2 8 2 3 7 6 3 2 3 9 2 8 6 3 9 3 2 5 |
Giải thích: Vòng for đầu tiên tôi dùng để duyệt phần tử ở các hàng thứ i với điều kiện bắt đầu từ 0 duyệt khi biến i bé hơn 5 và mỗi lần duyệt xong biến i tăng lên 1 đơn vị, vòng for thứ hai tôi dùng để duyệt phần tử ở các cột thứ j với bắt đầu bằng 0 duyệt khi biến j bé hơn 7 và mỗi lần duyệt xong biến j tăng lên một đơn vị sau đó thực hiện in ra giá trị của phần tử trong mảng a[i][j]
Tiếp theo, ví dụ tôi muốn duyệt mảng trên trong khoảng hàng từ 0->2, cột từ 1->3, tôi chỉ việc thay thế biến bắt đầu i,j và biến kết thúc i,j cho phù hợp
#include <stdio.h> int main(){ int a[5][7] = { {5,3,6,5,9,3,7}, {1,3,6,8,0,9,3}, {7,3,9,2,8,2,3}, {7,6,3,2,3,9,2}, {8,6,3,9,3,2,5} }; for(int i = 0; i<3; i++){ for(int j = 1; j < 4; j++){ printf("%d ", a[i][j]); } printf("\n"); } return 0; }3 6 5 3 6 8 3 9 2 |
Lưu ý: Trong một số trường hợp mảng một chiều còn được gọi là vector, còn mảng 2 chiều được gọi là các Matrix (ma trận) có m hàng n cột
Từ khóa » Duyệt Mảng 2 Chiều
-
Duyệt Mảng 2 Chiều Trong JavaScript
-
Hỏi Về Cách Dùng 1 Vòng Lặp Duyệt Mảng 2 Chiều - Dạy Nhau Học
-
5.3 Mảng Hai Chiều - Khóa Học C++
-
Bài 54. Mảng 2 Chiều Trong C - Lập Trình Không Khó
-
Hỏi Về Cách Dùng 1 Vòng Lặp Duyệt Mảng 2 Chiều
-
Các Kỹ Thuật Lập Trình Với Mảng 2 Chiều Và Minh Họa Với C++
-
Các Thuật Toán Cơ Bản Về Mảng Hai Chiều - IViettech
-
Mảng Hai Chiều - Mảng Đa Chiều Trong C++ - CodeLearn
-
Mảng 2 Chiều Trong JavaScript | Học Lập Trình JavaScript
-
Mảng 2 Chiều Trong C# | How Kteam
-
Đệ Quy Quay Lùi Mảng Hai Chiều - Tài Liệu Text - 123doc
-
[PDF] MẢNG 2 CHIỀU (2D Array)
-
[Lập Trình C++ Cơ Bản] Bài 7 (Phần 2): Mảng Hai Chiều Trong ... - Viblo
-
Mảng 2 Chiều Trong Java Lý Thuyết Và Bài Tập Vận Dụng - IT For Student