1. Trang chủ
  2. » Công Nghệ Thông Tin

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

70 15 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 70
Dung lượng 13,64 MB

Nội dung

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Ừ KHÓA LIÊN QUAN