Bài giảng Nhập môn lập trình - Chương 8: Chuỗi
8
CHUỖI
NỘI DUNG CHÍNH
Mục tiêu chính của chương này gồm có các nội dung sau
NHẬP CHUỖI
KHAI BÁO CHUỖI
Nhập dữ liệu từ bàn phím
Khai báo biến để chứa chuỗi
XUẤT CHUỖI
THAO TÁC CHUỖI
Xuất chuỗi ra màn hình
Thao tác cơ bản với chuỗi
Các mã nguồn được trình bày trong sách có thể được tải tại địa chỉ
Chương 8 – Chuỗi
1
8.1. VÍ DỤ MẪU ÔN LẠI KIẾN THỨC
1. Nhập và xuất chuỗi
Yêu cầu
Viết chương trình nhập vào họ tên của một người,
in chuỗi “Xin chào “ + họ tên vừa nhập ra màn hình.
Mã nguồn
C
C++
#include <iostream>
#include <string>
#include <stdio.h>
#include <conio.h>
using namespace std;
void main()
{
void main()
const int MAX = 100;
{
char buffer[MAX];
string buffer;
cout << "Nhap vao ho ten:";
printf("Xin nhap ho ten:");
gets_s(buffer);
getline(cin, buffer);
cout << "Xin chao " << buffer;
cin.get();
printf("Xin chao %s", buffer);
_getch();
}
}
Chương 8 – Chuỗi
2
2. Nhập và xuất chuỗi – Vấn đề bộ đệm
Bài toán: Nhập vào năm hiện tại và họ tên, xuất ra lời chào “Xin chào “ + họ tên + Năm hiện tại
Mã nguồn tham khảo
C
C++
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <string>
using namespace std;
void main()
{
void main()
int year;
{
printf("Nhap vao nam hien tai:");
scanf_s("%d", &year);
int year;
cout << "Nhap vao nam hien tai:";
cin >> year;
const int MAX = 100;
char name[MAX];
string name;
printf("Nhap vao ho ten:");
gets_s(name);
cout << "Nhap vao ho ten:";
getline(cin, name);
printf("Xin chao %s, %d", name, year);
_getch();
cout << "Xin chao " << name << " " << year;
cin.get();
}
}
Vấn đề
Sau khi nhập năm, các thông báo trở nên lộn xộn và không
dừng lại để đợi nhập họ tên. Nguyên nhân là ta còn sót lại
kí tự xuống hàng trong bộ đệm nhập.
Để giải quyết, ta cần xóa bỏ các kí tự dư thừa trong bộ đệm.
Mã nguồn cập nhật – Bỏ kí tự thừa trong bộ đêm
Chương 8 – Chuỗi
3
C
C++
int year;
int year;
printf("Nhap vao nam hien tai:");
scanf_s("%d", &year);
cout << "Nhap vao nam hien tai:";
cin >> year;
getchar(); // Bỏ qua kí tự xuống hàng còn sót
fseek(stdin, 0, SEEK_END); // Về lại đầu bộ đệm
Ghi chú: Tránh dùng fflush(stdin) vì sẽ tạo ra cách hành xử không xác định trước.
Có một phương án khác để xóa bộ đệm như sau
int c;
while ( (c = getchar()) != '\n' && c != EOF ) { }
3. Nối hai chuỗi
Nhập vào hai chuỗi, nối hai chuỗi này thành một chuỗi mới
Mã nguồn tham khảo
C
C++
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <iostream>
#include <string>
using namespace std;
#include <malloc.h>
void main()
void main()
{
{
string buffer1;
const int MAX = 100;
char buffer1[MAX];
char buffer2[MAX];
cout << "Nhap chuoi thu nhat:";
getline(cin, buffer1);
string buffer2;
printf("Nhap chuoi thu nhat:");
gets_s(buffer1);
cout << "Nhap chuoi thu hai:";
getline(cin, buffer2);
Chương 8 – Chuỗi
4
printf("Nhap chuoi thu hai:");
gets_s(buffer2);
string buffer = buffer1 + buffer2;
cout << "Chuoi tong hop la:" << buffer;
}
int len1 = strlen(buffer1);
int len2 = strlen(buffer2);
int totalLen = len1 + len2 + 1;
char* buffer = (char*)malloc(totalLen *
sizeof(char));
strcpy_s(buffer, totalLen, buffer1);
strcat_s(buffer, totalLen, buffer2);
printf("Chuoi tong hop la: %s", buffer);
_getch();
free(buffer); // Thu hồi vùng nhớ
}
Chương 8 – Chuỗi
5
8.2. CÁC BÀI TẬP ÔN LẠI KIẾN THỨC
1.Thao tác với chuỗi đơn
Nhập vào ba chuỗi họ tên của hai người khác nhau.
a. Cho biết độ dài của từng chuỗi họ tên này
b. Chuẩn hóa chuỗi họ tên theo qui tắc sau:
+ Không có kí tự khoảng trắng ở đầu và cuối chuỗi
+ Chỉ có một khoảng trắng phân tách giữa các thành phần Họ, Tên lót, Tên.
+ Các kí tự đầu tiên của Họ, Tên lót, Tên được viết hoa, các kí tự khác viết thường.
Ví dụ
Nhập vào: “ nGUyen aNH TuNG “
Kết quá: “Nguyen Anh Tung”
c. So sánh hai chuỗi họ tên sau khi chuẩn hóa, xác định ai xuất hiện trước ai theo thứ tự từ điển
tăng dần trong danh sách, sắp xếp theo tên, tên lót, họ.
Xuất ra màn hình 3 chuỗi họ tên đã sắp xếp.
d. Loại bỏ các tên lót nếu là “Văn” hoặc “Thị”
c. Nếu là họ “Trần” thì thay bằng từ viết tắt “T.”, nếu là họ “Nguyễn” thì thay thế bằng “N.”
2. Trong mã số sinh viên, năm nhập học là hai kí tự đầu tiên, mã ngành học là kí tự thứ 3.
Hãy nhập vào một mã số sinh viên, cho biết năm nhập học và mã ngành của của sinh viên này.
Ví dụ
1315689 => Năm nhập học: 2013, Mã ngành học: 1
3. Nhập vào hai chuỗi biểu diễn hai phân số, in ra màn hình tổng hai phân số này.
Ví dụ:
Nhập phân số thứ nhất: 3/8
Nhập phân số thứ hai: 1/8
In ra màn hình: 1/2
Chương 8 – Chuỗi
6
4. Thao tác với câu
Nhập vào một câu
a. Cho biết câu có bao nhiêu từ
b. Cho biết những từ xuất hiện nhiều hơn 1 lần.
c. Thống kê số lần xuất hiện của từng từ trong câu.
Chương 8 – Chuỗi
7
8.3. ĐỒ ÁN NHỎ VẬN DỤNG
1. Một chủ nhà nọ đang tính lát lại gạch cho tầng trệt. Hãy giúp ông ta tính toán số tiền cần
thiết phải bỏ ra để mua đủ gạch.
Chương 8 – Chuỗi
8
8.4. BÀI TẬP NÂNG CAO
1. Hoán vị hai số nguyên không dùng biến trung gian.
Lấy số thực này + 0.5, sau đó ép kiểu về số nguyên. Kĩ thuật này có tên gọi là Đặt ống nhún.
Chương 8 – Chuỗi
9
8.5. TIẾNG ANH CHUYÊN NGÀNH
2.5.1. Chọn đáp án đúng nhất
1.
2.
3.
2.5.2. Lựa chọn từ để điền vào chỗ trống còn thiếu
a. [1
a. errors
b. programming language
c. source code
d. hello world
e. compiling
-- END --
Chương 8 – Chuỗi
10
Bạn đang xem tài liệu "Bài giảng Nhập môn lập trình - Chương 8: Chuỗi", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
bai_giang_nhap_mon_lap_trinh_chuong_8_chuoi.docx

