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
nhập vào 1 xâu. yêu cầu
a.kiểm tra xem độ dài của xâu là chẵn hay lẻ
b.chuyển ký tự đầu tiên và ký tự cuối cùng thành chữ in hoa
Câu trả lời của bạn
Lập trình đoạn chương trình nhập vào một xâu từ bàn phím và cho biết:
a/ độ dài của xâu
b/ số lượng và vị trí kí tự A trong xâu
Câu trả lời của bạn
Câu trả lời của bạn
Var s,s1:string;
Begin
write(‘nhap chuoi s= ‘);readln(s);
S1:=‘’;
For i:= length(s) downto 1 do s1:=s1+s[i] ;
writeln(‘chuoi dao nguoc la :’, s1);
readln;
End.
Câu trả lời của bạn
Var s,a :string; vt,d,dem:byte;
Begin
write(‘nhap xau s= ‘);readln(s);
write(‘nhap xau can tim a= ‘);readln(a);
d:=length(a); Dem:=0;
While pos(a,s)>0 do
begin
vt:=pos(a,s) ;
dem:=dem+1;
s:=copy(s,vt+d,255);
end;
writeln(‘so lan =‘ , dem );
readln;
end.
Câu trả lời của bạn
Var s:string;
Begin
write(‘nhap chuoi s= ‘);readln(s);
while (s[1] =‘ ‘) and (length(s)>0) do
delete (s,1,1);
while (s[length(s)] =‘ ‘) and (length(s)>0) do
delete (s,length(s),1);
Writeln( ‘ kq = ‘ , s );
Readln;
End.
Câu trả lời của bạn
Var s:string;
Begin
write(‘nhap chuoi s= ‘);readln(s);
For i:=1 to length(s) do
s[i] := upcase(s[i]) ;
writeln(‘kq =‘ , s );
readln;
End.
Câu trả lời của bạn
Var s,a :string; vt,d,dem:byte;
Begin
write(‘nhap chuoi s= ‘);readln(s);
write(‘nhap tu can tim a= ‘);readln(a); write(‘nhap tu thay the b= ‘); readln(b); d:=length(a); dem:=0;
While pos(a,s)>0 do
begin
vt:=pos(a,s) ;
if ( (vt-1=0) and (vt+d-1=length(s)) ) or ( (vt-1=0) and (vt+d-
1<length(s)) and (s[vt+d]=‘ ‘) ) or ( (vt-1>0) and (s[vt-1]=‘ ‘) and (vt+d-1=length(s)) ) or ( (vt-1>0) and (s[vt-1]=‘ ‘) and (vt+d-1<length(s)) and (s[vt+d]=‘ ‘) ) then
begin delete(s,vt ,d ) ; insert(b,s,vt); dem:=dem+1 ;
end;
end;
writeln(‘so tu da thay the =‘ , dem );
writeln(‘chuoi kq=‘ , s); readln;
end.
Câu trả lời của bạn
Var s,a :string; vt,d,dem:byte;
Begin
write(‘nhap chuoi s= ‘);readln(s);
write(‘nhap tu can tim a= ‘);readln(a);
d:=length(a); Dem:=0;
While pos(a,s)>0 do
begin
vt:=pos(a,s) ;
if (vt-1=0) and (vt+d-1=length(s)) then dem:=dem+1 ;
if (vt-1=0) and (vt+d-1<length(s)) and (s[vt+d]=‘ ‘) then dem:=dem+1 ;
if (vt-1>0) and (s[vt-1]=‘ ‘) and (vt+d-1=length(s)) then dem:=dem+1 ;
if (vt-1>0) and (s[vt-1]=‘ ‘) and (vt+d-1<length(s)) and (s[vt+d]=‘ ‘) then dem:=dem+1 ;
delete(s,vt ,d );
end;
writeln(‘so lan =‘ , dem ); readln;
end.
Câu trả lời của bạn
Const nmax=30;
Var ten: array [1..nmax] of string[8] ; ho : array [1..nmax] of string[35] ;
tb : array [1..nmax] of real ; n,i,j :byte; a:string[8]; b: string[35]; c:real;
Begin write(‘nhap so hs n= ‘); readln(n);
for i:=1 to n do
begin write(‘nhap ho dem hs ‘ , I , ‘la= ‘);readln(ho[i]);
write(‘nhap ten hs ‘ , I , ‘la= ‘);readln(ten[i]);
write(‘nhap tb hs ‘ , I , ‘la= ‘);readln(tb[i]);
end;
for i:= n downto 2 do
for j:=1 to i-1 do
if ten[j]>ten[j+1] then
begin a:=ten[j]; ten[j]:=ten[j+1]; ten[j+1]:=a;
b:=ho[j]; ho[j]:=ho[j+1]; ho[j+1]:=b;
c:=tb[j];tb[j]:=tb[j+1];tb[j+1]:=c;
end;
for i:=1 to n do writeln(ho[i]:40,ten[i]:10,tb[i]:10:2); readln;
end.
Câu trả lời của bạn
Const nmax=30;
Var a:array [1..nmax] of string[8] ;
x :string; I,dem:byte;
Begin write(‘nhap so hs n= ‘);readln(n);dem:=0;
for i:=1 to n do
begin write(‘nhap ten hs ‘ , I , ‘la= ‘);readln(a[i]);
end;
write(‘nhap xau x can tim la= ‘);readln(x);
writeln(‘Ket qua :’);
for i:=1 to n do
if pos(x,a[i]) >0 then begin writeln(a[i]); dem:=dem+1; end;
writeln(‘So truong hop tim thay la =’ , dem);
readln;
end.
Câu trả lời của bạn
Var s1,s2 ,s,kq :string; a:char; vt,i: byte;
Begin
write(‘nhap chuoi s1= ‘);readln(s1); write(‘nhap chuoi s2= ‘);readln(s2);
for i:=1 to length(s1) do s1[i]:=upcase(s1[i]);
for i:=1 to length(s2) do s2[i]:=upcase(s2[i]);
s:=s1 ; kq:=‘’ ;
while length(s)>0 do
begin
a:=s[1];
while pos(a,s)>0 do
begin
vt:=pos(a,s);
delete(s,vt,1);
end;
if pos(a,s2)>0 then kq:=kq+a;
end;
writeln(‘s1=‘,s1);
writeln(‘s2=‘,s2);
writeln(‘cac ky tu co trong 2 chuoi la :‘ , kq , ‘gom so ky tu la= ‘,length(kq));
readln;
end.
Câu trả lời của bạn
Const nmax=30; mmax=15;
Var hoten: array [1..nmax] of string[45] ;
tb : array [1..nmax] of real ; n,m,i,j,dem : byte; tg,d : real; xl : string[8] ;
Begin write(‘nhap so hs n= ‘);readln(n); write(‘nhap so mon m= ‘);readln(m);
for i:=1 to n do
begin write(‘nhap hoten hs ‘ , I , ‘la= ‘);readln(hoten[i]); tg:=0;
for j:=1 to m do
begin write(‘nhap diem mon ‘ , j , ‘la= ‘);readln(d); tg:=tg + d;
end; tb[i]:=tg/m;
end; dem:=0;
for i:= 1 to n do
begin write(hoten[i]:50,tb[i]:10:2);
if tb[i] <5 then xl:=‘yeu’ else if tb[i] <6.5 then xl :=‘tbinh’ else
begin dem:=dem+1; if tb[i] <8 then xl:=‘kha’ else xl:=‘gioi’; end; writeln(xl :10);
end;
writeln(‘Ty le% kha gioi la=’,dem*100/n :10:2); readln;
end.
A. Nối và so sánh các xâu
B. Tính toán và so sánh
C. Cộng, trừ, nhân, chia
D. Cắt, dán, sao chép.
Câu trả lời của bạn
Nối và so sánh các xâu
Đáp án A
For I:=1 to n do
If (I mod 2 = 0)then X := X + I;
Câu trả lời của bạn
Tổng các số chia hết cho 2 trong phạm vi từ 1 đến N
Câu trả lời của bạn
Kết quả của thủ tục delete(‘Viet Nam 2021!’,5,6) là ‘Viet021’
A. Là dãy các ký tự số
B. Là dãy các ký tự dấu
C. Là dãy các ký tự chữ
D. Là dãy các ký tự trong bảng mã ASCII
Câu trả lời của bạn
Là dãy các ký tự trong bảng mã ASCII
Đáp án D
While not (1/(a+N) < 0.0001) do
Begin
N:=N+1:
S:=S+ 1.0/(a+N);
End;
Câu trả lời của bạn
Đoạn chương trình trên dùng để tính tổng.
A. Chỉ là dãy các số nguyên
B. Mảng không chứa các kí tự là chữ cái
C. Là dãy hữu hạn các phần tử có cùng kiểu dữ liệu
D. không cần khai báo trước số lượng phần tử
Câu trả lời của bạn
Mảng 1 chiều là dãy hữu hạn các phần tử có cùng kiểu dữ liệu
Đáp án C
Câu trả lời của bạn
uses crt;
var a,b,c:string;
i,d1,d2:integer;
begin
clrscr;
write('Nhap xau a:'); readln(a);
write('Nhap xau b:'); readln(b);
d1:=length(a);
d2:=length(b);
writeln('Tong do dai hai xau la: ',d1+d2);
c:=#32;
for i:=1 to d1 do
if (a[i] in ['A'..'Z']) or (a[i] in ['a'..'z']) then c:=c+a[i];
for i:=1 to d2 do
if b[i] in ['0'..'9'] then c:=c+b[i];
writeln('Xau c la: ',c);
readln;
end.
Câu trả lời của bạn
Nguyên tắc của phương pháp chuyển đổi từ hệ cơ số 10 sang hệ cơ số 2 là lấy số cần chuyển đổi chia cho 2 (kết quả chỉ lấy phần nguyên), sau đó tiếp tục lấy kết quả chia 2 (và cũng chỉ lấy phần nguyên), kết quả số nhị phân thu được là tập hợp các số dư của các phép chia.
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 *