Bài giảng Hệ thống máy tính và ngôn ngữ lập trình - Chương 11: Mảng - Nguyễn Phúc Khải
Khái niệm
Khai báo mảng
Khởi động trị của mảng
Mảng là đối số của hàm, mảng là biến toàn cục
Các ứng dụng
Khai báo mảng
Khởi động trị của mảng
Mảng là đối số của hàm, mảng là biến toàn cục
Các ứng dụng
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Hệ thống máy tính và ngôn ngữ lập trình - Chương 11: Mảng - Nguyễn Phúc Khải", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.
File đính kèm:
- bai_giang_he_thong_may_tinh_va_ngon_ngu_lap_trinh_chuong_11.pdf
Nội dung text: Bài giảng Hệ thống máy tính và ngôn ngữ lập trình - Chương 11: Mảng - Nguyễn Phúc Khải
- Các nội dung: . Khái niệm . Khai báo mảng . Khởi động trị của mảng . Mảng là đối số của hàm, mảng là biến toàn cục . Các ứng dụng © TS. Nguyễn Phúc Khải 2
- KHÁI NIỆM . C cũng cho phép làm việc trên mảng một chiều (singledimensional array) và mảng nhiều chiều (multidimensional array). . Số phần tử trên một chiều được gọi là kích thước của chiều đó. © TS. Nguyễn Phúc Khải 4
- KHAI BÁO MẢNG . Ví dụ: Cho khai báo sau: int a[10], x; . Như vậy mảng a có 10 phần tử int, các phần tử đó là a[0], a[1], , a[9]. Các phần tử này được cấp phát vị trí trong bộ nhớ như hình 12.1 sau. © TS. Nguyễn Phúc Khải 6
- KHAI BÁO MẢNG printf ("Moi ban nhap so phan tu cua mang: "); scanf ("%d", &n); printf ("Moi nhap cac phan tu cua mang:"); for (i = 0; i < n; i++) scanf ("%d", &a[i]); max = a[0]; vtmax = 0; for (i = 1; i < n; i++) if (max < a[i]) { max = a[i]; vtmax = i; } printf ("Phan tu %d co tri lon nhat la %d\n", vtmax, max); getch() } © TS. Nguyễn Phúc Khải 8
- KHAI BÁO MẢNG . Ví dụ: Khai báo mảng hai chiều a int a[4][3]; . Như vậy mảng a có 4x3 phần tử int, các phần tử đó là: a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2] a[2][0] a[2][1] a[2][2] a[3][0] a[3][1] a[3][2] © TS. Nguyễn Phúc Khải 10
- KHAI BÁO MẢNG . Ví dụ 1: Viết chương trình tạo và in ra màn hình ma trận đơn vị cấp n © TS. Nguyễn Phúc Khải 12
- KHAI BÁO MẢNG for (i = 0; i < n; i++) for (j = 0; j < n; j++) a[i][j] = (i == j); printf ("Ma tran duoc tao la: \n"); for (i = 0; i < n; i++) { for (j = 0; j < n; j++) printf ("%d", a[i][j]); printf(“\n”);} getch () } } © TS. Nguyễn Phúc Khải 14
- KHAI BÁO MẢNG a[0][0] a[0][1] a[0][2] a[0][3] a[1][0] a[1][1] a[1][2] a[1][3] a[2][0] a[2][1] a[2][2] a[2][3] a[3][0] a[3][1] a[3][2] a[3][3] © TS. Nguyễn Phúc Khải 16
- KHAI BÁO MẢNG . C không có sự phân biệt giữa một biến chuỗi và một mảng các ký tự. Cả hai trường hợp đều được khai báo: char tên [chiều_dài]; . Hàm gets() cho phép nhập một chuỗi có tên để trong đối số hàm này. . Hàm puts() cho phép xuất một chuỗi có tên để trong đối số hàm này ra màn hình. . Cả hai gets() và puts() đều có prototype nằm trong file stdio.h. © TS. Nguyễn Phúc Khải 18
- KHỞI ĐỘNG TRỊ CỦA MẢNG . Khi khai báo mảng là biến toàn cục hoặc tĩnh thì mảng có thể được khởi động trị bằng các giá trị hằng. . Ví dụ : int a[5] = {1, 3, 5, 7, 9}; int b[10] = {1, 2, 3, 4, 5}; . Nếu số trị ít hơn số phần tử mảng thì các phần tử còn lại không được khởi động trị, có nghĩa các phần tử này có trị là 0. © TS. Nguyễn Phúc Khải 20
- KHỞI ĐỘNG TRỊ CỦA MẢNG . Ví dụ: Khai báo mảng 2 chiều: int a[][3] = { { 11, 12, 13}, { 21, 22, 23}, { 31, 32, 33} }; Với khai báo này, mảng a sẽ có 9 phần tử trong 3 hàng © TS. Nguyễn Phúc Khải 22
- MẢNG LÀ ĐỐI SỐ CỦA HÀM MẢNG LÀ BIẾN TOÀN CỤC void select_sort (int a[ ], int n) { int i, j; int max, vtmax; int tam; for (i = 0; i < n-1; i++) { max = a[i]; vtmax = i; for (j = i + 1; j < n; j++) if (max < a[j]) { max = a[j]; vtmax = j; } if (vtmax ! = i) { tam = a[i]; a[i] = max; a[vtmax] = tam; } } } © TS. Nguyễn Phúc Khải 24
- © TS. Nguyễn Phúc Khải 26