Bài giảng ngôn ngữ lập trình c chương 10 mảng hai chiều

10 214 0
Bài giảng ngôn ngữ lập trình c   chương 10  mảng hai chiều

Đang tải... (xem toàn văn)

Thông tin tài liệu

CHƯƠNG 6: MẢNG HAI CHIỀU • Khái niệm Mảng hai chiều hiểu dãy phần tử xếp liên tiếp nhớ, từ hàng sang hàng • • • Khai báo mảng hai chiều Cú pháp: [][] Các phần tử mảng truy nhập hai số: số dòng (bắt đầu từ đến số dòng – 1) số cột (bắt đầu từ đến số cột – 1) • • • • • • • Ví dụ 1: int a[5][6] Khai báo mảng hai chiều gồm 30 phần tử, phần tử có kiểu int Các phần tử mảng a phân bố nhớ sau: a[0][0] a[0][1] … a[0][5] a[1][0] a[1][1] … a[1][5] … a[4][0] a[4][1] … a[4][5] • • • • • • • • • • • • Khởi tạo giá trị ban đầu cho mảng hai chiều Chúng ta khởi tạo mảng hai chiều tương tự với việc khởi tạo mảng chiều, cách liệt kê giá trị danh sách Ví dụ 2: int a[2][3] = { {11, 12, 13}, {21, 22, 23} }; Ví dụ 3: float b[][4] = { {6, 8, 8, 9}, {3, 12.6, 4, 14}, {6.5, 20,7, 8} }; • • • • • • • • • • • • • • • • • • Nhập xuất mảng hai chiều Ví dụ 4: #define SIZE1 #define SIZE2 void main() { int a[SIZE1][SIZE2]; /* khai báo mảng chiều nguyên gồm SIZE1*SIZE2 phần tử */ int m, n; //lưu số dòng số cột int i, j, tam; { } while(m < || m > SIZE1 || n < || n > SIZE2); // nhập liệu cho mảng từ bàn phím for(i = 0; i < m; i++) for(j = 0; j < n; j++) { printf(“pt thu [%d][%d]:”, i, j); scanf(“%d”, &tam); a[i][j] = tam; } • • • • • • • • } // xuất liệu mảng hình for(i = 0; i < m; i++) { for(j = 0; j < n; j++) printf(“%d\t”, a[i][j]); printf(“\n”); } printf(“\n”); Chú ý: Trong C phần tử mảng hai chiều ta sử dụng toán tử lấy địa (&) Tuy nhiên với mảng hai chiều nguyên dùng • • • • • • Sử dụng mảng làm tham số truyền cho hàm Ví dụ 5: #define SIZE1 #define SIZE2 // khai báo nguyên mẫu hàm void Nhap(int (*a)[SIZE2], int *m, int *n); void Xuất(int (*a)[SIZE2], int m, int n); • • • • • • • • • • • • • • • • • // định nghĩa hàm void Nhap(int (*a)[SIZE2], int *m, int *n) { int tam; { printf(“Nhập so dong so cot:”); scanf(“%d%d”, &(*m), &(*n)); } while(*m < || *m > SIZE1 | |*n < || *n > SIZE2); for(i = 0; i < *m; i++) for(j = 0; j < *n; j++) { printf(“pt thu [%d][%d]:”, i, j); scanf(“%d”, &tam); a[i][j] = tam; } } • • • • • • • • • • • • • • • • void Xuat(int (*a)[SIZE2], int m, int n) { for(i = 0; i < m; i++) { for(j = 0; j < n; j++) printf(“%d\t”, a[i][j]); printf(“\n”); } } void main() { float a[SIZE1][SIZE2]; int m, n; Nhap(a, &m, &n); Xuat(a, m, n); } • • • • Chú ý: Đối số thứ hai hàm khai báo mảng hình thức sau: void Nhap(float a[][SIZE2], int *m, int *n); void Xuat(float a[][SIZE2], int m, int n);        Mảng vuông Khi số dòng số cột mảng hai chiều nhau, gọi mảng mảng vuông (hay ma trận vuông) Số dòng số cột ma trận vuông gọi chung kích thước ma trận vuông, ký hiệu n Các phần tử nằm đường chéo phần tử a[i][i] với ≤ i ≤ n1 Các phần tử nằm đường chéo phụ phần tử a[n-1-i][i] với ≤ i ≤ n-1 Các phần tử nằm nửa mảng vuông phía đường chéo thỏa điều kiện i ≤ j Các phần tử nằm nửa mảng vuông phía đường chéo thỏa điều kiện i ≥ j Các phần tử nằm nửa mảng vuông phía đường chéo phụ thỏa điều kiện i +j ≤ n-1 Các phần tử nằm nửa mảng vuông phía đường chéo phụ thỏa điều kiện i +j ≥ n-1 ... • • • • • • Khởi tạo giá trị ban đầu cho mảng hai chiều Chúng ta khởi tạo mảng hai chiều tương tự với vi c khởi tạo mảng chiều, c ch liệt kê giá trị danh sách Ví dụ 2: int a[2][3] = { {11, 12,... mảng hai chiều nhau, gọi mảng mảng vuông (hay ma trận vuông) Số dòng số c t ma trận vuông gọi chung kích thư c ma trận vuông, ký hiệu n C c phần tử nằm đường chéo phần tử a[i][i] với ≤ i ≤ n1 C c. .. đường chéo phụ phần tử a[n-1-i][i] với ≤ i ≤ n-1 C c phần tử nằm nửa mảng vuông phía đường chéo thỏa điều kiện i ≤ j C c phần tử nằm nửa mảng vuông phía đường chéo thỏa điều kiện i ≥ j C c phần

Ngày đăng: 04/12/2015, 20:51

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan