Bài 1: Nhập xâu kí tự bất kì a) Đếm số lần xuất hiện của 1 kí tự nào đó trong câu.b) Liệt kê các kí tự có mặt trong xâu cùng số lần xuất hiện của các kí tự đó.Bài giải:uses crt;var str:string<100>;chu:array<#1..#254> of integer;i:integer;ch:char;beginclrscr;for ch:=#1 to #254 do chu:=0;write(” Nhap chuoi = “);readln(str);for i:=1 to length(str) do(chu)>):=chu)> +1;writeLn(“Cac ki tu trong xau la:”);for ch:=#1 to #254 doif chu>0 then writeln(ch, “: xuat hien “,chu,” lan”);readln;end.Bài 2: Nhập 1 xâu kí tự.a) Xét xem trong xâu có K kí tự kề nhau mà như nhau hay không?b) Hãy xóa đi kí tự kề nhau mà như nhau, chỉ giữ lại một.Bài giải:uses crt;var ch:string<100>; i,k,d,d1,n:integer;(*****)function xoa:boolean;var i:integer;begin xoa:=false; for i:=1 to length(ch)-1 do if ch=ch then begin delete(ch,i,1); xoa:=true; exit end;end;(*****)beginclrscr; write(“Nhap chuoi :”);readln(ch); write(“Nhap ki tu K:”);readln(k); n:=length(ch); d:=0;d1:=0; for i:=1 to n-1 do begin if ch=ch then inc(d1) else d1:=0; if d1+1>=k then inc(d); end; if d>0 then writeln(“Co “,k,” ki tu nhu nhau”) else writeln(“Khong co “,k,” ki tu nhu nhau”); while xoa do; write(“In lai xau sau khi xoa:”); writeln(ch);readln;end.Bài 3: Nhập 1 xâu kí tự. Kiểm tra tính đối xứng của xâu đó. Nếu xâu không đối xứng thì đảo xâu.Bài giải:uses crt;var str,s:string<100>;n,i:integer;(*****)procedure sx(var a,b:char);var tam:char;begin tam:=a; a:=b; b:=tam;end;procedure dao(n,i:integer);var j:integer;begin for j:=i+1 to n do if str=str then begin sx(str,str); exit end;end;(*****)beginclrscr; write(“Nhap xau:”);readln(str); n:=length(str); s:=””; for i:=n downto 1 do s:=s+str; if str=s then writeln(“Chuoi doi xung:”) else begin writeln(“Chuoi ko doi xung, chuoi da dao doi xung:”); for i:=1 to n-1 do dao(n,i); end; writeln(str);readln;end.Bài 4: Cho 1 xâu kí tự. Tính xem trong số đó có bao nhiêu loại kí tự khác nhau ( không phân biệt in hoa hay in thường).Bài giải:uses crt;var s:string;i,j,dem:integer;t:boolean;beginclrscr; write(“Nhap xau:”);readln(s); dem:=0; for i:=1 to length(s) do begin t:=false; for j:=1 to i-1 do if((s)=(s)) then t:=true; if not(t) then inc(dem); end; write(“Co “,dem,” ki tu khac nhau.”);readln;end.Bài 5: Cho 1 xâu kí tự bất kì, tính:a) Số lượng các kí tự số.b) Số lượng các kí tự chữ cái.Bài giải:uses crt;const so: set of char=<"0","1","2","3","4","5","6","7","8","9">;var st,b:string; a:array<1..100> of integer; i,j,l,n,dem,dem1,c:integer;(*****)procedure sx(var x,y:integer);var tam:integer;begin tam:=x; x:=y; y:=tam;end;(*****)beginclrscr; write(“nhap xau:”);readln(st); dem:=0; dem1:=0; for i:=1 to length(st) do begin if (st in<"0".."9">) then inc(dem); if (upcase(st) in<"A".."Z">) then inc(dem1); end; write(“Co “,dem1,” chu cai.”); writeln; writeln(“Co “,dem,” chu so.”); l:=length(st); i:=1; n:=0; repeat if (st in so) then begin b:=””; repeat b:=b+st; inc(i); until (not(st in so)) or (i>l); inc(n); val(b,a,c); end; inc(i); until i>l; for i:=1 to n do write(a:5); writeln; writeln(“Sx tang:”); for i:=1 to n-1 do for j:=i to n do if a for i:=1 to n do write(a:5);readln;end.Bài 6: Cho 1 xâu kí tự bất kì (cả số lẫn chữ). Viết chương trình tách các phần là số của xâu trên và đưa ra 1 mảng số nguyên.Bài giải:uses crt;const so: set of char=<"0","1","2","3","4","5","6","7","8","9">;var a:array<1..100> of integer;st,b:string;c,l,i,n,j:integer;(*****)procedure sx(var x,y:integer);var tam:integer;begin tam:=x; x:=y; y:=tam;end;(*****)beginclrscr; write(“Nhap xau:”);readln(st); l:=length(st); i:=1; n:=0; repeat if (st in so) then begin b:=””; repeat b:=b+st; inc(i); until (not(st in so)) or (i>l); inc(n); val(b,a,c); end; inc(i); until i>l; for i:=1 to n do write(a:5); writeln; write(“Sx tang:”); writeln; for i:=1 to n-1 do for j:=i to n do if a for i:=1 to n do write(a:5);readln;end.Bài 7: Nhập vào 1 xâu. Biến đổi thành chữ in hoa.Bài giải:uses crt;var s:string; i,k:integer;beginclrscr; write(“Nhap xau:”);readln(s); write(“Bien doi in hoa:”); for i:=1 to length(s) do write(upcase(s));readln;end.Bài 8: Nhập vào 1 xâu. Biến đổi in thường.Bài giải:uses crt;var s:string; i:integer;beginclrscr; write(“Nhap xau:”);readln(s); for i:=1 to length(s) do if s in <"A".."Z"> then s:=chr(ord(s)+32); write(“Bien doi thuong:”,s);readln;end.Bài 9: Nhập vào 1 chuỗi, in ra chuỗi ngược.Bài giải:uses crt;var s:string; i:integer;beginclrscr; write(“nhap chuoi:”);readln(s); write(“Chuoi nguoc:”); for i:=length(s) downto 1 do write(s);readln;end.Bài 10: Nhập vào danh sách HS 1 lớp.
Sắp xếp lại danh sắp theo thứ tự tăng dần theo chiều dài của tên.Bài giải:uses crt;var hs:string; i,j,n:integer;(******)procedure sx(var a,b:integer);var tam:integer;begin tam:=a; a:=b; b:=tam;end;(******)beginclrscr; write(“Nhap so HS:”);readln(n); for i:=1 to n do begin write(“Ten HS thu “,i,” :”);readln(hs); end; for i:=1 to n-1 do for j:=i+1 to n do if length(hs) > length(hs) then sx(hs,hs); writeln(“Sx theo do dai ten:”); for i:=1 to n do writeln(hs);readln;end.Bài 11: Nhập vào họ tên bất kì sau đó biến đổi các chữ cái đầu tiên là in hoa.Bài giải:uses crt;const chu=<"a".."z">; var hoten:string; i,k:integer;beginclrscr; write(“Nhap ho ten:”);readln(hoten); k:=length(hoten); if hoten<1> in chu then hoten<1>:=upcase(hoten<1>); for i:=2 to k do if (hoten=#32) and (hoten in chu) then hoten:=upcase(hoten); write(“sau khi bien doi:”,hoten);readln;end.Bài 12: Nhập vào 1 đoạn văn. Tính số câu.Bài giải:uses crt;var s:string; i,d:integer;beginclrscr; write(“Nhap 1 doan:”);readln(s); for i:=1 to length(s) do if s=”.” then inc(d); write(“Doan tren co “,d,” cau.”);readln;end.Bài 13: Nhập vào 1 số, xóa bỏ các chữ số lẻ. Xuất kết quả dưới dạng đối xứng của phần còn lại.Vd:1 2 4 5 6 –> 2 4 6 6 4 2Bài giải:uses crt;const so=<"1","3","5","7","9">;var s:string; i:integer;beginclrscr; write(“Nhap 1 day so:”);readln(s); i:=1; while i if s in so then begin delete(s,i,1); i:=1; end else inc(i); write(“Sau khi xoa cac so le va bien doi doi xung:”,s); for i:=length(s) downto 1 do write(s);readln;end.Bài 14: Nhập vào 1 số, xóa bỏ các chữ số chẵn. Kiểm tra số còn lại có bao nhiêu chữ số. Xuất kết quả dưới dạng đối xứng của phần còn lại.Bài giải:uses crt;const so=<"0","2","4","6","8">;var s:string; i,dem:integer;beginclrscr; dem:=0; write(“Nhap 1 day so:”);readln(s); i:=1; while i if s in so then begin delete(s,i,1); i:=1; end else inc(i); for i:=1 to length(s) do dem:=dem+1; writeln(“Sau khi xoa cac so chan con “,dem,” so le .”); write(“Sau khi xoa cac so chan va bien doi doi xung :”,s,” “); for i:=length(s) downto 1 do write(s);readln;end.Bài 15: Nhập chuỗi gồm cả chữ và số. Xuất ra màn hình các số riêng và các chữ riêng. Hãy đếm số lần xuất hiện của mỗi chữ, mỗi số.Bài giải:uses crt;var s:string; dem:array<#1..#254> of integer; i:integer; chu:char;begin clrscr; write(“Nhap chuoi gom chu va so:”);readln(s); for chu:=#1 to #254 do dem:=0; writeln(“Chu:”); for i:=1 to length(s) do if upcase(s) in <"A".."Z"> then begin write(s); dem)>:=dem)> +1; end; writeln; writeln(“So:”); for i:=1 to length(s) do if s in <"0".."9"> then begin write(s); dem>:=dem> +1; end; writeln; for chu:=#1 to #254 do if dem0 then writeln(chu,” xuat hien “,dem,” lan”); readln;end.Bài 16: Nhập 1 xâu kí tự và bỏ đi tất cả các khoảng trống bên trái của nó.Bài giải:uses crt;var s,t:string; i,p:integer;begin clrscr; write(“Nhap chuoi:”);readln(s); writeln(“khoang trong ben trai cua chuoi da bo, chuoi:”); while s<1>=#32 do delete(s,1,1); write(s); readln;end.Bài 17: Dùng hàm “copy”. Tách từ đầu tiên ra khỏi 1 xâu kí tự cho trước.Bài giải:uses crt;var s:string; i:integer;begin clrscr; write(“Nhap chuoi:”);readln(s); writeln(“Tach tu dau tien ra khoai xau:”); write(copy(s,1,1)); readln;end.