1. Trang chủ
  2. » Tất cả

Lecture 03 - KieuMangContro

37 5 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 37
Dung lượng 155,93 KB

Nội dung

Kỹ thuật lập trình(3): Cấu trúc mảng & trỏ Ngô Thành Long Khoa Công nghệ thông tin Học viện Kỹ thuật Quân 236-Hoàng Quốc Việt – Hà Nội Nội dung Cấu trúc mảng Mảng chiều Mảng nhiều chiều Cấu trúc trỏ Giới thiệu trỏ Quản lý vùng nhớ với trỏ Mảng & trỏ Con trỏ với tham số hình thức hàm Xâu ký tự Bài tập & Thảo luận Kiểu mảng Khi làm việc với cấu trúc liệu dạng dãy hay danh sách phần tử, ta sử dụng kiểu mảng (array) Mảng chiều: vec-tơ phần tử Mảng nhiều chiều: bảng phần tử Mảng chiều Dãy phần tử có kiểu liệu Các phần tử xếp theo trật tự định 27-Aug-13 Kiểu mảng Cú pháp khai báo mảng chiều kiểu_dữ_liệu tên_mảng[số_phần_tử_của_mảng]; Ví dụ int ai[10]; float af[100]; Số phần tử mảng xác định khai báo Sử dụng toán tử [] để truy cập phân tử mảng Ví dụ: ai[2], af[10], … Chỉ số phần tử mảng đánh số từ 27-Aug-13 Kiểu mảng Ví dụ Nhập danh sách giá trị ngun vào mảng, sau tìm phần tử có giá trị nhỏ mảng 27-Aug-13 #include #define N 10 main() { int x[N], min; int i; for (i=0; i x[i]) = x[i]; printf("\n min= %d", min); } Kiểu mảng Khởi tạo mảng Mảng khởi tạo giá trị khai báo Cú pháp kiểu_dữ_liệu tên_mảng[số_phần_tử_của_mảng] = {danh_sách_các_giá_trị_khởi_tạo}; Khi khai báo mảng có khởi tạo giá trị khơng cần số phần tử mảng Ví dụ int ai[3] = {2, 4, 5}; Hoặc int ai[] = {2, 4, 5}; /*không khai báo số phần tử mảng*/ 27-Aug-13 Kiểu mảng Định nghĩa kiểu – từ khóa typedef Có thể sử dụng từ khóa typedef để định nghĩa kiểu liệu Kiểu liệu sử dụng để khai báo liệu Ví dụ typedef int kieunguyen; typedef float mangthuc10[10]; sử dụng kieunguyen x, a[100]; mangthuc10 x, y; 27-Aug-13 Kiểu mảng Mảng địa Toán tử & dùng để lấy địa biến Toán tử & dùng để lấy địa phần tử mảng Các phần tử mảng bố trí nhớ liên tiếp nhớ Nếu biết địa phần tử thú i xác định địa phần tử thú i+1 Địa phần tử địa mảng Tên mảng mang địa mảng 27-Aug-13 Kiểu mảng Mảng địa Ví dụ float a[100]; float *pa; Các cách viết sau tương đương: a ⇔ &a[0] a + i ⇔ &a[i] *(a + i) ⇔ a[i] Các phép gán hợp lệ pa = a; pa = &a[0]; 27-Aug-13 Kiểu mảng Mảng tham số hàm Khi sử dụng mảng tham số hàm, ta khai báo, chẳng hạn: int a[] Hoặc int *a Như thế, hai cách sau tương đương: f(int a[]) { … } f(int *a) { … } Khi sử dụng, gọi: f(a); Hoặc f(&a[0]); 27-Aug-13 10 Kiểu mảng Tìm kiếm nhị phân Áp dụng mảng xếp Ý tưởng Giả sử mảng xếp tăng dần Lấy phần tử cần tìm so sánh với phần tử mảng (gọi g), có khả xảy ra: Nếu phần tử cần tìm lớn g, tìm cuối mảng Nếu phần tử cần tìm nhỏ g, tìm đầu mảng Nếu khơng, g phần tử cần tìm 27-Aug-13 23 Kiểu mảng Tìm kiếm nhị phân int timkiem_nhiphan(int a[], int n, int x) { int t, p, g; t = 0; p = n-1; while (t a[g]) t = g + 1; else return(g); } return(n); /* trường hợp khơng tìm thấy x */ } 27-Aug-13 24 Kiểu mảng Mảng nhiều chiều Ví dụ, khai báo mảng hai chiều int a[4][10]; mảng có hàng, 10 cột Truy cập phần tử mảng a[0][0], a[0][1], a[i][j]… Ví dụ khác float arr[3][4][5]; char arrc[4][4]; 27-Aug-13 25 ... sôi” 27-Aug-13 17 Kiểu mảng Sắp xếp bọt /* Sắp xếp bọt */ for (i = 0; i < kich_thuoc - 1; i++) { for (j = kich_thuoc - 1; j > i + 1; j ) { if (x[j] < x[j-1]) { tam=x[j]; x[j]=x[j-1]; x[j-1]=tam;... 27-Aug-13 10 Kiểu mảng Mảng tham số hàm Ví dụ void nhap_mang(int *x, int n) { int i; /* Đọc giá trị mảng */ for (i=0; i

Ngày đăng: 19/07/2016, 20:10