Bài giảng Ngôn ngữ lập trình C: Mảng hai chiều cung cấp cho người học các kiến thức: Mảng hai chiều, vòng lặp lồng nhau. Đây là một tài liệu hữu ích dành cho các bạn sinh viên và những ai quan tâm dùng làm tài liệu học tập và nghiên cứu.
TRƯỜNG ĐẠI HỌC CƠNG NGHIỆP THÀNH PHỐ HỒ CHÍ MINH Ngơn ngữ lập trình C Mảng hai chiều Nội dung Mảng hai chiều Vòng lặp lồng Ngơn ngữ lập trình C - Mảng hai chiều Ma Trận … n-1 0 m-1 An … … Am,n … n-1 n-1 Ngôn ngữ lập trình C - Mảng hai chiều Ma Trận … n-1 0 … n-1 … … n-1 n-1 dòng = cột dòng > cột dòng < cột 0 … n-1 … n-1 … n-1 … … … n-1 n-1 n-1 dòng + cột = n-1 n-1 An … n-1 … An dòng + cột > n-1 dòng + cột < n-1 Ngơn ngữ lập trình C - Mảng hai chiều Khai báo kiểu mảng chiều Cú pháp typedef [][]; N1, N2: số lượng phần tử chiều Ví dụ typedef int MaTran[3][4]; Kiểu MaTran Ngơn ngữ lập trình C - Mảng hai chiều Khai báo biến mảng chiều Cú pháp Tường minh [][]; Không tường minh (thông qua kiểu) typedef [][]; ; , ; Ngơn ngữ lập trình C - Mảng hai chiều Khai báo biến mảng chiều Ví dụ Tường minh int a[10][20], b[10][20]; int c[5][10]; int d[10][20]; Không tường minh (thông qua kiểu) typedef int MaTran10x20[10][20]; typedef int MaTran5x10[5][10]; MaTran10x20 a, b; MaTran11x11 c; MaTran10x20 d; Ngơn ngữ lập trình C - Mảng hai chiều Truy xuất đến phần tử Thông qua số [][] Ví dụ int a[3][4]; Các truy xuất Cho mảng chiều sau Hợp lệ: a[0][0], a[0][1], …, a[2][2], a[2][3] Không hợp lệ: a[-1][0], a[2][4], a[3][3] Ngơn ngữ lập trình C - Mảng hai chiều Gán liệu kiểu mảng Không sử dụng phép gán thông thường mà phải gán trực tiếp phần tử = ; //sai [][giá trị cs2] = ; Ví dụ int a[5][10], b[5][10]; b = a; // Sai int i, j; for (i = 0; i < 5; i++) for (j = 0; j < 10; j++) b[i][j] = a[i][j]; Ngơn ngữ lập trình C - Mảng hai chiều Truyền mảng cho hàm Truyền mảng cho hàm Tham số kiểu mảng khai báo hàm giống khai báo biến mảng void NhapMaTran(int a[50][100]); Tham số kiểu mảng truyền cho hàm địa phần tử mảng Có thể bỏ số lượng phần tử chiều thứ trỏ Mảng thay đổi nội dung sau thực hàm void NhapMaTran(int a[][100]); void NhapMaTran(int (*a)[100]); 10 Ngơn ngữ lập trình C - Mảng hai chiều Tìm kiếm phần tử Ma Trận Yêu cầu Tìm xem phần tử x có nằm ma trận a kích thước mxn hay khơng? Ý tưởng 19 Duyệt phần ma trận a Nếu phần tử xét x trả có (1), ngược lại trả khơng có (0) Ngơn ngữ lập trình C - Mảng hai chiều Hàm Tìm Kiếm int TimKiem(int a[][MAXC], int m, int n, int x) { int i, j; for (i=0; i