Bài giảng Ngôn ngữ lập trình C - Chương 10: Mảng hai chiều
Số trang: 10
Loại file: pdf
Dung lượng: 90.33 KB
Lượt xem: 2
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Kết cấu chương 10 Mảng hai chiều thuộc bài giảng Ngôn ngữ lập trình C trình bày về những nội dung lần lượt như sau: khái niệm mảng hai chiều, khai báo mảng hai chiều, khởi tạo giá trị ban đầu cho mảng hai chiều, nập xuất mảng hai chiều, sử dụng mảng làm tham số truyền cho hàm.
Nội dung trích xuất từ tài liệu:
Bài giảng Ngôn ngữ lập trình C - Chương 10: Mảng hai chiềuCHƯƠNG 6: MẢNG HAI CHIỀU Khái niệm• Mảng hai chiều có thể hiểu là một dãy các phần tử được sắp xếp liên tiếp trong bộ nhớ, từ hàng này sang hàng kia Khai báo mảng hai chiều• Cú pháp:• [][]• Các phần tử mảng được truy nhập bởi hai chỉ số: chỉ số dòng (bắt đầu từ 0 đến số dòng – 1) và chỉ số cột (bắt đầu từ 0 đến số cột – 1)• Ví dụ 1: int a[5][6]• Khai báo một mảng hai chiều gồm 30 phần tử, mỗi phần tử có kiểu int• Các phần tử của mảng a được phân bố trong bộ nhớ 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 có thể khởi tạo mảng hai chiều tương tự với việc khởi tạo mảng một chiều, bằng cách liệt kê các giá trị trong một danh sách.• Ví dụ 2:• int a[2][3] = {• {11, 12, 13},• {21, 22, 23}• };• Ví dụ 3:• float b[][4] = {• {6, 7. 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 6• #define SIZE2 8• void main()• { int a[SIZE1][SIZE2]; /* khai báo một mảng 2 chiều nguyên gồm SIZE1*SIZE2 phần tử */• int m, n; //lưu số dòng và số cột• int i, j, tam;• do• { • } while(m < 1 || m > SIZE1 || n < 1 || n > SIZE2);• // nhập dữ 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 dữ liệu của mảng ra màn 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 đối với các phần tử của mảng hai chiều ta không thể sửdụng toán tử lấy địa chỉ (&). Tuy nhiên với mảng hai chiều nguyên thì dùngđược. Sử dụng mảng làm tham số truyền cho hàm• Ví dụ 5:• #define SIZE1 5• #define SIZE2 6• // 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;• do• {• printf(“Nhập so dong và so cot:”);• scanf(“%d%d”, &(*m), &(*n));• } while(*m < 1 || *m > SIZE1 | |*n < 1 || *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ứ nhất của hai hàm trên có thể khai báo như một mảng hình thức như 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 và số cột của một mảng hai chiều bằng nhau, chúng ta gọi mảng đó là mảng vuông (hay ma trận vuông). Số dòng và số cột của ma trận vuông gọi chung là kích thước ma trận vuông, ký hiệu là n. Các phần tử nằm trên đường chéo chính là các phần tử a[i][i] với 0 ≤ i ≤ n- 1. Các phần tử nằm trên đường chéo phụ là các phần tử a[n-1-i][i] với 0 ≤ i ≤ n-1. Các phần tử nằm trong nửa mảng vuông phía trên đường chéo chính thỏa điều kiện i ≤ j. Các phần tử nằm trong nửa mảng vuông phía trên đường chéo chính thỏa điều kiện i ≥ j. Các phần tử nằm trong nửa mảng vuông phía trên đường chéo phụ thỏa điều kiện i +j ≤ n-1. Các phần tử nằm trong nửa mảng vuông phía dưới đường chéo phụ thỏa điều kiện i +j ≥ n-1.
Nội dung trích xuất từ tài liệu:
Bài giảng Ngôn ngữ lập trình C - Chương 10: Mảng hai chiềuCHƯƠNG 6: MẢNG HAI CHIỀU Khái niệm• Mảng hai chiều có thể hiểu là một dãy các phần tử được sắp xếp liên tiếp trong bộ nhớ, từ hàng này sang hàng kia Khai báo mảng hai chiều• Cú pháp:• [][]• Các phần tử mảng được truy nhập bởi hai chỉ số: chỉ số dòng (bắt đầu từ 0 đến số dòng – 1) và chỉ số cột (bắt đầu từ 0 đến số cột – 1)• Ví dụ 1: int a[5][6]• Khai báo một mảng hai chiều gồm 30 phần tử, mỗi phần tử có kiểu int• Các phần tử của mảng a được phân bố trong bộ nhớ 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 có thể khởi tạo mảng hai chiều tương tự với việc khởi tạo mảng một chiều, bằng cách liệt kê các giá trị trong một danh sách.• Ví dụ 2:• int a[2][3] = {• {11, 12, 13},• {21, 22, 23}• };• Ví dụ 3:• float b[][4] = {• {6, 7. 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 6• #define SIZE2 8• void main()• { int a[SIZE1][SIZE2]; /* khai báo một mảng 2 chiều nguyên gồm SIZE1*SIZE2 phần tử */• int m, n; //lưu số dòng và số cột• int i, j, tam;• do• { • } while(m < 1 || m > SIZE1 || n < 1 || n > SIZE2);• // nhập dữ 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 dữ liệu của mảng ra màn 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 đối với các phần tử của mảng hai chiều ta không thể sửdụng toán tử lấy địa chỉ (&). Tuy nhiên với mảng hai chiều nguyên thì dùngđược. Sử dụng mảng làm tham số truyền cho hàm• Ví dụ 5:• #define SIZE1 5• #define SIZE2 6• // 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;• do• {• printf(“Nhập so dong và so cot:”);• scanf(“%d%d”, &(*m), &(*n));• } while(*m < 1 || *m > SIZE1 | |*n < 1 || *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ứ nhất của hai hàm trên có thể khai báo như một mảng hình thức như 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 và số cột của một mảng hai chiều bằng nhau, chúng ta gọi mảng đó là mảng vuông (hay ma trận vuông). Số dòng và số cột của ma trận vuông gọi chung là kích thước ma trận vuông, ký hiệu là n. Các phần tử nằm trên đường chéo chính là các phần tử a[i][i] với 0 ≤ i ≤ n- 1. Các phần tử nằm trên đường chéo phụ là các phần tử a[n-1-i][i] với 0 ≤ i ≤ n-1. Các phần tử nằm trong nửa mảng vuông phía trên đường chéo chính thỏa điều kiện i ≤ j. Các phần tử nằm trong nửa mảng vuông phía trên đường chéo chính thỏa điều kiện i ≥ j. Các phần tử nằm trong nửa mảng vuông phía trên đường chéo phụ thỏa điều kiện i +j ≤ n-1. Các phần tử nằm trong nửa mảng vuông phía dưới đường chéo phụ thỏa điều kiện i +j ≥ n-1.
Tìm kiếm theo từ khóa liên quan:
Mảng một chiều Khai báo mảng Thuật toán tìm kiếm Thuật toán sắp xếp Ngôn ngữ lập trình Học lập trình C Ngôn ngữ lập trình C Kỹ thuật lập trình CTài liệu liên quan:
-
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 281 0 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 276 0 0 -
Bài thuyết trình Ngôn ngữ lập trình: Hệ điều hành Window Mobile
30 trang 273 0 0 -
Giáo trình Toán rời rạc: Phần 1 - Nguyễn Gia Định
67 trang 236 0 0 -
Giáo trình Lập trình cơ bản với C++: Phần 1
77 trang 235 0 0 -
Bài giảng Một số hướng nghiên cứu và ứng dụng - Lê Thanh Hương
13 trang 229 0 0 -
Giáo án Tin học lớp 11 (Trọn bộ cả năm)
125 trang 219 1 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 217 0 0 -
101 trang 205 1 0
-
Bài tập lập trình Windows dùng C# - Bài thực hành
13 trang 192 0 0