Trang chủ
Bài viết mới
Diễn đàn
Bài mới trên hồ sơ
Hoạt động mới nhất
VIDEO
Mùa Tết
Văn Học Trẻ
Văn Học News
Media
New media
New comments
Search media
Đại Học
Đại cương
Chuyên ngành
Triết học
Kinh tế
KHXH & NV
Công nghệ thông tin
Khoa học kĩ thuật
Luận văn, tiểu luận
Phổ Thông
Lớp 12
Ngữ văn 12
Lớp 11
Ngữ văn 11
Lớp 10
Ngữ văn 10
LỚP 9
Ngữ văn 9
Lớp 8
Ngữ văn 8
Lớp 7
Ngữ văn 7
Lớp 6
Ngữ văn 6
Tiểu học
Thành viên
Thành viên trực tuyến
Bài mới trên hồ sơ
Tìm trong hồ sơ cá nhân
Credits
Transactions
Xu: 0
Đăng nhập
Đăng ký
Có gì mới?
Tìm kiếm
Tìm kiếm
Chỉ tìm trong tiêu đề
Bởi:
Hoạt động mới nhất
Đăng ký
Menu
Đăng nhập
Đăng ký
Install the app
Cài đặt
Chào mừng Bạn tham gia Diễn Đàn VNKienThuc.com -
Định hướng Forum
Kiến Thức
- HÃY TẠO CHỦ ĐỀ KIẾN THỨC HỮU ÍCH VÀ CÙNG NHAU THẢO LUẬN Kết nối:
VNK X
-
VNK groups
| Nhà Tài Trợ:
BhnongFood X
-
Bhnong groups
-
Đặt mua Bánh Bhnong
KIẾN THỨC PHỔ THÔNG
Trung Học Phổ Thông
TIN HỌC THPT
Tin học 11
Kiểu xâu - Bài 12
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Trả lời chủ đề
Nội dung
<blockquote data-quote="Đỗ Thị Lan Hương" data-source="post: 194532" data-attributes="member: 317476"><p>Ở bài 11 chúng ta đã được học về kiểu mảng. Vậy kiểu xâu là gì? Kiểu xâu và kiểu mảng khác nhau như thế nào? Cùng tìm hiểu qua bài 12: Kiểu xâu nhé!</p><p></p><p style="text-align: center"><strong><span style="font-size: 18px">Bài 12: Kiểu xâu</span></strong></p><p></p><p>– Dữ liệu kiểu xâu là dãy các kí tự.</p><p>Ví dụ: * Ha noi’;</p><p>– Một xâu là một dãy các kí tự (trong bảng mã ASCII), có thể coi xâu như một mảng một chiều mà mỗi phần tử là một kí tự. Số lượng kí tự trong một xâu được gọi là độ dài của xâu. Xâu cỏ độ dài bằng 0 là xâu rỗng.</p><p>Các ngôn ngữ lập trình đều có quy tấc, cách thức cho phép xác định:</p><p>Tên kiểu xâu;</p><p>Cách khai báo biến kiểu xâu;</p><p>Số lượng kí tự của xâu;</p><p>Các thao tác với xâu;</p><p>Cách tham chiếu tới phần tử xâu.</p><p>– Biểu thức gồm các toán hạng là biến xâu, biến kí tự hoặc hằng xâu được gọi là biểu thức xâu</p><p></p><p><strong>1. Khai báo</strong></p><p>Biến kiểu xâu có thể khai báo như sau:</p><p>var <tên biến>: string[độ dài lớn nhất của xâu]</p><p>Lưu ý: Độ dài lớn nhất của xâu < 255.</p><p>Ví dụ</p><p>var Hoten: string[26];</p><p>Trong mô tả xâu có thể bỏ qua phần khai báo độ dài, chẳng hạn: var chugiai: string;</p><p>Khi đó, độ dài lớn nhất của xâu sẽ nhận giá trị mặc định là 255.</p><p></p><p><strong>2. Các thao tác xử lí xâu</strong></p><p>a) Phép ghép xâu được dùng để ghép nhiều xâu thành một (kể cả đối với các hằng và biến xâu).</p><p>Ví dụ: ‘Nghe’ + ‘An’ . Kết quả: Nghe An</p><p></p><p>b) Các phép so sánh: (=), (o), (<), (>),(<=), (>=) cỏ thứ tự ưu tiên thực hiện thấp hơn phép ghép xâu và thực hiện việc so sánh hai xâu theo quy tắc sau:</p><p>Xâu A là lớn hơn xâu B nếu kí tự đầu tiên khác nhau giữa chúng kể từ trái sang trong xâu A có mã ASCII lớn hơn.</p><p>Nếu A và B là các xâu có độ dài khác nhau và A là đoạn đầu của B thì A nhỏ hơn</p><p>Ví dụ: ‘Que huong’ < ‘Que huong toi’</p><p>Hai xâu được coi là bằng nhau nếu như chúng giống nhau hoàn toàn.</p><p>Ví dụ: ‘Ha noi’ = ‘Ha noi’</p><p></p><p>c) Thủ tục delete(st, V/, n) thực thực việc xóa n kí tự của biến xâu st bắt đầu từ vị trí vt.</p><p>Ví dụ: st=’abcdef’; thao tác delete (st, 4, 2 ) , cho kết quả ‘abcd’</p><p></p><p>d) Thủ tục insert (s1, s2, vt) chèn xâu s1 vào biến xâu s2, bắt đầu ở ví trí Vt.</p><p>Ví dụ: 1l=’PC’; s2= ‘ IBM486 thao tác insert (s1, s2, 4);chokếtquả ‘IBMPC486’</p><p></p><p>e) Hàm copy(S, vt, N) tạo xâu gồm N kí tự liên tiếp bắt đầu từ vị trí vt của xâu s.</p><p>Vi dụ: S=’Bai hoc thu 9′; biểu thức copy ( s, 9, 5); cho kết quả ‘thu 9’</p><p></p><p>f)<strong> </strong>Hàm length(s) cho giá trị là độ dài xâu s.</p><p>Vi dụ: s= ‘Tin hoc’ thì biểu thức length (S) có độ dải là 7.</p><p></p><p>g) Hàm pos(s1, s2) cho vị trí xuất hiện đầu tiên của xâu s1 trong xâu s2.</p><p>Ví dụ: s2=’abcdef’ thì biểu thức pos (‘cd’, s2) cho kết quả 3.</p><p></p><p>h) Hàm upcase(ch) cho cữ cái in hoa ứng với chữ cái trong ch.</p><p>Ví dụ: ‘d’ thì biểu thức upcase (ch) cho kết quả ‘ D’.</p><p>Lưu ý:</p><p>– Xâu được tạo thành bởi các kí tự, trong đó có thể có dấu cách. Dấu cách thể hiện trong các văn bản là phần trống ngăn cách giữa hai từ viết liên tiếp. Kí tự này được gõ bằng phím dài nhất trên bàn phím (Space Bar);</p><p>– Trong chương trình, khi viết một xâu kí tự, ta phải viết xâu đó giữa hai dấu nháy đơn. Nhưng khi nhập từ bàn phím giá trị một xâu, ta chi gõ các kí tự thuộc xâu đó (rồi nhấn phím Enter).</p><p>– Xâu chỉ gồm một dấu cách được viết là ‘ ‘. Để viết xâu rỗng ta viết hai dấu nháy đơn liền nhau.</p><p>– Khi so sánh hai xâu, xâu có độ dài nhỏ hơn có thể là xâu lớn hơn (>), ví dụ:</p><p>‘Anh'<‘Ba’</p><p>– Khi sử dụng lệnh gán, ta có thể gán trị là một kí tự cho một biến xâu kí tự nhưng việc gán trị là một xâu kí tự cho một biến kiểu kí tự là không hợp lệ dù xâu đó có độ dài bằng i.</p><p></p><p><strong>3. Một số ví dụ</strong></p><p><strong>Ví dụ 1</strong>: Bài toán so sánh hai xâu: nhập vào 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.</p><p>Chương trình:</p><p>Progam vidul;</p><p>var</p><p>a, b: string;</p><p>begin</p><p>write(’Nhap ho ten thu nhat: ’);</p><p>readln(a);</p><p>write(’Nhap ho ten thu hai : );</p><p>readln(b);</p><p>if length(a)>length(b) then write(a) else write(b);</p><p>readln </p><p>End.</p><p>– Tham số của các hàm và thù tục chuẩn phải hợp lí, chẳng hạn không thể dùng Insert(sl,s2,I0) khi length(s2)<10.</p><p>Khi chạy chương trình, nhập họ tên của hai người: Tran Doan Minh và Tran Doan Hien, thì kết quả của chương trình cho như hình 47 dưới đây:</p><p><img src="https://baitapsgk.com/wp-content/uploads/2017110817402647.jpg" alt="" class="fr-fic fr-dii fr-draggable " data-size="" style="" /></p><p><strong>Ví dụ 2</strong>: Bài toán kiểm tra hai xâu kí tự “Nhập hai xâu kí tự 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ự của xâu thứ hai hay không?”</p><p>Chương trình.</p><p>program vidu2 ;</p><p>var </p><p>byte;</p><p>C, b: string;</p><p>begin</p><p>write (‘Nhap xau thu nhat:’);</p><p> readln (a) ;</p><p>write(’Nhap xau thu hai:’);</p><p>readln(b);</p><p>X : = length (b);</p><p>{xac dinh do dai xau b de biet vi tri cua ki tu cuoi cung}</p><p>if a[1]=b[x] then write (‘Trung nhau’)</p><p>else write(‘Khác nhau’);</p><p>readln</p><p>end.</p><p>Khi chạy chương trình, nhập các xâu vào: nếu kí tự đầu tiên của xâu thứ nhất ‘ thu do’ không trùng với kí tự cuối cùng của xàu thứ hai ‘ ha noi ‘ thì chương trình đưa ra thông báo: “Khac nhau”, ngược lại chương trình đưa ra thông báo: “Trung nhau” kquả của chương trình cho như hình 48 dưới đây:</p><p><img src="https://baitapsgk.com/wp-content/uploads/2017110817402648.jpg" alt="" class="fr-fic fr-dii fr-draggable " data-size="" style="" /></p><p></p><p><strong>Ví dụ 3</strong>: Giải toán viết theo thứ tự ngược lại của xâu được nhập vào từ bàn phím.</p><p>Chương trình</p><p>procgram vidu3 ,</p><p>var i, k: byte;</p><p>a : string;</p><p>begin</p><p>write ( ‘ Nhap xau: ’ )</p><p>readln(a)</p><p>k:= length(a);</p><p>{xac dinh do dai xau} for i:= k downto 1 do write(a<em>);</em></p><p><em>readln</em></p><p><em>end.</em></p><p><em>Khi chạy chương trình, nhập vào xâu ‘ thu do ha noi’ thì chương trình đưa ra kết quả “ion ah od uht”, còn khi nhập vào xâu ‘viet nam que huong toi’ thì chương trình đưa ra kết quả: *iot gnouh euq man teiv* thì kết quả của chương trình cho như hình 49 dưới:</em></p><p><em><img src="https://baitapsgk.com/wp-content/uploads/2017110817402649.jpg" alt="" class="fr-fic fr-dii fr-draggable " data-size="" style="" /></em></p><p><em><strong>Ví dụ 4:</strong> Bài toán đưa ra màn hình xâu thu được bằng việc loại bỏ các dấu cách (nếu có) của xâu nhập vào từ bàn phím.</em></p><p><em>Chương trình:</em></p><p><em>program vidu4; \</em></p><p><em>var i, k:byte;</em></p><p><em>a, b: string;</em></p><p><em>begin</em></p><p><em>write(‘Nhap vao xau:’);</em></p><p><em>readln (a) ,</em></p><p><em>k:= length(a)</em></p><p><em>b:= ‘ {*Khoi tao xau rong*} for i:= 1 to k do</em></p><p><em>if a<em><> ‘ ‘ then b:= b + a<em>;</em></em></em></p><p><em><em><em>writeln(‘Ket qua: b);</em></em></em></p><p><em><em><em>readln</em></em></em></p><p><em><em><em>End.</em></em></em></p><p><em><em><em>Khi chạy chương trình, nhập vào một xâu: ‘Thủ đô Hà Nội’ thì chương trình đưa ra kết quả: “ThudoHaNoĩ’, còn khi nhập vào xâu ‘ Việt Nam quê hương tôi’ thì chương trình đưa ra thông báo: “ VietNamquehuongtoi”</em></em></em></p><p><em><em><em>Kết quả của chương trình cho như hình 50 dưới đây:</em></em></em></p><p><em><em><em><img src="https://baitapsgk.com/wp-content/uploads/2017110817402650.jpg" alt="" class="fr-fic fr-dii fr-draggable " data-size="" style="" /></em></em></em></p><p><em><em><em><strong>Ví dụ 5.</strong> Bài toán tạo xâu gồm tắt cà các chữ số trong xâu nhập vào từ bàn phím (giữ nguyên thứ tự xuất hiện của chúng) và đưa kết quả ra màn hình Chương trình</em></em></em></p><p><em><em><em>program xulixau;</em></em></em></p><p><em><em><em>var si, s2: string;</em></em></em></p><p><em><em><em>i: by t e;</em></em></em></p><p><em><em><em>begin</em></em></em></p><p><em><em><em>write(‘Nhap xau si: ‘);</em></em></em></p><p><em><em><em>readln ( s1) ;</em></em></em></p><p><em><em><em>s2 : = ‘ ‘ ;{khoi tao xau s2 rong} for i: = 1 to length(s1) do</em></em></em></p><p><em><em><em>then s2:=s2+sl<em>;</em></em></em></em></p><p><em><em><em><em>Khi chạy chương trình, nhập vào xâu vừa kí tự vừa chữ số, chẳng hạn xâu: ‘chào mùa hè 2007″ thì kết quả của chương trình là 2007, còn khi nhập vào xâu ‘ngay 25 thang 5 nam 2007 ‘ , kết quả của chương trình là 2 552007</em></em></em></em></p><p><em><em><em><em>Kết quả của chương trình sau hai lần nhập xâu vào cho như hình 51 dưới đây:</em></em></em></em></p><p><em><em><em><em><img src="https://baitapsgk.com/wp-content/uploads/2017110817402651.jpg" alt="" class="fr-fic fr-dii fr-draggable " data-size="" style="" /></em></em></em></em></p></blockquote><p></p>
[QUOTE="Đỗ Thị Lan Hương, post: 194532, member: 317476"] Ở bài 11 chúng ta đã được học về kiểu mảng. Vậy kiểu xâu là gì? Kiểu xâu và kiểu mảng khác nhau như thế nào? Cùng tìm hiểu qua bài 12: Kiểu xâu nhé! [CENTER][B][SIZE=5]Bài 12: Kiểu xâu[/SIZE][/B][/CENTER] – Dữ liệu kiểu xâu là dãy các kí tự. Ví dụ: * Ha noi’; – Một xâu là một dãy các kí tự (trong bảng mã ASCII), có thể coi xâu như một mảng một chiều mà mỗi phần tử là một kí tự. Số lượng kí tự trong một xâu được gọi là độ dài của xâu. Xâu cỏ độ dài bằng 0 là xâu rỗng. Các ngôn ngữ lập trình đều có quy tấc, cách thức cho phép xác định: Tên kiểu xâu; Cách khai báo biến kiểu xâu; Số lượng kí tự của xâu; Các thao tác với xâu; Cách tham chiếu tới phần tử xâu. – Biểu thức gồm các toán hạng là biến xâu, biến kí tự hoặc hằng xâu được gọi là biểu thức xâu [B]1. Khai báo[/B] Biến kiểu xâu có thể khai báo như sau: var <tên biến>: string[độ dài lớn nhất của xâu] Lưu ý: Độ dài lớn nhất của xâu < 255. Ví dụ var Hoten: string[26]; Trong mô tả xâu có thể bỏ qua phần khai báo độ dài, chẳng hạn: var chugiai: string; Khi đó, độ dài lớn nhất của xâu sẽ nhận giá trị mặc định là 255. [B]2. Các thao tác xử lí xâu[/B] a)[B] [/B]Phép ghép xâu được dùng để ghép nhiều xâu thành một (kể cả đối với các hằng và biến xâu). Ví dụ: ‘Nghe’ + ‘An’ . Kết quả: Nghe An b)[B] [/B]Các phép so sánh: (=), (o), (<), (>),(<=), (>=) cỏ thứ tự ưu tiên thực hiện thấp hơn phép ghép xâu và thực hiện việc so sánh hai xâu theo quy tắc sau: Xâu A là lớn hơn xâu B nếu kí tự đầu tiên khác nhau giữa chúng kể từ trái sang trong xâu A có mã ASCII lớn hơn. Nếu A và B là các xâu có độ dài khác nhau và A là đoạn đầu của B thì A nhỏ hơn Ví dụ: ‘Que huong’ < ‘Que huong toi’ Hai xâu được coi là bằng nhau nếu như chúng giống nhau hoàn toàn. Ví dụ: ‘Ha noi’ = ‘Ha noi’ c) Thủ tục delete(st, V/, n) thực thực việc xóa n kí tự của biến xâu st bắt đầu từ vị trí vt. Ví dụ: st=’abcdef’; thao tác delete (st, 4, 2 ) , cho kết quả ‘abcd’ d)[B] [/B]Thủ tục insert (s1, s2, vt) chèn xâu s1 vào biến xâu s2, bắt đầu ở ví trí Vt. Ví dụ: 1l=’PC’; s2= ‘ IBM486 thao tác insert (s1, s2, 4);chokếtquả ‘IBMPC486’ e)[B] [/B]Hàm copy(S, vt, N) tạo xâu gồm N kí tự liên tiếp bắt đầu từ vị trí vt của xâu s. Vi dụ: S=’Bai hoc thu 9′; biểu thức copy ( s, 9, 5); cho kết quả ‘thu 9’ f)[B] [/B]Hàm length(s) cho giá trị là độ dài xâu s. Vi dụ: s= ‘Tin hoc’ thì biểu thức length (S) có độ dải là 7. g)[B] [/B]Hàm pos(s1, s2) cho vị trí xuất hiện đầu tiên của xâu s1 trong xâu s2. Ví dụ: s2=’abcdef’ thì biểu thức pos (‘cd’, s2) cho kết quả 3. h)[B] [/B]Hàm upcase(ch) cho cữ cái in hoa ứng với chữ cái trong ch. Ví dụ: ‘d’ thì biểu thức upcase (ch) cho kết quả ‘ D’. Lưu ý: – Xâu được tạo thành bởi các kí tự, trong đó có thể có dấu cách. Dấu cách thể hiện trong các văn bản là phần trống ngăn cách giữa hai từ viết liên tiếp. Kí tự này được gõ bằng phím dài nhất trên bàn phím (Space Bar); – Trong chương trình, khi viết một xâu kí tự, ta phải viết xâu đó giữa hai dấu nháy đơn. Nhưng khi nhập từ bàn phím giá trị một xâu, ta chi gõ các kí tự thuộc xâu đó (rồi nhấn phím Enter). – Xâu chỉ gồm một dấu cách được viết là ‘ ‘. Để viết xâu rỗng ta viết hai dấu nháy đơn liền nhau. – Khi so sánh hai xâu, xâu có độ dài nhỏ hơn có thể là xâu lớn hơn (>), ví dụ: ‘Anh'<‘Ba’ – Khi sử dụng lệnh gán, ta có thể gán trị là một kí tự cho một biến xâu kí tự nhưng việc gán trị là một xâu kí tự cho một biến kiểu kí tự là không hợp lệ dù xâu đó có độ dài bằng i. [B]3. Một số ví dụ Ví dụ 1[/B]: Bài toán so sánh hai xâu: nhập vào 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. Chương trình: Progam vidul; 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. – Tham số của các hàm và thù tục chuẩn phải hợp lí, chẳng hạn không thể dùng Insert(sl,s2,I0) khi length(s2)<10. Khi chạy chương trình, nhập họ tên của hai người: Tran Doan Minh và Tran Doan Hien, thì kết quả của chương trình cho như hình 47 dưới đây: [IMG]https://baitapsgk.com/wp-content/uploads/2017110817402647.jpg[/IMG] [B]Ví dụ 2[/B]: Bài toán kiểm tra hai xâu kí tự “Nhập hai xâu kí tự 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ự của xâu thứ hai hay không?” Chương trình. program vidu2 ; var byte; C, 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(‘Khác nhau’); readln end. Khi chạy chương trình, nhập các xâu vào: nếu kí tự đầu tiên của xâu thứ nhất ‘ thu do’ không trùng với kí tự cuối cùng của xàu thứ hai ‘ ha noi ‘ thì chương trình đưa ra thông báo: “Khac nhau”, ngược lại chương trình đưa ra thông báo: “Trung nhau” kquả của chương trình cho như hình 48 dưới đây: [IMG]https://baitapsgk.com/wp-content/uploads/2017110817402648.jpg[/IMG] [B]Ví dụ 3[/B]: Giải toán viết theo thứ tự ngược lại của xâu được nhập vào từ bàn phím. Chương trình procgram vidu3 , 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. Khi chạy chương trình, nhập vào xâu ‘ thu do ha noi’ thì chương trình đưa ra kết quả “ion ah od uht”, còn khi nhập vào xâu ‘viet nam que huong toi’ thì chương trình đưa ra kết quả: *iot gnouh euq man teiv* thì kết quả của chương trình cho như hình 49 dưới: [IMG]https://baitapsgk.com/wp-content/uploads/2017110817402649.jpg[/IMG] [B]Ví dụ 4:[/B] Bài toán đưa ra màn hình xâu thu được bằng việc loại bỏ các dấu cách (nếu có) của xâu nhập vào từ bàn phím. Chương trình: program vidu4; \ var i, k:byte; a, b: string; begin write(‘Nhap vao 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. Khi chạy chương trình, nhập vào một xâu: ‘Thủ đô Hà Nội’ thì chương trình đưa ra kết quả: “ThudoHaNoĩ’, còn khi nhập vào xâu ‘ Việt Nam quê hương tôi’ thì chương trình đưa ra thông báo: “ VietNamquehuongtoi” Kết quả của chương trình cho như hình 50 dưới đây: [IMG]https://baitapsgk.com/wp-content/uploads/2017110817402650.jpg[/IMG] [B]Ví dụ 5.[/B] Bài toán tạo xâu gồm tắt cà các chữ số trong xâu nhập vào từ bàn phím (giữ nguyên thứ tự xuất hiện của chúng) và đưa kết quả ra màn hình Chương trình program xulixau; var si, s2: string; i: by t e; begin write(‘Nhap xau si: ‘); readln ( s1) ; s2 : = ‘ ‘ ;{khoi tao xau s2 rong} for i: = 1 to length(s1) do then s2:=s2+sl[i]; Khi chạy chương trình, nhập vào xâu vừa kí tự vừa chữ số, chẳng hạn xâu: ‘chào mùa hè 2007″ thì kết quả của chương trình là 2007, còn khi nhập vào xâu ‘ngay 25 thang 5 nam 2007 ‘ , kết quả của chương trình là 2 552007 Kết quả của chương trình sau hai lần nhập xâu vào cho như hình 51 dưới đây: [IMG]https://baitapsgk.com/wp-content/uploads/2017110817402651.jpg[/IMG][/i][/i][/i][/i] [/QUOTE]
Tên
Mã xác nhận
Gửi trả lời
KIẾN THỨC PHỔ THÔNG
Trung Học Phổ Thông
TIN HỌC THPT
Tin học 11
Kiểu xâu - Bài 12
Top