Bài giảng Tin học cơ sở 2: Chương 5 - ThS. Nguyễn Mạnh Sơn

70 15 0
Bài giảng Tin học cơ sở 2: Chương 5 - ThS. Nguyễn Mạnh Sơn

Đ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

Chương 5 giúp người học hiểu về Mảng và xâu ký tự. Nội dung trình bày cụ thể gồm có: Khái niệm, khai báo, truy xuất dữ liệu kiểu mảng, một số bài toán trên mảng 1 chiều,...Đây là tài liệu học tập và giảng dạy dành cho sinh viên ngành tham khảo.

& VC BB TIN HỌC CƠ SỞ MẢNG VÀ XÂU KÝ TỰ ThS Nguyễn Mạnh Sơn Khoa: Công nghệ thông tin Email: nguyenmanhson@gmail.com 6/5/2018 & VC BB Nội dung Khái niệm Khai báo Truy xuất liệu kiểu mảng Một số toán mảng chiều & VC BB Đặt vấn đề Ví dụ  Chương trình cần lưu trữ số nguyên? => Khai báo biến int a1, a2, a3;  Chương trình cần lưu trữ 100 số nguyên? => Khai báo 100 biến kiểu số nguyên!  Người dùng muốn nhập n số nguyên? => Không thực được! Giải pháp  Kiểu liệu cho phép lưu trữ dãy số nguyên dễ dàng truy xuất & VC BB Dữ liệu kiểu mảng Khái niệm  Là kiểu liệu có cấu trúc người lập trình định nghĩa  Biểu diễn dãy biến có kiểu Ví dụ: dãy số nguyên, dãy ký tự…  Kích thước xác định khai báo không thay đổi  NNLT C định khối nhớ liên tục cho biến kiểu mảng & VC BB Khai báo biến mảng Cú pháp: []; [][]…[];  , …, : số lượng phần tử chiều Lưu ý  Phải xác định cụ thể (hằng) khai báo  Mảng nhiều chiều: = N1*N2*…*Nn  Bộ nhớ sử dụng = *sizeof()  Bộ nhớ sử dụng phải 64KB (65535 Bytes)  Một dãy liên tục có số từ đến -1 & VC BB Khai báo biến mảng Ví dụ int Mang1Chieu[10]; 9 Mang1Chieu int Mang2Chieu[3][4]; 10 11 Mang2Chieu & VC BB Số phần tử mảng Phải xác định cụ thể số phần tử lúc khai báo, không sử dụng biến thường int n1 = 10; int a[n1]; const int n2 = 20; int b[n2]; Nên sử dụng thị tiền xử lý #define để định nghĩa số phần tử mảng #define n1 10 #define n2 20 int a[n1]; int b[n1][n2]; //  int a[10]; //  int b[10][20]; & VC BB Khởi tạo giá trị cho mảng lúc khai báo Gồm cách sau  Khởi tạo giá trị cho phần tử mảng int a[4] = {2912, 1706, 1506, 1904}; a 2912 1706 1506 1904  Khởi tạo giá trị cho số phần tử đầu mảng int a[4] = {2912, 1706}; a 2912 1706 0 & VC BB Khởi tạo giá trị cho mảng lúc khai báo Gồm cách sau  Khởi tạo giá trị cho phần tử mảng int a[4] = {0}; a 0 0  Tự động xác định số lượng phần tử int a[] = {2912, 1706, 1506, 1904}; a 2912 1706 1506 1904 & VC BB Truy xuất đến phần tử Thông qua số [][]…[] Ví dụ  Cho mảng sau int a[4];  Các truy xuất • Hợp lệ: a[0], a[1], a[2], a[3] • Khơng hợp lệ: a[-1], a[4], a[5], …  Cho kết thường không mong muốn! 10 & VC BB Chuỗi ký tự - Nhập  Nhập chuỗi char *gets(char *s);  Ví dụ: void main() { char chuoi[80]; printf("Nhap vao chuoi:"); gets(chuoi); printf("Chuoi vua nhap la: %s\n", chuoi); } 56 & VC BB Chuỗi ký tự - Xuất  Xuất chuỗi int puts(const char *s);  Ví dụ: void main() { char chuoi[] = “Dai hoc Nha Trang\n"; puts(chuoi); }  Lưu ý: Cách truy xuất ký tự tương tự mảng chiều 57 & VC BB Ví dụ  Nhập vào chuỗi ký tự, xuất hình chuỗi bị đảo ngược thứ tự ký tự void main() { char s1[100], s2[100]; clrscr(); void DaoChuoi(char s1[], char s2[]) printf("\nNhap vao chuoi ky tu: "); { gets(s1); int l=strlen(s1); DaoChuoi(s1, s2); printf("\nKet qua sau dao nguoc for(int i=0; i %s", s1, s2); return 0; } 62 & VC BB Chuỗi ký tự – Một số hàm thư viện  Gán nội dung chuỗi: o Chép toàn chuỗi source sang chuỗi dest: int strcpy(char *dest, const char *src); o Chép tối đa n ký tự từ source sang dest: int strncpy(char *dest, const char *src, int n);  Tạo chuỗi từ chuỗi có: char *strdup(const char *src); 63 & VC BB Chuỗi ký tự – ví dụ strcpy #include int main() { char s[] = "Tony Blurt"; char s2[100], *s3; Tony Blurt To123Blurt Blurt strcpy(s2, s); printf("%s\n", s2); strncpy(s2 + 2, "12345", 3); printf("%s\n", s2); s3 = strdup(s + 5); printf("%s\n", s3); free(s3); return 0; } 64 & VC BB Chuỗi ký tự – Một số hàm thư viện  Nối chuỗi: char *strcat(char *dest,const char *src);  Tách chuỗi: char *strtok(char *s,const char *sep); Trả địa đoạn Muốn tách đoạn tham số thứ NULL 65 & VC BB Chuỗi ký tự – ví dụ strtok #include #define SEPARATOR "., " int main() { char s[]= "Thu strtok: 9,123.45"; char *p; Thu strtok: 123 45 p = strtok(s, SEPARATOR); while (p != NULL) { printf("%s\n", p); p = strtok(NULL, SEPARATOR); } return 0; } 66 & VC BB Chuỗi ký tự – Một số hàm thư viện  Tìm ký tự chuỗi: char *strchr(const char *s, int c);  Tìm đoạn ký tự chuỗi: char *strstr(const char *s1,const char *s2); 67 & VC BB Chuỗi ký tự – ví dụ tìm kiếm #include int main() { char s[]= "Thu tim kiem chuoi"; char *p; p = strchr(s, 'm'); printf("%s\n", p); p = strstr(s, "em"); printf("%s\n", p); return 0; m kiem chuoi em chuoi } 68 & VC BB Chuỗi ký tự – chèn đoạn ký tự #include void StrIns(char *s, char *sub) { int len = strlen(sub); memmove(s + len, s, strlen(s)+1); strncpy(s, sub, len); } 123 Thu chen int main() 123 Thu 45chen { char s[]= "Thu chen"; StrIns(s, "123"); StrIns(s + 8, "45"); return 0; printf("%s\n", s); printf("%s\n", p); } 69 & VC BB Chuỗi ký tự – xóa đoạn ký tự #include void StrDel(char *s, int n) { memmove(s, s + n, strlen(s+n)+1); } xoa 12345 int main() { xoa 45 char s[]= "Thu xoa 12345"; StrDel(s, 4); StrDel(s + 4, 3); return 0; printf("%s\n", s); printf("%s\n", p); } 70 ... Bộ nhớ sử dụng = *sizeof( )  Bộ nhớ sử dụng phải 64KB ( 655 35 Bytes)  Một dãy liên tục có số từ đến -1 & VC BB Khai báo biến mảng Ví dụ int Mang1Chieu[10];... biệt với khai báo  int a[4]; a = {2912, 1706, 150 6, 1904}; => int a[4] = {2912, 1706, 150 6, 1904};  Chỉ số mảng không hợp lệ  int a[4];  a [-1 ] = 1; a[10] = 0; 13 & VC BB Truyền mảng cho hàm... nằm vị trí Ý tưởng  Xét phần mảng a Nếu phần tử xét x trả vị trí Nếu kơ tìm trả -1 vị trí = x a x b n-1 … x MAX - … … 23 & Hàm Tìm Kiếm (dùng while) VC BB int TimKiem(int a[], int n, int x) {

Ngày đăng: 11/05/2021, 04:22

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan