THÔNG TIN TÀI LIỆU
Lập trình Chương VI KIỂU MẢNG • • Học xong chương này, sinh viên nắm vấn đề sau: Khái niệm kiểu liệu mảng ứng dụng Cách khai báo biến kiểu mảng phép toán phần tử mảng I GIỚI THIỆU KIỂU DỮ LIỆU “KIỂU MẢNG” TRONG C Mảng tập hợp phần tử cố định có kiểu, gọi kiểu phần tử Kiểu phần tử có kiểu bất kỳ: ký tự, số, chuỗi ký tự…; có ta sử dụng kiểu mảng để làm kiểu phần tử cho mảng (trong trường hợp ta gọi mảng mảng hay mảng nhiều chiều) Ta chia mảng làm loại: mảng chiều mảng nhiều chiều Mảng kiểu liệu sử dụng thường xuyên Chẳng hạn người ta cần quản lý danh sách họ tên khoảng 100 sinh viên lớp Nhận thấy họ tên để lưu trữ ta cần biến kiểu chuỗi, 100 họ tên cần khai báo 100 biến kiểu chuỗi Nếu khai báo đoạn khai báo thao tác họ tên dài dòng rắc rối Vì thế, kiểu liệu mảng giúp ích ta trường hợp này; cần khai báo biến, biến coi tương đương với 100 biến chuỗi ký tự; mảng mà phần tử chuỗi ký tự Hay để lưu trữ từ khóa ngơn ngữ lập trình C, ta dùng đến mảng để lưu trữ chúng II MẢNG CHIỀU Nếu xét góc độ tốn học, mảng chiều giống vector Mỗi phần tử mảng chiều có giá trị mảng khác II.1 Khai báo II.1.1 Khai báo mảng với số phần tử xác định (khai báo tường minh) Cú pháp: Ý nghĩa: - Tên mảng: tên đặt theo quy tắc đặt tên danh biểu Tên mang ý nghĩa tên biến mảng - Số phần tử: số nguyên, cho biết số lượng phần tử tối đa mảng (hay nói khác kích thước mảng gì) - Kiểu: phần tử mảng có liệu thuộc kiểu - Ở đây, ta khai báo biến mảng gồm có số phần tử phần tử, phần tử thứ tên mảng [0], phần tử cuối tên mảng[số phần tử -1] Trang 72 Lập trình Ví dụ: int a[10]; /* Khai báo biến mảng tên a, phần tử thứ a[0], phần tử cuối a[9].*/ Ta coi mảng a dãy liên tiếp phần tử nhớ sau: Vị trí Tên phần tử a[0] a[1] a[2] Hình 1: Hình ảnh mảng a nhớ a[3] a[4] a[5] a[6] a[7] a[8] a[9] II.1.2 Khai báo mảng với số phần tử không xác định (khai báo không tường minh) Cú pháp: Khi khai báo, không cho biết rõ số phần tử mảng, kiểu khai báo thường áp dụng trường hợp: vừa khai báo vừa gán giá trị, khai báo mảng tham số hình thức hàm a Vừa khai báo vừa gán giá trị Cú pháp: []= {Các giá trị cách dấu phẩy} Nếu vừa khai báo vừa gán giá trị C hiểu số phần tử mảng số giá trị mà gán cho mảng cặp dấu {} Chúng ta sử dụng hàm sizeof() để lấy số phần tử mảng sau: Số phần tử=sizeof(tên mảng)/ sizeof(kiểu) b Khai báo mảng tham số hình thức hàm, trường hợp ta khơng cần định số phần tử mảng II.2 Truy xuất phần tử mảng Mỗi phần tử mảng truy xuất thông qua Tên biến mảng theo sau số nằm cặp dấu ngoặc vuông [ ] Chẳng hạn a[0] phần tử mảng a khai báo Chỉ số phần tử mảng biểu thức mà giá trị kiểu số nguyên Với cách truy xuất theo kiểu này, Tên biến mảng[Chỉ số] coi biến có kiểu liệu kiểu khai báo biến mảng Ví dụ 1: int a[10]; Trong khai báo này, việc truy xuất phần tử hình Chẳng hạn phần tử thứ (có vị trí 1) a[1]… Ví dụ 2: Vừa khai báo vừa gán trị cho mảng chiều số nguyên In mảng số nguyên lên hình Giả sử ta biết số phần tử mảng n; việc hiển thị giá trị số nguyên lên hình ta cần sử dụng hàm printf() với định dạng %d, tổng quát hóa lên muốn hiển thị lên hình giá trị n số nguyên, ta cần gọi hàm printf() n lần Như trường hợp ta sử dụng vòng lặp để in giá trị phần tử Ta có đoạn chương trình sau: #include #include int main() { int n,i,j,tam; int dayso[]={66,65,69,68,67,70}; clrscr(); Trang 73 Lập trình } n=sizeof(dayso)/sizeof(int); /*Lấy số phần tử*/ printf("\n Noi dung cua mang "); for (i=0;i0); printf("Dang nhi phan la: "); for(i=K-1;i>=0;i ) printf("%d",NhiPhan[i]); getch(); return 0; } Ví dụ 4: Nhập vào dãy n số xếp số theo thứ tự tăng Đây tốn có ứng dụng rộng rãi nhiều lĩnh vực Có nhiều giải thuật xếp Một số mơ tả sau: Đầu tiên đưa phần tử thứ so sánh với phần tử cịn lại, lớn phần tử so sánh đổi chỗ hai phần tử cho Sau tiếp tục so sánh phần tử thứ hai với phần tử từ thứ ba trở tiếp tục phần tử thứ n-1 Chương trình chia thành hàm Nhap (Nhập số), SapXep (Sắp xếp) InMang (In số); tham số hình thức hàm mảng không định rõ số phần tử tối đa, ta cần có thêm số phần tử thực tế sử dụng mảng bao nhiêu, giá trị nguyên #include #include void Nhap(int a[],int N) { int i; for(i=0; i< N; i++) { printf("Phan tu thu %d: ",i);scanf("%d",&a[i]); } } Trang 74 Lập trình void InMang(int a[], int N) { int i; for (i=0; i
Ngày đăng: 23/03/2022, 23:08
Xem thêm: