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 
pdf 26 trang xuanthi 29/12/2022 2580
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:

  • pdfbai_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

  1. 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
  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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. © TS. Nguyễn Phúc Khải 26