Bài giảng Tin học đại cương (Phần 3) - Chương 5: Mảng và xâu ký tự

63 11 0
Bài giảng Tin học đại cương (Phần 3) - Chương 5: Mảng và xâu ký tự

Đ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

Bài giảng Tin học đại cương (Phần 3) - Chương 5: Mảng và xâu ký tự cung cấp cho học viên những kiến thức về mảng - các thao tác cơ bản trên mảng, khai báo và sử dụng mảng, tìm kiếm trên mảng, giải thuật sắp xếp lựa chọn; con trỏ - toán tử địa chỉ, toán tử nội dung, phép toán trên con trỏ; xâu kí tự - khai báo và sử dụng xâu, các hàm xử lý kí tự;... Mời các bạn cùng tham khảo chi tiết nội dung bài giảng!

Phần III Chương Mảng xâu ký tự GV: Nguyễn Thị Thùy Liên Email: lien.nguyenthithuy@phenikaa-uni.edu.vn Nội dung Mảng Con trỏ Xâu kí tự Nội dung Mảng Con trỏ Xâu kí tự Mảng Khai báo sử dụng mạng Khái niệm mảng Các thao tác mảng Mảng Tìm kiếm mảng Sắp xếp mảng 1.1 Khái niệm mảng • Tập hợp hữu hạn phần tử kiểu, lưu trữ nhớ • Các phần tử mảng có tên (là tên mảng) phân biệt với số cho biết vị trí mảng • Ví dụ: o Bảng điểm sinh viên o Vector o Ma trận 1.2 Khai báo sử dụng mảng •Khai báo mảng (một chiều) • Trong KieuDuLieu tenMang [kích_thước]; o KieuDuLieu: kiểu liệu phần tử mảng o tenMang: tên mảng o kích_thước: số phần tử mảng • Ví dụ int mangNguyen[10]; // khai báo mảng 10 phần tử có kiểu liệu int 1.2 Khai báo sử dụng mảng • Cấp phát nhớ o Các phần tử mảng cấp phát ô nhớ nhớ o Biến mảng lưu trữ địa ô nhớ vùng nhớ cấp phát • Ngôn ngữ C đánh số phần tử mảng o Phần tử thứ i mangNguyen xác định mangNguyen [i-1] 1.2 Khai báo sử dụng mảng • Khai báo mảng nhiều chiều KieuDuLieu tenMang[size1][size2]…[sizek]; o Trong • sizei kích thước chiều thứ i mảng o Mảng chiều mảng nhiều chiều − Mỗi phần tử mảng mảnG => mảng nhiều chiều o Ví dụ − int a[6][5] ; //mảng chiều − int b[3][4][5]; // mảng chiều 1.2 Khai báo sử dụng mảng •Sử dụng mảng o Truy cập vào phần tử thông qua tên mảng số phần tử mảng tenMang[chỉ_số_phần_tử] oChú ý: số • Ví dụ o int a[4]; o phần tử (thứ nhất) mảng: a[0] o phần tử cuối (thứ tư) mảng: a[3] o a[i]: phần tử thứ i+1 a 1.2 Khai báo sử dụng mảng • Ví dụ (tiếp) – int b[3][4]; – phần tử mảng: b[0] mảng chiều – phần tử mảng b[0]: b[0][0] – b[i][j]: phần tử thứ j+1 b[i], b[i] phần tử thứ i+1 b 10 2.1 Khái niệm xâu kí tự •So sánh – Xâu kí tự mảng kí tự? • Tập hợp kí tự viết liên tiếp • Sự khác biệt: xâu kí tự có kí tự kết thúc xâu, mảng kí tự khơng có kí tự kết thúc xâu – Xâu kí tự “A” kí tự ‘A’? o ‘A’ kí tự o “A” xâu kí tự, ngồi kí tự ‘A’ cịn có kí tự ‘\0’ => gồm kí tự 49 2.2 Khai báo sử dụng xâu • Khai báo xâu o Cú pháp char tenXau [kích_thước]; o Lưu ý: − Để lưu trữ xâu có n kí tự cần mảng có kích thước n+1 − Ví dụ • Để lưu trữ xâu “Tin hoc” phải khai báo xâu có số phần tử tối đa char str [8]; 50 2.2 Khai báo sử dụng xâu • Khai báo xâu o Cú pháp char tenXau [kích_thước] = Giá_trị; o Lưu ý: − kích_thước ≥ độ dài (Giá_trị) + − Có thể khơng cần khai báo kích_thước: kích thước biến tenXau độ dài (Giá_trị) + o Ví dụ char str1[10] = “PNKA”; char str2[5] = “COMPUTER”; //Lỗi char str3[ ] = “COM”; //Đúng 51 2.2 Khai báo sử dụng xâu • Truy cập vào phần tử xâu o Cú pháp tenXau [chỉ_số_của_kí_tự] o Ví dụ char quequan[10]; Giả sử xâu có nội dung “Ha noi” quequan[0] quequan[1] quequan[6] quequan[7] ‘H’ ‘a’ ‘i’ ‘\0 52 Khai báo số có kiểu xâu ký tự • Sử dụng #define #define TEN_XAU Giá_trị Ví dụ: #define DAI_HOC “PNK” • Sử dụng từ khóa const const char TEN_XAU[Kích_thước] = Giá_trị; • Ví dụ: const char DAI_HOC[3] = “PNK”; o Khi khai báo với từ khóa const, kích thước phải đủ để chứa ký tự ‘\0’ => Tốt hơn: khơng khai báo kích thước xâu ký tự 53 2.3 Các hàm xử lý kí tự • Tệp tiêu đề sử dụng: ctype.h o char toupper(char ch): chuyển kí tự thường thành kí tự hoa char ch = ‘a’; ch = toupper(ch);// ch = ‘A’; ch = toupper(‘B’);//ch = ‘B’; o char tolower(char ch): chuyển kí tự hoa thành kí tự thường char ch = ‘A’; ch = tolower(ch);// ch = ‘a’; ch = tolower(‘b’);//ch = ‘b’; 54 2.3 Các hàm xử lý kí tự • int isalpha(char ch): kiểm tra xem kí tự có phải chữ hay khơng (‘a’…’z’,’A’, ’Z’) • int isdigit(char ch): kiểm tra chữ số (‘0‘,‘1‘, ‘9‘) • int islower(char ch): kiểm tra chữ thường • int isupper(char ch): kiểm tra chữ hoa • int iscntrl(char ch): kiểm tra kí tự điều khiển (0-31) • int isspace(char ch): kiểm tra kí tự dấu cách (mã 32), xuống dịng (‘\n’ 10), đầu dòng (‘\r’ 13), tab ngang (‘\t’ 9), tab dọc (‘\v’ 11) trả khác đúng, ngược lại trả 55 2.3 Các hàm xử lý kí tự #include #include #include int main(){ char ch; printf(“Nhap vao mot ki tu: “); fflush(stdin); scanf(“%c”, &ch); 56 2.3 Các hàm xử lý kí tự if(isupper(ch)){ printf(“Ki tu la chu hoa\n”); printf(“Ki tu chu thuong tuong ung %c\n”, tolower(ch)); }else if(islower(ch)){ printf(“Ki tu la chu thuong\n”); printf(“Ki tu chu hoa tuong ung %c\n”, toupper(ch)); } getch(); return 0; } 57 2.3 Các hàm xử lý kí tự • Vào xâu kí tự o Tệp tiêu đề: stdio.h o Nhập xâu kí tự − gets(tenXâu); − scanf(“%s”,&tenXau); o Hiển thị xâu kí tự − puts(tenXau); − printf(“%s”, tenXau); o Sự khác gets scanf? 58 2.4 Các hàm xử lý xâu kí tự • Tệp tiêu đề: string.h o int strlen(char[] ten_xau): trả độ dài xâu tính đến trước ký tự ‘\0’ xâu char s[] = “Tin hoc dai cuong”; int n; n = strlen(s);// n = ? s[7] = 0; n = strlen(s);// n = ? printf(”Xau: %s”,s)//Hiển thị? 59 2.4 Các hàm xử lý xâu kí tự •strcpy(char[] xauDich, char[] xauNguon): chép nội dung xauNguon xauDich – Lưu ý: không dùng phép gán giá trị cho biến xâu char s1[] = “Tin hoc”, s2[10]; strcpy(s2, s1);// s2 = “Tin hoc” strcpy(s1, “Tin hoc dai cuong”); 60 2.4 Các hàm xử lý xâu kí tự • int strcmp(char[] xâu_thứ_nhất, char[] xâu_thứ_hai): so sánh hai xâu – giá trị : hai xâu giống – giá trị0: xâu thứ lớn xâu thứ hai • Quy tắc: so sánh ký tự từ đầu xâu – Xâu xuất ký tự có mã ASCII lớn trước lớn – Tất ký tự giống hai xâu • Ví dụ: “Tin hoc” > “TIN hoc dai cuong” “Tin hoc” = “Tin hoc” 61 Hàm int strcmp( ) – Ví dụ char s1[30], s2[20]; printf(“Nhap xau thu nhat:”); fflush(stdin); gets(s1); printf(“Nhap xau thu hai:”); fflush(stdin); gets(s2); if (strcmp(s1,s2)>0) printf (“Xau thu nhat lon hon”); else if(strcmp(s1,s2)

Ngày đăng: 26/12/2021, 09:18

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

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

Tài liệu liên quan