Bài giảng Lập trình C++ Chương 4: Kiểu mảng và chuỗi ký tự

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ên

pdf49 trang | Chia sẻ: maiphuongtl | Lượt xem: 12602 | Lượt tải: 5download
Bạn đang xem trước 20 trang tài liệu Bài giảng Lập trình C++ Chương 4: Kiểu mảng và chuỗi ký tự, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
1/54Ngôn ngữ lập trình C++ 41 LẬP TRÌNH C++ (3 Tín chỉ) Gv: Nguyễn Văn Hùng Khoa: Khoa học máy tính Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 2/44 CHƯƠNG 4: MẢNG VÀ CHUỖI KÝ TỰ  Mục tiêu  Giớ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 dung  Khái niệm mảng  Mảng một chiều  Mảng hai chiều  Chuỗi ký tự Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 3/44  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ảng Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 4/44 1. Khai báo 2. 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ú p áp: Kiểu Tên mảng[Số p ầ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ẽ à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ều a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 5/44  Khai báo mảng với số phần tử xác định 4.2 Mảng một chiều Ví dụ: float Sothuc[5]= {2.3, 1.5, 0.34, 5.04, 7.213}; Có 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 }; Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 6/44  Khai báo mảng với số phần tử xác định Ví 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ều Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 7/44 1. 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àm 4.2 Mảng một chiều Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 8/44  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ảng Cú 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 Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 9/44  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àm Ví 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 Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 10/44  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ều Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 11/44 Mỗi được truy cập thông qua - Tên mảng - Chỉ số đặt trong cặp dấu [ ] phần tử mảng Ten_mang Chi_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: a Chỉ số (vị trí) 0 1 2 ..………… 49 Phần tử: Thứ nhất Thứ hai Thứ ba Cuối cùng 4.2 Mảng một chiều 2. Truy cập phần tử mảng Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 12/44 2. Truy cập phần tử mảng Vớ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ến Ví 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]<<a[1]<<a[2]<<endl; 4.2 Mảng một chiều Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 13/44 2. Truy cập phần tử mảng Ví dụ 2: Khai báo mảng số thực gồm 10 phần tử. Nhập các giá trị vào cho các phần tử mảng sau đó hiển thị ra màn hình các giá trị vừa nhập. float a[10]; cout>a[0]; cout>a[1]; cout>a[2]; …. 4.2 Mảng một chiều Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 14/44 2. Truy cập phần tử mảng float a[10]; cout<<"Nhap gia tri vao: "; for (int i=0;i<=9;i++) cout>a[i]; cout<<"Cac gia tri vua nhap la: "<<endl; for (i=0;i<10;i++) cout<<a[i]<<"\t"; cout<<endl; 4.2 Mảng một chiều Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 15/44 Lưu ý: - C++ là ngôn ngữ không hỗ trợ cơ chế kiểm tra biên; có nghĩa là nếu truy cập vào phần tử mảng mà chỉ số mảng nhỏ hơn 0 hoặc lớn hơn so_phan_tu – 1 thì chương trình vẫn không bị lỗi. Ví dụ: đoạn chương trình sau không bị lỗi int a[10], i; for (i=0; i<100; i++) a[i] = i; 4.2 Mảng một chiều Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 16/44 Bài tập 1: Khai báo mảng số nguyên gồm 20 phần tử. Nhập giá trị vào cho các phần tử mảng sau đó in ra các giá trị vừa nhập. Bài tập 2: Viết chương trình nhập giá trị vào cho các phần tử mảng số thực gồm n phần tử (với n nguyên dương được nhập vào từ bàn phím). Sau đó, tính và in ra tổng giá trị của các phần tử mảng. 4.2 Mảng một chiều Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 17/44 1. Khái niệm Mảng hai chiều là mảng trong đó kiểu phần tử của mảng là kiểu mảng. 2. Khai báo - 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 định 4.3 Mảng hai chiều Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 18/44 - Khai báo mảng với số phần tử xác định Cú pháp: Kiểu_dl Tên_mảng[số_ptử_chiều_1] [số_ptử_chiều_2]; Trong đó: Kiểu_dl: có thể là các kiểu dữ liệu cơ bản hoặc kiểu dữ liệu có cấu trúc Số_ptử_chiều_1, Số_ptử_chiều_2: là hằng số nguyên hoặc biểu thức mà kết quả trả về là hằng số nguyên. 4.3 Mảng hai chiều Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 19/44 - Khai báo mảng với số phần tử xác định Ví dụ: Ta có khai báo mảng 2 chiều gồm 3 hàng, 4 cột lưu trữ các số nguyên như sau: int SoNguyen[3][4]; Lúc này, mày sẽ cấp phát vùng nhớ để lưu trữ mảng như sau: Hàng 1,chỉ số 0 Hàng 2, chỉ số 1 Hàng 3,chỉ số 2 Cột 1 Cột 4 4.3 Mảng hai chiều Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 20/44 - Khai báo mảng với số phần tử xác định Ta có thể vừa khai báo vừa gán giá trị cho phần tử mảng. Cú pháp: Kiểu_dl Tên_mảng[số_pt_chiều_1][số_pt_chiều_2] = {các giá trị cần gán}; Ví dụ: Ta có khai báo double A[2][3] = {{2.45, 3.33, 1.07},{9.0, 6.57, -4.03}}; 4.3 Mảng hai chiều Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 21/44 - Khai báo mảng với số phần tử không xác định Tuy khai báo mảng với số phần tử không xác định nhưng vẫn phải chỉ ra số phần tử của chiều thứ 2. Cách khai báo này được áp dụng trong hai 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àm 4.3 Mảng hai chiều Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 22/44 - 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ảng Cú pháp: Kiểu_dl Tên_mảng[][số_pt_chiều_2]={các giá trị cần gán}; Ví dụ: Ta có khai báo float A[][3] = {{2.45, 3.33, 1.07},{9.0, 6.57, -4.03}}; 4.3 Mảng hai chiều Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 23/44 - 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àm Cú pháp: Kiểu_dl Tên_hàm(kiểu_dl Tên_mảng[][số_pt_chiều2],…); Ví dụ: Ta có khai báo hàm tính tổng các phần tử của mảng: int Tong(int A[][10], int m, int n); 4.3 Mảng hai chiều Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 24/44 3. Truy cập phần tử mảng - Phần tử mảng được truy cập thông qua tên mảng theo sau là các chỉ số hàng, cột và được đặt trong cặp dấu ngoặc vuông [] Cú pháp: Tên_mảng[chỉ_số_1][chỉ_số_2]; Ví dụ: Để truy cập đến phần tử đầu tiên của mảng 2 chiều A ta viết: A[0][0] - Lúc này Tên_mảng[chỉ_số_1][chỉ_số_2] được xem như là một biến độc lập có kiểu dữ liệu là kiểu dữ liệu của mảng. Do đó, các thao tác trên phần tử mảng cũng giống như với biến 4.3 Mảng hai chiều Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 25/44 Bài tập 3: Viết chương trình khai báo và gán giá trị cho mảng 2 chiều gồm 2 hàng, 3 cột các số thực. Sau đó, hiển thị ra màn hình theo dạng ma trận. Bài tập 4: Viết chương trình nhập các giá trị vào cho ma trận A gồm m hàng, n cột. Với m, n nguyên dương được nhập vào từ bàn phím. Sau đó hiển thị mảng ra màn hình theo dạng ma trận. 4.3 Mảng hai chiều Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 26/44 1. Khái niệm - Chuỗi ký tự hay còn gọi là xâu ký tự thực chất là mảng một chiều có kiểu dữ liệu là kiểu ký tự - Tuy nhiên, có điểm khác biệt giữa chuỗi ký tự và các mảng khác đó là có ký tự kết thúc xâu ở một vị trí nào đó trong mảng, thông thường là cuối chuỗi. Theo quy ước là ký tự có mã 0, ký hiệu \0 (null) - Không gán 1 bộ giá trị cho tên mảng - Không gán trực tiếp hai tên mảng cho nhau. 4.4 Chuỗi ký tự Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 27/44 2. Khai báo Cú pháp: char Tên_chuỗi[số_phần_tử]; char Tên_chuỗi[số_phần_tử] = xâu ký tự; char Tên_chuỗi[] = xâu ký tự; Trong đó: Số_phần_tử: Là số ký tự của chuỗi ký tự. Lưu ý cần khai báo thừa một ký tự để chứa ký tự kết thúc xâu. Xâu ký tự: Được đặt trong cặp dấu nháy kép " " 4.4 Chuỗi ký tự Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 28/44 Ví dụ: Xét đoạn khai báo sau: char xau1[20] = "lap trinh C++"; char xau2[20], xau3[20]; xau2 = "lap trinh C++"; xau3 = xau1; cout<<xau1<<xau2<<xau3<<endl; 4.4 Chuỗi ký tự Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 29/44 2. Truy cập phần tử chuỗi - Các thao tác với từng phần tử chuỗi ký tự cũng giống như thao tác với các phần tử mảng. - Để nhập dữ liệu cho chuỗi ký tự ta có thể sử dụng toán tử nhập cin>> song lại có nhiều hạn chế. 4.4 Chuỗi ký tự Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 30/44 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ự Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 31/44 Ví dụ: xét đoạn mã sau: char sv1[25], sv2[25]; cout<<"nhap sinh vien 1"<<endl; cin>>sv1; cout<<"nhap sinh vien 2"<<endl; cin>>sv2; cout<<sv1<<endl; cout<<sv2<<endl; 4.4 Chuỗi ký tự Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 32/44 Do đó, để nhập được dữ liệu cho biến tiếp theo ta cần xóa dữ liệu còn lưu trong cin bằng phương thức ignore. Cú pháp: cin.ignore(n, ‘ch’); 4.4 Chuỗi ký tự Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 33/44 Ví dụ: char sv1[25];char sv2[25]; cout<<"nhap sinh vien 1"<<endl; cin>>sv1; cin.ignore(20,'\n'); cout<<"nhap sinh vien 2"<<endl; cin>>sv2; cout<<sv1<<endl; cout<<sv2<<endl; 4.4 Chuỗi ký tự Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 34/44 Để nhận được đầy đủ chuỗi, ta sử dụng hàm gets() để nhập. Cú pháp: gets(biến_chuỗi); Ví dụ: char sv1[25], sv2[25]; cout<<"nhap sinh vien 1"<<endl; gets(sv1); cout<<"nhap sinh vien 2"<<endl; cin>>sv2; cout<<sv1<<endl; cout<<sv2<<endl; 4.4 Chuỗi ký tự Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 35/44 Ngoài ra chuỗi còn được khai báo bằng từ khóa string Cú pháp: string biến_chuỗi; string biến_chuỗi = giá trị; Ví dụ: string sv1, sv2="le van a"; sv1="le van b"; cout<<sv1<<endl; cout<<sv2<<endl; Lưu ý: khi khai báo chuỗi với từ khóa string, thay vì sử dụng hàm gets() để nhập. Ta sử dụng hàm getline(cin,biến_chuỗi) 4.4 Chuỗi ký tự Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 36/44 3. Một số hàm xử lý chuỗi ký tự: Các hàm xử lý chuỗi được chứa trong tệp tiêu đề string.h, do đó cần khai báo tệp tiêu đề trước khi sử dụng hàm. - Các hàm sao chép dữ liệu: strcpy(), strncpy() - Các ghép xâu: strcat(), strncat() - Các hàm so sánh xâu: strcmp(), strncmp(), stricmp() - Các hàm chuyển đổi ký tự (HOA thường): strupr(), strlwr() - Hàm lấy độ dài của xâu: strlen() 4.4 Chuỗi ký tự Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 37/44 - So sánh 2 chuổi + Phân biệt hoa – thường: strcmp() + Không phân biệt: stricmp(st1, st2) + So sánh n ký tự đầu: strncpm(st1, st2, số ký tự) - Các hàm sao chép dữ liệu: strcpy(), strncpy() + strcpy(st1, st2): copy gtri chuoi st2 gan cho st1 + strncpy(st1, st2) - Các ghép xâu: strcat(), strncat() Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 38/44 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à strncpy Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 39/44 Cú 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à strncat Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 40/44 char sv1[20]="Lap trinh C", sv2[20]="Lap Trinh C++"; cout<<strcmp(sv1,sv2)<<endl; cout<<strncmp(sv1,sv2,3)<<endl; cout<<stricmp(sv1,sv2)<<endl; cout<<strupr(sv1)<<endl<<sv1<<endl; cout<<strlwr(sv2)<<endl; cout<<strlen(sv1)<<endl; Hàm strcmp, strncmp, stricmp, … Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 41/44 1. 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? 3, 7, 11, 19 BÀI THỰC HÀNH (1/6) Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 42/44 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) Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 43/44 8. //chèn vào mảng - Tìm vị teis cần chèn và đánh dấu nó (k) - Lùi mảng 1 vị trí : Duyệt manghr từ cuối cho đến vị trí k pt(i+1)=pt(i) - Chèn m và ptu (k) //Trộn mảng: - Khởi tạo 3 biến chạy = 0, (i, j, k) - Trong khi (cả 2 mnangr chưa hết) nếu ptu(i)<ptu(j)2 ptu(k++)3 = ptu(i++)1; ngược lại ptu(k++)3=ptu(j++)2; - Nếu mảng 1 hết Trong kho mảng 2 chưa hết ptu(k++)3=ptu(j++)2; Ngc lại trong khi mảng 1 chưa hết ptu(k++)3=ptu(i++)1 Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 44/44 //Tích 2 ma trận - duyệt thro một của mảng 2 { mangr3[i][j]=0; duyệt theo cột của mang 1 mangr3[i][j]+=1[i][k]*2[k][j] 20. //Khai báo chuyooir ..Nhập chuôi //Xuất chuổi //Dem tu - dêm=0; - duyệt chuổi nếu ptu(i) khác “dấ các” và ptu thu (i+1) bằng “dấu cách” hoặc tu (i+1) bằng enter dem++; - Nếu đmé khác 0 thì thông báo có “đếm” từ Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 45/44 //đém ký tự = duyệt ký tự A đến z { dem=0 Duyệt chuổi nếu ptu(i)=kytu dem++; nếu (dem>0 ) thông báo ký tự xuất hiện “đếm” lần Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 46/44 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ên 12. 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ên 13. 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) Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 47/44 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) Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 48/44 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) Ngôn ngữ lập trình C++ Chương 4: Mảng và chuỗi ký tự 49/44 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ên BÀI THỰC HÀNH (6/6)

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

  • pdfchuong4c_2011_077.pdf
Tài liệu liên quan