Kĩ thuật lập trình - Chương 4: Mảng và chuỗi ký tự

Tài liệu Kĩ thuật lập trình - Chương 4: Mảng và chuỗi ký tự: CHƯƠNG 4: MẢNG VÀ CHUỖI KÝ TỰMục tiêuGiới thiệu các kiến thức về Mảng và Chuỗi ký tự như: khái niệm, cách khai báo, cách truy xuất tới từng phần tử mảng.Nội dungKhái niệm mảngMảng một chiềuMảng hai chiềuChuỗi ký tự  Khái niệm Mảng là tập hợp hữu hạn các phần tử liên tiếp nhau có cùng kiểu dữ liệu, cùng tên và được truy cập thông qua chỉ số mảng. Trong đó kiểu dữ liệu có thể là các kiểu dữ liệu cơ bản: int, char, float, hoặc các kiểu dữ liệu có cấu trúc như: kiểu mảng, kiểu cấu trúc, kiểu con trỏ,  Phân loại mảng - Mảng một chiều - Mảng nhiều chiều 4.1 Kiểu mảng1. Khai báo2. Truy cập phần tử mảng Khai báo mảng với số phần tử xác định Khai báo mảng với số phần tử không xác địnhCú pháp: Kiểu Tên mảng[Số phần tử];Trong đó: - Kiểu là kiểu dữ liệu của các phần tử mảng - Tên mảng được đặt theo quy tắc đặt tên trong C++ - Số phần tử là một hằng số nguyên hoặc một biểu thức mà giá trị của nó là một hằng số nguyên.Ví dụ: int a[10];Lúc này, máy sẽ dành một dãy liên tiếp các ô nhớ, mỗi ô nhớ có...

ppt43 trang | Chia sẻ: Khủng Long | Lượt xem: 1323 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Kĩ thuật lập trình - Chương 4: Mảng và chuỗi ký tự, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
CHƯƠNG 4: MẢNG VÀ CHUỖI KÝ TỰMục tiêuGiới thiệu các kiến thức về Mảng và Chuỗi ký tự như: khái niệm, cách khai báo, cách truy xuất tới từng phần tử mảng.Nội dungKhái niệm mảngMảng một chiềuMảng hai chiềuChuỗi ký tự  Khái niệm Mảng là tập hợp hữu hạn các phần tử liên tiếp nhau có cùng kiểu dữ liệu, cùng tên và được truy cập thông qua chỉ số mảng. Trong đó kiểu dữ liệu có thể là các kiểu dữ liệu cơ bản: int, char, float, hoặc các kiểu dữ liệu có cấu trúc như: kiểu mảng, kiểu cấu trúc, kiểu con trỏ,  Phân loại mảng - Mảng một chiều - Mảng nhiều chiều 4.1 Kiểu mảng1. Khai báo2. Truy cập phần tử mảng Khai báo mảng với số phần tử xác định Khai báo mảng với số phần tử không xác địnhCú pháp: Kiểu Tên mảng[Số phần tử];Trong đó: - Kiểu là kiểu dữ liệu của các phần tử mảng - Tên mảng được đặt theo quy tắc đặt tên trong C++ - Số phần tử là một hằng số nguyên hoặc một biểu thức mà giá trị của nó là một hằng số nguyên.Ví dụ: int a[10];Lúc này, máy sẽ dành một dãy liên tiếp các ô nhớ, mỗi ô nhớ có kích thước 2 bytes dùng để lưu một phần tử mảng và được đánh số bắt đầu từ 0 đến 9 (Số phần tử - 1). 4.2 Mảng một chiềua[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] Khai báo mảng với số phần tử xác định4.2 Mảng một chiều Khai báo mảng với số phần tử xác địnhVí dụ: float Sothuc[5]= {2.3, 1.5, 0.34, 5.04, 7.213}; Khai báo mảng với số phần tử xác địnhCó thể vừa khai báo vừa gán giá trị cho mảng theo cú pháp sau: Kiểu Tên mảng[Số phần tử] = {Các giá trị cần gán }; Khai báo mảng với số phần tử xác địnhVí dụ: Kiểm tra tính đúng/sai của các khai báo mảng sau: 1. char Kytu[4+6]; 2. float 10Sothuc[10]; 3. double b[2.3]; 4. int c[5] = {3.15, 7, 0.55, 2.75, 9}; 5. float d[10] = {2.3, 5, 4.6, 5.5, 7.21}; 6. int e[5] = {1, 2, 3, 4, 5, 6, 7}; Trường hợp không biết chính xác số phần tử của mảng ?4.2 Mảng một chiều1. Khai báo Khai báo mảng với số phần tử không xác định Kiểu khai báo này được sử dụng khi ta không biết chính xác số phần tử của mảng. Và được áp dụng trong các trường hợp: Vừa khai báo vừa gán giá trị cho mảng Khai báo mảng là tham số hình thức của hàm4.2 Mảng một chiều Khai báo mảng với số phần tử không xác định Vừa khai báo vừa gán giá trị cho mảngCú pháp: Kiểu Tên mảng[] ={Các giá trị cần gán }; Ví dụ: int b[] = {2, 5, 3, -4, 7, 6}; char Ten[] = "Lap trinh"; char Kytu[] = {'H', 'E', 'L','L', 'O'};4.2 Mảng một chiều Khai báo mảng với số phần tử không xác định Khai báo mảng là tham số hình thức của hàmVí dụ: Định nghĩa hàm sắp xếp mảng số nguyên a: int Sapxep(int a[], int n); { thân hàm }4.2 Mảng một chiều Khai báo mảng với số phần tử không xác định Ví dụ: Xét 2 cách khai báo sau: int a[5] = {1, 2, 3, 4, 5}; int b[] = {1, 2, 3, 4, 5};Làm thế nào để xác định số phần tử của mảng?=> Có thể sử dụng hàm sizeof() để lấy số phần tử mảng sizeof(Tên mảng)/ sizeof(Kiểu)4.2 Mảng một chiềuMỗi được truy cập thông qua- Tên mảng- Chỉ số đặt trong cặp dấu [ ]phần tử mảngphần tử mảngTen_mangChi_so[ ]Ví dụ 4.7: Ta có khai báo int a[50];..a[0]a[1]a[2]a[49]Tên mảng: aChỉ số (vị trí) 0 1 2 .. 49 Phần tử: Thứ nhấtThứ haiThứ baCuối cùngPhần tử: 4.2 Mảng một chiều2. Truy cập phần tử mảng2. Truy cập phần tử mảngVới cách truy cập này, Tên mảng[Chỉ số] giống như một biến có kiểu dữ liệu là kiểu dữ liệu của mảng.=> Thao tác nhập/xuất với từng phần tử mảng cũng giống như với một biếnVí dụ 1: Ta có khai báo mảng và gán giá trị như sau: int a[3]; a[0] = 4; a[1] = 45; a[2] = 65; cout>a[0]; cout>a[1]; cout>a[2]; .4.2 Mảng một chiều2. Truy cập phần tử mảng float a[10]; cout>a[i]; cout> song lại có nhiều hạn chế. 4.4 Chuỗi ký tựHoạt động của cin>>: Toán tử >> sẽ bỏ qua các ký tự trống như: dấu space, enter. Đọc các ký tự vào thành một chuỗi và dừng lại khi gặp ký tự trống. Phần còn lại chờ trong luồng vào cin.4.4 Chuỗi ký tựVí dụ: xét đoạn mã sau: char sv1[25], sv2[25]; cout>sv1; cout>sv2; cout>sv1; cin.ignore(20,'\n'); cout>sv2; cout>sv2; cout thường): strupr(), strlwr() Hàm lấy độ dài của xâu: strlen()4.4 Chuỗi ký tựCú pháp: strcpy(chuỗi đích, chuỗi nguồn) strncpy(chuỗi đích, chuỗi nguồn, n)Ví dụ: xét đoạn code và cho biết kết quả char sv1[20], sv2[20]="Lap trinh C++", sv3[20]; strcpy(sv1, sv2); strncpy(sv3,sv2,5); sv3[5]='\0'; cout<<sv1<<endl; cout<<sv2<<endl; cout<<sv3<<endl;Hàm strcpy và strncpyCú pháp: strcat(chuỗi đích, chuỗi nguồn) strncat(chuỗi đích, chuỗi nguồn, n)Ví dụ: xét đoạn code và cho biết kết quả char sv1[20], sv2[20]="Lap trinh C++", sv3[20]; strcpy(sv1, sv2); strncpy(sv3,sv2,5); sv3[5]='\0'; strcat(sv1,sv2); strncat(sv3,sv2,3); cout<<sv1<<endl<<sv2<<endl<<sv3<<endl;Hàm strcat và strncat1. Viết chương trình nhập vào một mảng 1 chiều, sau đó tính và in ra tổng: - Giá trị của tất cả các phần tử mảng - Các phần tử mảng có chỉ số chẵn (lẻ) - Các phần tử mảng có giá trị chẵn (lẻ) - Các phần tử mảng có giá trị âm (dương) - Các phần tử mảng có giá trị chia hết cho 3.2. Viết chương trình nhập vào một mảng 1 chiều, sau đó in ra theo thứ tự ngược lại giá trị các phần tử của mảng đó.3. Viết chương trình nhập vào một mảng 1 chiều, sau đó sắp xếp mảng theo thứ tự tăng dần.4. Viết chương trình nhập vào một mảng 1 chiều, kiểm tra xem mảng đó có đối xứng hay không?BÀI THỰC HÀNH (1/6)5. Viết chương trình nhập vào một dãy các số nguyên, sau đó nhập vào một số m và in ra tất cả các phần tử có giá trị lớn hơn m cùng với chỉ số tương ứng.6. Viết chương trình tìm Max và Min trong một mảng 1 chiều gồm 20 phần tử nguyên.7. Viết chương trình nhập vào một mảng 1 chiều gồm 20 phần tử. Đếm xem có bao nhiêu phần tử của mảng có giá trị bằng m (với m được nhập vào từ bàn phím).8. Cho dãy đã được sắp xếp tăng dần. Chèn thêm vào dãy phần tử có giá trị m sao cho dãy vẫn sắp xếp tăng dần.9. Cho 2 mảng A, B có các phần tử đều đã được sắp xếp tăng (giảm) dần. Viết chương trình trộn 2 mảng trên để thu được mảng thứ 3 mà vẫn đảm bảo tính tăng (giảm) dần của mảng.BÀI THỰC HÀNH (2/6)10. Viết chương trình nhập vào và hiển thị ra màn hình giá trị vừa nhập của một ma trận có kích thước m x n.11. Viết chương nhập vào hai ma trận A, B có m hàng, n cột. Tính và xuất ra màn hình ma trận tổng của 2 ma trận trên12. Viết chương nhập vào hai ma trận A, B có m hàng, n cột. Tính và xuất ra màn hình ma trận tích của 2 ma trận trên13. Viết chương trình nhập vào ma trận A. Sau đó, tính và hiển thị lên màn hình ma trận chuyển vị của A.14. Viết chương trình nhập giá trị vào cho ma trận A gồm m hàng, n cột. Sau đó, hiển thị ra màn hình ma trận đối xứng của nó.BÀI THỰC HÀNH (3/6)15. Cho một ma trận nguyên kích thước m x n. Tính và hiển thị ra màn hình: - Tổng tất cả các phần tử của ma trận - Tổng tất cả các phần tử có giá trị dương (hoặc âm) của ma trận - Tổng tất cả các phần tử có giá trị chẵn (hoặc lẻ) của ma trận- Tổng tất cả các phần tử có chỉ số hàng (hoặc cột) chẵn (hoặc lẻ) của ma trận- Tổng tất cả các phần tử chia hết cho một số nguyên x khác không bất kỳ được nhập vào từ bàn phím.BÀI THỰC HÀNH (4/6)16. Cho ma trận thực kích thước m x n. Tìm và hiển thị lên màn hình: - Giá trị lớn nhất (hoặc nhỏ nhất) kèm chỉ số của ma trận- Giá trị lớn nhất (hoặc nhỏ nhất) kèm chỉ số theo từng hàng (hoặc cột) của ma trận.- Giá trị lớn nhất (hoặc nhỏ nhất) kèm chỉ số của đường chéo chính (hoặc đường chéo phụ) của ma trận.- Số lần xuất hiện giá trị x (x bất kỳ được nhập vào từ bàn phím) có trong ma trận.17. Viết chương trình tìm và xuất ra màn hình chỉ số hàng và cột của phần tử âm đầu tiên xuất hiện trong ma trận.18. Viết chương trình nhập vào một xâu ký tự và in ra xâu nghich đảo của nó.BÀI THỰC HÀNH (5/6)19. Viết chương trình nhập vào một xâu ký tự, sau đó đếm và in ra số lần xuất hiện ký tự ch trong xâu vừa nhập (với ch là ký tự bất kỳ được nhập vào từ bàn phím)20. Viết chương trình đếm và in ra số lần xuất hiện các ký tự trong một chuỗi.21. Viết chương trình kiểm tra xem một chuỗi ký tự nhập vào có đối xứng hay không ?22. Viết chương trình nhập vào một xâu ký tự thường, sau đó chuyển các ký tự thường thành các ký tự hoa rồi in kết quả ra màn hình.23. Viết chương trình đếm số từ trong một xâu ký tự24. Viết chương trình kiểm tra ‘‘hello’’ có trong xâu s hay không ?(không phân biệt chữ hoa và chữ thường)25. Viết chương trình sắp xếp một mảng xâu họ và tên theo thứ tự từ điển của tênBÀI THỰC HÀNH (6/6)

Các file đính kèm theo tài liệu này:

  • ppttailieu.ppt