Nội dung của Bài 12: Kiểu xâu dưới đây, các em sẽ được tìm hiểu về một số khái niệm về xâu, cách khai báo xâu; cách sử dụng một số thủ tục hàm thông dụng về xâu; một số chương trình đơn giản có sử dụng xâu;... Mời các em cùng theo dõi nội dung chi tiết của bài học.
Một số khái niệm:
Để mô tả kiểu xâu ta cần xác định:
Tham chiếu đến phần tử của xâu:
Dưới đây trình bày cách khai báo kiểu dữ liệu xâu, các thao tác xử lí xâu và một số ví dụ sử dụng kiểu xâu trong Pascal.
var < tên biến xâu >: string[độ dài tối đa của xâu];
Trong đó:
Ví dụ 2:
Được sử dụng để ghép nhiều xâu thành một.
Có thể thực hiện phép ghép xâu đối với các hằng và biến xâu.
Trong đó:
st: xâu.
vt: vị trí bắt đầu xóa.
n: số kí tự xóa.
Giá trị st | Thao tác | Kết quả |
'Nguyen Van A' | delete(st,8,3) | ? |
Bảng 1. Ví dụ về thủ tục xóa n kí tự
Trong đó:
s1, s2: xâu.
vt: vị trí bắt đầu chèn xâu s1.
Giá trị s1 | Giá trị s2 | Thao tác | Kết quả |
' PC ' | 'IBM486' | insert(s1,s2,4); | 'IBM PC 486' |
Bảng 2. Ví dụ thủ tục chèn xâu S1 vào xâu S2
Trong đó:
s: xâu.
vt: vị trí bắt đầu lấy trong xâu s.
n: số kí từ sé lấy.
Giá trị s | Biểu thức | Kết quả |
'Bai hoc thu 9' | copy(s,9,5); | 'thu 9' |
Bảng 3. Ví dụ hàm tạo xâu
Giá trị s | Biểu thức | Kết quả |
'500 ki tu' | length(s) | 9 |
Bảng 4. Ví dụ hàm tính độ dài xâu
Giá trị s2 | Biểu thức | Kết quả |
'abcdef' | pos('cd',s2) | 3 |
Bảng 5. Ví dụ hàm cho biết vị trí xuất hiện đầu tiền của xâu s1 trong xâu s2
upcase(B) ---> 'B'
Chương trình dưới đây nhập họ tên của hai người vào hai biến xâu và đưa ra màn hình xâu dài hơn, nếu bằng nhau thì đưa ra xâu nhập sau.
Gợi ý làm bài:
Đoạn chương trình cài đặt:
var a,b:string;
begin
write('Nhap ho ten thu nhat: '); readln(a);
write('Nhap ho ten thu hai: '); readln(b);
if length(a)>length(b) then write(a) else write(b);
readln
end.
Chương trình dưới đây nhập hai xâu từ bàn phím và kiểm tra kí tự đầu tiên của xâu thứ nhất có trùng với kí tự cuối cùng của xâu thứ hai không.
Gợi ý làm bài:
Đoạn chương trình cài đặt:
var x: byte;
a,b: string;
begin
write('Nhap xau thu nhat: '); readln(a);
write('Nhap xau thu hai: '); readln(b);
x:=length(b);
{xac dinh do dai xau b de biet vi tri cua ki tu cuoi cung}
if a[1]=b[x] then write('Trung nhau')
else write('Khac nhau');
readln
end.
Chương trình sau nhập một xâu vào từ bàn phím và đưa ra màn hình xâu đó nhưng được viết theo thứ tự ngược lại.
Gợi ý làm bài:
Đoạn chương trình cài đặt:
var i,k: byte;
a: string;
begin
write('Nhap xau:');
readln(a);
k:= length(a); {xac dinh do dai xau}
for i:= k downto 1 do write(a[i]);
readln
end.
Chương trình sau nhập một xâu vào từ bàn phím và đưa ra màn hình xâu thu được từ nó bởi việc loại bỏ các dấu cách.
Gợi ý làm bài:
Đoạn chương trình cài đặt:
var i,k: byte;
a, b: string;
begin
write('Nhap xau:');
readln(a);
k:= length(a);
b:= ' '; (* Khoi tao xau rong *)
for i:= 1 to k do
if a[i]<> ' ' then b:=b+a[i];
writeln('Ket qua: ',b);
readln
end.
Chương trình sau nhập vào từ bàn phím xâu kí tự s1, tạo xâu s2 gồm tất cả các chữ số có trong s1 (giữ nguyên thứ tự xuất hiện của chúng) và đưa kết quả ra màn hình.
Gợi ý làm bài:
Chương trình cài đặt:
program XuLiXau;
var s1, s2: string;
i: byte;
begin
write('Nhap vao xau s1: ');
readln(s1);
S2:= ' '; {Khoi tao xau s2 rong}
for i:= 1 to length(s1) do
if ('0' = < s1[i]) and (s1[i] <= '9') then s2:= s2+s1[i];
writeln('Ket qua: ', s2);
readln
end.
Sau khi học xong Bài 12: Kiểu xâu, các em cần nắm vững các nội dung trọng tâm:
Các em có thể hệ thống lại nội dung kiến thức đã học được thông qua bài kiểm tra Trắc nghiệm Tin học 11 Bài 12 cực hay có đáp án và lời giải chi tiết.
Độ dài tối đa của xâu kí tự trong PASCAL là:
Cho xâu S là ‘Hanoi-Vietnam’. Kết quả của hàm Length(S) là:
Câu 3-5: Mời các em đăng nhập xem tiếp nội dung và thi thử Online để củng cố kiến thức về bài học này nhé!
Trong quá trình học tập nếu có thắc mắc hay cần trợ giúp gì thì các em hãy comment ở mục Hỏi đáp, Cộng đồng Tin học DapAnHay sẽ hỗ trợ cho các em một cách nhanh chóng!
Chúc các em học tập tốt và luôn đạt thành tích cao trong học tập!
-- Mod Tin Học 11 DapAnHay
Độ dài tối đa của xâu kí tự trong PASCAL là:
Cho xâu S là ‘Hanoi-Vietnam’. Kết quả của hàm Length(S) là:
Cho xâu S là ‘Hanoi-Vietnam’. Kết quả của hàm Pos(‘Vietnam’,S) là
Cho khai báo sau: Var hoten : String;
Phát biểu nào dưới đây là đúng ?
Hãy chọn phương án ghép đúng nhất. Thủ tục chuẩn Insert(S1,S2,vt) thực hiện:
Họ và tên
Tiêu đề câu hỏi
Nội dung câu hỏi
Câu trả lời của bạn
uses crt;
var xa,ya,xb,yb,xc,yc:integer;
ab,ac,bc,ah,p,s:real;
begin
clrscr;
write('Nhap toa do diem A:'); readln(xa,ya);
write('Nhap toa do diem B:'); readln(xb,yb);
write('Nhap toa do diem C:'); readln(xc,yc);
ab:=sqrt(sqr(xa-xb)+sqr(ya-yb));
ac:=sqrt(sqr(xa-xc)+sqr(ya-yc));
bc:=sqrt(sqr(xb-xc)+sqr(yb-yc));
if (ab+ac>bc) and (ac+bc>ab) and (ab+bc>ac) then
begin
p:=(ab+ac+bc)/2;
s:=sqrt(p*(p-ab)*(p-ac)*(p-bc));
ah:=(2*s)/bc;
writeln('Khoang cach tu A den BC la: ',ah:4:2);
end
else writeln('Khong tinh duoc khoang cach tu A den BC');
readln;
end.
- Đếm xem có bao nhiêu kí tự là chữ cái.
- Xoá các kí tự trắng.
- Kiểm tra xâu S có đối xứng không
Câu trả lời của bạn
uses crt;
var s:string;
i,d,dem,dem1,kt:integer;
begin
clrscr;
write('Nhap xau S:'); readln(s);
d:=length(s);
dem:=0;
for i:=1 to d do
if st[i] in ['0'..'9'] then inc(dem);
writeln('So ki tu la chu so la: ',dem);
dem1:=0;
for i:=1 to d do
if (st[i] in ['A'..'Z']) or (st[i] in ['a'..'z']) then inc(dem1);
writeln('So ki tu la chu cai la: ',dem1);
write('Xau sau khi xoa ki tu trang la: ');
for i:=1 to d do
if st[i]<>#32 then write(st[i]);
writeln;
kt:=0;
for i:=1 to d do
if st[i]<>st[d-i+1] then kt:=1;
if kt=0 then writeln('Xau doi xung')
else writeln('Xau khong doi xung');
readln;
end.
Câu trả lời của bạn
uses crt;
var st:string;
i,d:integer;
begin
clrscr;
st:='Xin chao!';
d:=length(st);
for i:=1 to d do
st[i]:=upcase(st[i]);
writeln(st);
readln;
end.
Câu trả lời của bạn
uses crt;
var st:string;
begin
clrscr;
write('Nhap xau:'); readln(st);
writeln('So ki tu la: ',length(st));
readln;
end.
Câu trả lời của bạn
uses crt;
var st:string;
begin
clrscr;
write('Nhap xau:'); readln(st);
writeln(length(st));
readln;
end.
a. Xoá hết kí tự là chữ trong xâu.
b. đếm xem xâu có bao nhiêu nguyên âm.
c. đếm số lần xuất hiện của kí tự k đc nhập bào từ bàn phím
Câu trả lời của bạn
uses crt;
var s:string;
i,d:integer;
begin
clrscr;
write('Nhap xau S:'); readln(s);
d:=length(s);
for i:=1 to d do
if (s[i] in ['a'..'z']) or (s[i] in ['A'..'Z']) then delete(s,i,1);
writeln('Xau sau khi xoa het ki tu chu la: ',s);
readln;
end.
Câu trả lời của bạn
uses crt;
var a,b:string;
i,n,d,d1:integer;
begin
clrscr;
write('Nhap xau a:'); readln(a);
write('Nhap xau b:'); readln(b);
if a[length(a)]=b[1] then writeln('Ki tu cuoi cua xau a trung voi ki tu dau cua xau b')
else writeln('Ki tu cuoi cua xau a khong trung voi ki tu dau cua xau b');
dem:=0;
while pos(b,a)>0 do
begin
inc(dem);
delete(a,pos(b,a),length(b));
end;
writeln('Xau b xuat hien ',dem,' lan trong xau a');
readln;
end.
Câu trả lời của bạn
uses crt;
var s:string;
i,d,dem:integer;
begin
clrscr;
write('Nhap xau S:'); readln(s);
d:=length(s);
writeln('Cac ki tu so co trong xau S:');
dem:=0;
for i:=1 to d do
if s[i] in ['0'..'9'] then
begin
write(s[i]:4);
inc(dem);
end;
writeln;
writeln('So ki tu chu so co trong xau S: ',dem);
for i:=1 to d do
if s[i] in ['0'..'9'] then s[i]:='A';
writeln('Xau sau khi doi la: ',s);
readln;
end.
Câu trả lời của bạn
uses crt;
var s:string;
dem,i,d:integer;
begin
clrscr;
write('Nhap xau:'); readln(s);
d:=length(s);
dem:=0;
for i:=1 to d do
if (s[i] in ['A'..'Z']) or (s[i] in ['a'..'z']) then inc(dem);
writeln(dem);
readln;
end.
Câu trả lời của bạn
uses crt;
var st:string;
i,d:integer;
begin
clrscr;
write('Nhap xau:'); readln(st);
d:=length(st);
for i:=1 to d do
if st[i]=#32 then
begin
writeln(i);
break;
end;
readln;
end.
Câu trả lời của bạn
program HOC24;
var s:tring;
i: byte;
begin
write('Nhap xau S: '); readln(s);
for i:=1 to length(s) do if s[i] in ['a'..'z'] then write(s[i]);
readln
end.
Câu trả lời của bạn
uses crt;
var s:string;
i,d:integer;
begin
clrscr;
write('Nhap xau S:'); readln(s);
d:=length(s);
for i:=1 to d do
s[i]:=upcase(s[i]);
writeln(s);
readln;
end.
+ In lại xâu S theo chiều ngược lại.
+ Đếm xem trong xâu S có bao nhiêu từ.
VD: S= ‘Do Minh Thom87’
=> In lại xâu S: ’78mohT hniM oD’
=> Số từ: 3
Câu trả lời của bạn
Program DapAnHay;
var S: string;
d,i: byte;
begin
write('S= '); readln(s);
For i:= length(s) downto 1 do write(s[i]);
writeln;
while s[length(s)]=#32 do delete(s,length(s),1);
while pos(#32#32,s)<>0 do delete(s,pos(#32#32,s),1);
while s[1]=#32 do delete(s,1,1);
d:=0;
for i:=1 to length(s) do d:=d+1;
write('So tu :',d);
readln
end.
Câu trả lời của bạn
uses crt;
var st:string;
d,i:integer;
begin
clrscr;
write('Nhap xau:'); readln(st);
d:=length(st);
for i:=1 to d do
if st[i] in ['a'..'z'] then write(st[i]:4);
readln;
end.
Câu trả lời của bạn
program ki_tu;
uses crt;
var s: string;
d,i,n: integer;
begin
clrscr;
write('nhap xau s: ');readln(s);
n:= length(s);
s:=upcase(s);
write('xau s sau khi duoc in hoa la: ');
writeln(s);
d:=0;
for i:= 1 to n do
if s[i] = 'A' then d:= d+1 ;
writeln('chu cai A xuat hien ',d,' lan');
readln
end.
a) xuất ra mảng đảo ngược mảng trên
b) cho số K, tổng các sô trong mảng là ước chung của k
c) xuất ra vị trí các số bằng k
Câu trả lời của bạn
uses crt;
var a:array[1..100]of integer;
n,k,t,i:integer;
begin
clrscr;
write('Nhap n='); readln(n);
for i:=1 to n do
begin
write('A[',i,']='); readln(n);
end;
for i:=n downto 1 do
write(a[i]:4);
writeln;
write('Nhap k='); readln(k);
t:=0;
for i:=1 to n do
if k mod a[i]=0 then t:=t+a[i];
writeln(t);
for i:=1 to n do
if a[i]=k then write(i:4);
readln;
end.
- Xâu chuẩn là xâu không có dấu cách ở đầu câu , giữa 2 từ trong xâu chỉ có 1 dấu cách .
Câu trả lời của bạn
Uses crt;
Var st:string;
I,d:integer;
Begin
Clrscr;
Write('nhap xau:'); readln(st);
D:=length(st);
While st[d]=#32 do
Begin
Delete(st,d,1);
D:=length(st);
End;
For i:=1 to d do
If (st[i]=#32) and (st[i+1]=#32) then delete(st,i,1);
Writeln(st);
Readln;
End.
Câu trả lời của bạn
Uses crt;
Var st1,st2:string;
D1,d2:integer;
Begin
Clrscr;
Write('nhap xau thu 1:'); readln(st1);
Write('nhap xau thu 2:'); readln(st2);
D1:=length(st1);
D2:=length(st2);
If d1<d2 then write(st1)
Else writeln(st2);
Readln;
End.
Câu trả lời của bạn
Program DapAnHay;
var s: string;
i,d: byte;
begin
write('Nhap xau: '); readln(s);
d:=0;
for i:=1 to length(s) do if (s[i]='b') or (s[i]='B') then d:=d+1;
write('Co ',d,' ki tu B trong xau');
readln
end.
Câu trả lời của bạn
uses crt;
var st:string;
n,vt,d,i:integer;
begin
clrscr;
write('Nhap xau:'); readln(st);
d:=length(st);
write('Nhap vi tri can xoa:'); readln(vt);
write('Nhap so ki tu can xoa:'); readln(n);
delete(st,vt,n);
writeln('Xau sau khi xoa la: ',st);
readln;
end.
0 Bình luận
Để lại bình luận
Địa chỉ email của hạn sẽ không được công bố. Các trường bắt buộc được đánh dấu *