Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 39 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
39
Dung lượng
707,5 KB
Nội dung
Mảng và chuỗi ký tự NGÔN NGỮ LẬP TRÌNH C Trường Cao Đẳng Công Nghiệp Tuy Hoà Khoa Công nghệ Thông tin o0o Mảng và chuỗi Lập trình C 3 Wednesday, July 9, 2014 Giới thiệu • Tất cả các biến ta khai báo và sử dụng cho đến trước bài này đều là biến đơn • Vậy làm cách nào để lưu N số, hay lưu 1 bảng gồm MxN số? • Làm cách nào xử lý hàng loạt các số này? • Làm thế nào để lưu 1 dãy các ký tự? Mảng và chuỗi Lập trình C 4 Wednesday, July 9, 2014 Mảng • Một mảng: – Là 1 cấu trúc dữ liệu. – Gồm nhiều phần tử, nằm liền kề nhau trong bộ nhớ. – Tất cả các phần tử trong mảng đều có cùng tên, cùng kiểu dữ liệu và được phân biệt với nhau thông qua chỉ số. – Chỉ số bắt đầu từ 0. Mảng và chuỗi Lập trình C 5 Wednesday, July 9, 2014 Mảng (2) A 0 1 2 3 4 5 M 0 1 2 0 1 2 Mảng và chuỗi Lập trình C 6 Wednesday, July 9, 2014 Mảng 1 chiều • Khai báo: typename arrname[d]; typename arrname[d] = {[valuelist]}; • Ghi chú: – d phải là 1 hằng số nguyên dương – valuelist có thể có hoặc không Mảng và chuỗi Lập trình C 7 Wednesday, July 9, 2014 1D – Ví dụ khai báo 1.int a[50]; 2.float x[20], y[100], z; 3.#define N 100 int arr[N]; 4.const int MAX=50; float D[MAX]; 5.int A[5] = {2,4,6,8,10}; 6.int B[10] = {1,2,3,4,5}; 7.int C[] = {3,5,7,9}; Mảng và chuỗi Lập trình C 8 Wednesday, July 9, 2014 1D – Truy nhập từng phần tử • Truy nhập từng phần tử của mảng arrname[index] – A[0] = 8 A[2] = 3 – A[3] = 5 … • Mỗi phần tử trong mảng được xem như 1 biến đơn có kiểu tương ứng với kiểu dữ liệu của mảng 475368 A 0 1 2 3 4 5 Mảng và chuỗi Lập trình C 9 Wednesday, July 9, 2014 1D – Duyệt mảng • Vòng lặp được sử dụng để lần lượt duyệt qua tất cả các phần tử trong mảng. • Nhập mảng: int a[100], N, i; scanf(“%d”, &N); for(i=0; i<N; i++) { printf(“Input element %d:”,i); scanf(“%d”, &a[i]); } Mảng và chuỗi Lập trình C 10 Wednesday, July 9, 2014 1D – Nhập – Xuất – Tính tổng • Xuất mảng: for(i=0; i<N; i++) printf(“%5d”,a[i]); printf(“\n”); • Tổng các phần tử trong mảng: tong = 0; for(i=0; i<N; i++) tong += a[i]; printf(“Tong = %d\n”, tong); Mảng và chuỗi Lập trình C 11 Wednesday, July 9, 2014 1D – Một số bài toán trên mảng • Tìm max, min của cả mảng • Tìm kiếm 1 giá trị trong mảng – Tìm tuyến tính – Tìm nhị phân • Sắp xếp mảng • Thêm, xóa phần tử • Kiểm tra tính chất của mảng • Tách, trộn mảng • ect. [...]... dụng c c hàm xử lý chuỗi c sẵn Xem như 1 mảng c c ký tự: dùng vòng lặp Ghi chú: 2 3 • • • 4 Không c phép gán chuỗi Không c phép c ng Phải đảm bảo ký tự NULL ở cuối chuỗi gets() và puts() (conio.h): đư c sử dụng để nhập và xuất chuỗi Lập trình C Mảng và chuỗi 31 Wednesday, July 9, 2014 Chuỗi ký tự – C c hàm 1 2 3 4 5 Sao chép nội dung c a 2 chuỗi: strcpy(dest, source); Nối chuỗi này vào chuỗi. .. s2 Lập trình C Mảng và chuỗi 33 Wednesday, July 9, 2014 Chuỗi ký tự – C c hàm 7 Tìm kiếm 1 ký tự trong chuỗi: strchr(s, ch); Usage: trả về giá trị NULL nếu không tìm thấy, ngư c lại, trả về chuỗi con đư c trích từ chuỗi lớn, từ vị trí đầu tiên tìm thấy cho đến hết chuỗi Ví dụ: char s[] = “Hello”; printf(“%s”,strchr(s, ‘l’)); Lập trình C Mảng và chuỗi 34 Wednesday, July 9, 2014 Chuỗi ký tự. .. chuỗi kia: strcat(s, subs); Tính toán chiều dài chuỗi: len=strlen(s); Đổi tất c ký tự trong chuỗi thành chữ thường / chữ hoa: strlwr(s); strupr(s); Điền đầy tất c c c ô trong chuỗi bằng 1 ký tự giống nhau: strset(s, ch); Lập trình C Mảng và chuỗi 32 Wednesday, July 9, 2014 Chuỗi ký tự – C c hàm 6 So sánh 2 Chuỗi ký tự: strcmp(s1, s2); stricmp(s1,s2); C ch dùng: int kq = strcmp(s1, s2);... Ví dụ: char s[10] = “Hello”; s[0] = ‘H’ s[1] = ‘e’ … s[strlen(s)] = 0 Lập trình C Mảng và chuỗi 36 Wednesday, July 9, 2014 Chuỗi ký tự – Chuẩn hóa • • • • Không c khoảng trắng đầu chuỗi Không c khoảng trắng đầu chuỗi C đúng 1 khoảng trắng giữa c c từ C c giải thuật: – Kiểm tra 1 chuỗi bất kỳ c phải là chuỗi chuẩn không – Chuẩn hóa chuỗi (c t bỏ khoảng trắng thừa) Lập trình C Mảng và chuỗi. .. (flag) printf(“Incremental!”); else printf(“Non-incremental!”); Lập trình C Mảng và chuỗi 22 Wednesday, July 9, 2014 Mảng 2 chiều • C n đư c gọi là ma trận • Là 1 bảng bao gồm M dòng và N c t, do vậy c tổng c ng MxN ô (phần tử) • Mỗi dòng (c t) c a ma trận là 1 mảng 1 chiều • Do vậy, mảng 2 chiều c n đư c gọi là mảng c a mảng Lập trình C Mảng và chuỗi 23 Wednesday, July 9, 2014 2D - Khai báo • Khai... C c hàm 8 Tìm kiếm 1 chuỗi con trong chuỗi lớn: strstr(s, subs); C ng dụng: trả về giá trị NULL nếu không tìm thấy, ngư c lại, trả về chuỗi con đư c trích từ chuỗi lớn, từ vị trí đầu tiên tìm thấy cho đến hết chuỗi Ví dụ: char s[] = “Hello”; printf(“%s”,strstr(s, “ll”)); Lập trình C Mảng và chuỗi 35 Wednesday, July 9, 2014 Chuỗi ký tự – như 1 Mảng • • Truy nhập từng ký tự trong chuỗi: ... ‘H’ Lập trình C 1 ‘e’ 2 ‘l’ 3 ‘l’ 4 ‘o’ 5 0 Mảng và chuỗi 29 Wednesday, July 9, 2014 Chuỗi ký tự - Khai báo • char • char • char Ví dụ: char char char char Lập trình C strname[length]; strname[length]=value; strname[length]={[charlist]}; str[50]; name[50] = “Le Van Tam”; s[] = “Today is Thursday”; a[] = {‘O’,’k’,’\0’}; Mảng và chuỗi 30 Wednesday, July 9, 2014 Chuỗi ký tự - Xử lý chuỗi 1 Xem chuỗi như... scanf(“%d”, &M[i][j]); } Lập trình C Mảng và chuỗi 27 Wednesday, July 9, 2014 2D – Kết quả th c hiện int M[20][20], row, col, i, j; for(i=0; i . Mảng và chuỗi ký tự NGÔN NGỮ LẬP TRÌNH C Trường Cao Đẳng C ng Nghiệp Tuy Hoà Khoa C ng nghệ Thông tin o0o Mảng và chuỗi Lập trình C 3 Wednesday, July 9, 2014 Giới thiệu • Tất c c c biến. c ng kiểu dữ liệu và đư c phân biệt với nhau thông qua chỉ số. – Chỉ số bắt đầu từ 0. Mảng và chuỗi Lập trình C 5 Wednesday, July 9, 2014 Mảng (2) A 0 1 2 3 4 5 M 0 1 2 0 1 2 Mảng và chuỗi Lập. tự? Mảng và chuỗi Lập trình C 4 Wednesday, July 9, 2014 Mảng • Một mảng: – Là 1 c u tr c dữ liệu. – Gồm nhiều phần tử, nằm liền kề nhau trong bộ nhớ. – Tất c c c phần tử trong mảng đều c c ng