Bài tập Pascal – Phần biến chuổi ký tự String
Bài 01 – String (Chuổi)
(Ch: String là mảng ngầm chứa các Ký tự, TD: Ch=’abc’ thì Ch[1]=’a’, Ch[2]=’b’, Ch[3]=’c’ )
Bạn hãy nhập một chuổi và in ra chuổi ñảo ngược của chuổi ñó. TD: 'abcd' => 'dcba'
Var
Ch: String;
i: Integer;
Begin
WriteLn('Hay nhap chuoi');
ReadLn(Ch);
{In chuổi ñã nhập}
WriteLn('Chuoi da nhap la:');
For i:=1 to Length(Ch) do Write(Ch[i]); {Length('abc') = 3}
WriteLn;
{In chuổi ñảo ngược}
WriteLn('Chuoi dao nguoc la:');
For i:= Length(Ch) downto 1 do Write(Ch[i]);
WriteLn;
ReadLn;
End.
Bài 02 – Đếm số từ của Chuổi
(Chuổi Nguyen Van An có 3 từ)
Bạn hãy nhập một Chuổi và ñếm số từ trong chuổi ñó.
Var
Ch: String;
i: Integer;
Begin
WriteLn('Hay nhap chuoi');
ReadLn(Ch);
{In chuổi ñã nhập}
WriteLn('Chuoi da nhap la ', Ch);
{Đếm số từ trong chuổi = Số ký tự trống '_' + 1}
For i:= 1 to Length(Ch) do
If Ch[i] = ' ' then Inc(SoTu); {Inc: Ham tang gia tri của bien len 1}
WriteLn('So tu trong chuoi la ', SoTu + 1);
ReadLn;
End.
Biên soạn: Th.s Nguyễn Anh Việt
Trang 1
Bài tập Pascal – Phần biến chuổi ký tự String
Nhưng nếu nhập vào các chuổi sai như _Nguyen_Van_An, Nguyen_Van_An_ hay Nguyen_ _Van_An
thì chương trình sẽ chạy sai. Chương trình ñúng xử lý ñược các trường hợp nhập sai như trên là:
Var
Ch: String;
i, BD, SoTu: Integer;
Begin
WriteLn('Hay nhap chuoi');
ReadLn(Ch);
{In chuổi ñã nhập}
WriteLn('Chuoi da nhap la ', Ch);
{Tìm vị trí ký tự hợp lệ ñầu tiên ở ñầu chuổi, TD: '_ _abc' => BD = 3}
BD := 1;
While Ch[BD] = ' ' do Inc(BD);
{Đếm số từ trống trong chuổi từ vị trí bắt ñầu BD}
For i:= BD to Length(Ch) do begin
If (Ch[i]= ' ') and (Ch[i+1]= ' ') then Continue;
If (Ch[i] = ' ') and (i < Length(Ch)) then Inc(SoTu);
End;
WriteLn('So tu trong chuoi la ', SoTu + 1);
ReadLn;
End.
Bài 03 – Chuổi ñối xứng
(Các chuổi abccba hay abcba ñều là chuổi ñối xứng)
Bạn hãy nhập một chuổi và kiềm tra xem chuổi ñó có ñối xứng hay không.
TD: abcba => Chuoi doi xung, abcbd => Chuoi khong doi xung
Var
Ch: String;
i: Integer;
DoiXung: Boolean;
Begin
WriteLn('Hay nhap chuoi');
ReadLn(Ch);
{Xác ñịnh chuổi ñối xứng hay không}
DoiXung := True;
For i:=1 to Length(Ch) div 2 do {Số lần so sánh=ñộ dài chuổi/2 bỏ số lẻ}
If Ch[i] <> Ch[n+1-i] then begin DoiXung := False; Break; End;
If DoiXung = True then
WriteLn('Chuoi ', Ch, ' doi xung') Else WriteLn('Chuoi ', Ch, ' khong
doi xung');
ReadLn;
End.
Biên soạn: Th.s Nguyễn Anh Việt
Trang 2
Bài tập Pascal – Phần biến chuổi ký tự String
Bài 04 – Chuổi chữ thường abc thành chuổi chữ in hoa ABC
Víết chương trình nhập một chuổi chữ thường, in thành chuổi chữ in hoa.
Chú ý:
- Dùng hàm Ord() ñể lấy thứ tự của ký tự (Ord(‘a’) = 97, Ord(‘b’) = 98, …)
- Trừ cho 32 ñể biến thành chữ in hoa (97 – 32 = 65 => A, 98 – 32 = 66 => B, …)
- Dùng hàm Chr() ñể trả về ký tự (Chr(65)= ‘A’, Chr(66) = ‘B’, …)
Var
Ch: String;
i: Integer;
Begin
WriteLn('Hay nhap chuoi');
ReadLn(Ch);
{In ra chuổi chữ in hoa}
For i:=1 to Length(Ch) do
Ch[i] = Chr(Ord(Ch[i]) – 32);
WriteLn('Chuoi doi thanh chu in hoa la ', Ch);
ReadLn;
End.
Bài 05 – Chuổi chữ in hoa ABC thành chữ thường abc
Víết chương trình nhập một chuổi chữ in hoa, in thành chuổi chữ thường.
Chú ý:
- Dùng hàm Ord() ñể lấy thứ tự của ký tự (Ord(‘A’) = 65, Ord(‘B’) = 66, …)
- Cộng với 32 ñể biến thành chữ thường (65 + 32 = 97 => a, 66 + 32 = 98 => b, …)
- Dùng hàm Chr() ñể trả về ký tự (Chr(97)= ‘a’, Chr(98) = ‘b’, …)
Bài 06 – Chuổi chữ thường abc thành chữ in hoa ñảo ngược CBA
Víết chương trình nhập một chuổi chữ thường, TD : Nhập chuổi 'abcd', in thành chuổi chữ hoa ñảo
ngược 'DCBA'.
Bài 07 – Số lần xuất hiện của Ký tự trong chuổi (ký tự T xuất hiện 5 lần trong chuổi Trường
PTTH chuyên Lý Tự Trọng)
Viết chương trình ñếm số lần xuất hiện của một ký tự trong chuổi, TD : Nhập ký tự 'T' và chuổi
'Truong PTTH chuyen Ly Tu Trong' sẽ in ra 'Ky tu T xuat hien trong chuoi Truong PTTH chuyen Ly
Tu Trong 5 lan'.
Var
Ch: String; KT: Char;
I, Dem: Integer;
Begin
WriteLn('Hay nhap chuoi');
ReadLn(Ch);
Biên soạn: Th.s Nguyễn Anh Việt
Trang 3
Bài tập Pascal – Phần biến chuổi ký tự String
WriteLn('Nhap Ky tu can tim');
ReadLn(KT);
{Đếm số lần xuất hiện}
For i:=1 to Length(Ch) do
If Ch[i] = KT then Inc(Dem);;
WriteLn('Ky tu ', KT, ' xuat hien trong chuoi ', Ch, ' ', Dem, ' lan');
ReadLn;
End.
Biên soạn: Th.s Nguyễn Anh Việt
Trang 4