Viết chương trình lập mot mang số bao gồm cúc chữ số thập phân của N.. Viết chương trình lập một mảng số bao gồm các chữ số trong biểu diễn nhị phân của N.. Hà y tìm tất ca các số Mersen
Trang 36T7 ¬ số
— "1 366/284-99 Gp 09 368/28 Mã số: PIK : PIK 86B 86B9
Trang 4Phần 1 BÀI TẬP 3
Phần 1 BÀI TẬP
§1 LỆNH LẶP WHILE
FS cau héi, vi dy, bai tap
I a) Lập trừnh tính tích của 10 số tự nhiên đầu tiên b) Lập trình tính tổng của 1000 số tự nhiên đầu tiên
9 Lập trình tính tổng:
A= 1112, gt
ở đây n lờ số tự nhiên được nhập từ bàn phím
3 Dùng oòng While để tính số n theo công thức:
uới độ chính xác e theo yêu cầu biét rang sé m sé dat được khi N đủ lớn để:
4 2N +1
4 Tính hàm luỹ thừa a", ở đây u thực uờ n tự
nhiên được nhập 0uào từ bàn phím
5 Có săn một dã y số Hã y uiết chương trình nhập một số x rồi tìm xem có bao nhiêu phần tu trong day >x
hay khong.
Trang 54 Lip bith Pascal - Tip 3
6 Viết chương trình nhộp một dãy số tốt đa 100
số, sưu đó in ra màn hình các số khúc nhau
7 Viết chương trình nhập một dãy số tốt đa 100
số, sau đó sắp xếp lai day theo thi tu ting dan
8 Viết chương trình nhập tdi da 100 86, va kiém tra xem dãy đó cỏ lập thành một cấp số cộng hay
không?
9 Viết chương trình nhập một dãy số tốt đa 100
số, sưu đó xét xem dã y số này có đối xứng hay không?
10 Viết chương trình nhập Họ, tên, năm sinh trong một danh sách có tối đa 100 người, sau đó xếp lại
thứ tự danh sách này theo tuổi
11 Viết chương trình nhập số tự nhiên n 0à in ra
13 Viết chương trình nhộp số thực A va tim ra sé
tự nhiên nhỏ nhốt N sao cho
1+ 1/2 + 1/3 + + 1/N >Â
14 Dày sốu„ được định nghĩa như sau:
a,=1
a, = 1
Trang 6Phần 1 BÀI TẬP 5
a„= a„¡ + 1 nếu n lẻ và a, = a„; + a„„ + + a; nếu n chẵn
Tinh a, uới n nhập từ bàn phím
1ã Cho dã y số được nhộp từ bùn phím Hã y chỉ ra một dã y con liên tục đơn điệu tống có độ dài lớn nhất
Chương trình phải in ra được dã y côn đó
16 Cho trước số tự nhiên N Viết chương trình lập mot mang số bao gồm cúc chữ số thập phân của N Ví
dụ cho N=23654 thì ta có mỏúng sau: gdÍO0]=4, a[1)=5, a/f2/=6, al3/=3, a/4/=2
17 Cho trước số tự nhiên N Viết chương trình lập một mảng số bao gồm các chữ số trong biểu diễn nhị phân của N Ví dụ cho N=5Ã tức là 101 thì ta có mững
sau: alOJ=1, af1]/=0, af2/=1
18 Gia sv da co day sé ay, a», ., a, la don diéu tang
Em hay dua vao đoạn mô phỏng lập trình sau để
biết chương trình Pascal hoàn chỉnh
If ai = c then Thông báo tim thấy Else Thông báo không tìm thấy
Sa sánh két qua cua chương trình này uới các chương trình tìm kiếm phần tử trong dãy mà em đã
làm trước kia.
Trang 76 Lap Lith Pasoal - Su ở
Ví dụ cho dãy ban đầu 110000101010 Voi k=4 ta
có đáp số là khoảng (3,6) bao gồm các số 0
22 Cho mét bang số nhị phán khích thước nxmn: (các phần tử của bảng là 0 hoặc 1) Cho trước một phần tử của bang (i,j) Hay tim ra mét khoang hình chữ nhật cực đại chứa phần tử (i,j) va chita cdc phan tu giéng nhu (i,j)
§2 MOT SO THUAT GIAI TREN SO NGUYEN TO
BS Cau héi, vi du, bai tap
1 Hãy lập trình nhận biết một số có phải là số nguyên tố hay không?
2 Cho trước số tự nhiên n, dùng phương phóp sàng Eratosphen để tìm uà in ra tất cả các số nguyên tấ
từ 2 đến n
3 Cho trước số tự nhiên n Lập trình phân tích n thành tích các thừa số nguyên tố
Trang 8Phan 1.BALTAP 7
4 Cho truve x6 tu nhién n Tim va in ra:
Tat cu cde số tự nhiên từ 2 đến n là tích của đúng
2 thừa số nguyên tố (có thể trùng nhau)
tất cá các số tự nhiên từ 2 đến n là tích của đúng
3 thừa số nguyên tố
5 Cho số chăn n>3 Hãy biểm tra giả thiết của Holbux rằng: mỗi số chăn n>9 được biểu diễn dưới dạng tổng của hai số nguyên tố, mô tả thủ tục nhận biết một số có phải là số nguyên tố hay không?
6 Cho số tự nhiên n Tôn tại hay bhông các “sinh
đôi” trong các sốn, n+1, , 2n (Các số "sinh đôi” là các
số nguyên tố mà khoang cách giữa chúng bằng 2)
7 Cho số tự nhiên n Hà y tìm tất ca các số Mersen
bé hơn n (Một số nguyên tố được gọi là sô Mersen nếu
nó có thể biểu diễn được dưới dạng 3°-1 trong đó p cũng
là một số nguyên tô)
8 Cho sé tự nhiên N nhập từ bàn phím Lập! chương trình kiểm tra xem N có phải là số Hoàn chỉnh hay không (Số hoàn chỉnh là số bằng fone tất cả các
11 Cho các số tự nhiên nguyên tố cùng nhau n, p
Viết chương trình tìm số tự nhiên m sao cho m<p va
nm chia p du 1.
Trang 98 Lip tink Pascal - Tip 3
12 Lap trinh tinh BSCNN cia hai s6 tu nhién a, b
được nhập từ ban phím
13 Viết chương trình tính [ÙƒSCLN của 3 số tự
nhiên cho trước a, b, c nhộp từ bàn phím
14 Viết chương trình tính BSCNN cúa 3 số tự
nhiên cho trước œ, b, c nhập từ bàn phim
18 Nhập hai số tự nhiên từ bàn phím 0uò hiểm tra xem chúng có phúi là nguyền tố cùng nhau hay không (Hai số gọi là Nguyên tố cùng nhau nếu USCL_N của
18 Viết chương trình tìm tất cả các cặp số nguyên
tố sinh đôi nhỏ bơn 1000000
19 Viế!- chương trình tìm ra một (hoặc tốt cả) số hoàn chỉnh nhỏ hơn 1000000
20 Phân số n/m duoc goi la tối giản nếu USCLN(n,m) =1
Cho trước phân số bất ky A/B hay tim phôn số tốt gian p/q sao cho A/B = p/q
21 Cho trước số tự nhiên n Gọi @(n) là số các số tự nhiên nhỏ hơn n uà nguyên tố cùng nhau uới n (hàm số Euler) Viét chương trình tính hàm Puler vdi n nhập từ
bàn phím.
Trang 10Phan 1 BAI TAP 9
24 Viết chương trình chuyển đổi số tự nhiên N từ dạng biểu diễn thập phân sang nhị phân uà ngược lại
25 Số tự nhiên N được gọi là đốt xứng nhị phân
nếu biểu diễn nhị phân của NÑ là một biểu thức đối
xứng Viết chương trình kiểm tru tính đối xứng nhị
phân của một số tự nhiên cho trước
26 Số tự nhiên N được gọt là đối xứng thập phân nếu biểu diễn thập phân của N là một biểu thức đối xứng Viết chương trình biểm tra tính đối xừng thập phân của N
27 Viết chương trình liệt bê tất cd cdc sé vita đối xứng tháp phôn uừa đổi xứng nhị phân nhỏ hơn 1000
§3 KIỂU DỮ LIỆU STRING
BS cau héi, vi du, bai tap
Trang 1110 Lap bush Putcab - ‘kip 3
Hỏi: Độ dài thực của Name?
Name[|20] bằng bao nhiêu? Tại sao?
2 Lập trình đếm sô lần vuất hiện ở môi loạt bí tự
thuộc bang chữ cái tiếng Anh trong một xâu kí tự Sứ
3 Cho số tự nhiên n cà xâu các hí tự Sy, S„, S
Hà y đếm xem trong đã y có bao nhiêu: ae
a Chit cai x
b Dau + va bao nhiéu dau *,
c tổng số các dau +, -, *
4 Cho số tự nhiên n uà xâu cé dé dai n Hay bién
đối xâu đã cho bằng cách thay trong đó:
5 Cho số tự nhiên n uà dã y cúc kí tự S,, So, ., Sy
Co hay khéng thanh phan S,, S,,,, cua day sao cho S, là déu cham phay con S,,, la ddu gach ngang
6 Cho số tự nhiên n 0à dã y các kí tự S„, S,, S„
Hã y tìm số tự nhiên ¡ đầu tiên sao cho các bí tự S„ S,., đêu là chữ cái a Nếu trong dày không có những cặp
nhu vay thi thong bao
7 Cho sé tu nhién n va day cac kituw S,, So, ., Sự,
Biết rằng trong day cé tt nhdét một dếu phẩy Hãy tìm
số tự nhiên t sao cho:
a S, la dấu phẩy đầu tiên
b S, là dấu phẩy cuối cùng
Trang 12Phan 1 BAI TAP , 11
8 Lập chương trình con tách "từ" đầu tiên ra bhỏi một xâu kí tự (Ta định nghĩa "Từ" là tập hợp cúc ÈÉ tự không chứa các dấu phân đoạn cau: Space (ddu cach), Return (xuống dòng) uà Túb (dấu nhấy cách nhiều bí tự),
9 Viết chương chương trình nhập một xâu kí tự
sau đó chỉ ra xem xau d6 co phải là xâu đôi xứng không (Xau đốt xứng là xâu có các hÝ tự giống nhưu đôi
xứng quu điểm giữa xâu)
10 Nhập một số nguyên theo kiểu Word, sau đó đổi ra hệ nhị phân uà in bết quá ra màn hình
11 Nhập một số nguyên theo biểu nhị phân, sau
đó đổi ra hệ thập phan va in két quad ra man hình
12 Cho cdc ki tu S,, S), ., S, Biét rang kt tu S, khúc uới dấu chấm than va trong day S», Sy cé tt nhat mét ddu cham than Gia su S,, So, ., S, la cdc ki
tự của dã y đã cho đi trước dấu chấm than đều tiên (n không biết trước) Trong dày Sự S,, , S„
a Có bao nhiêu bí tự trông (dấu cách)
a abe
b aba
Trang 1312 | Lip think Pascal - Tip 3
(| Bai tap về nhỏ
14 Cho một xâu hý tự S Hãy uiê! chương trình
tính xem trong SŠ có bao nhiêu loọi ký tự khúc nhau
(phân biét chit in hoa va in thường) Ví dụ uới S là
16 Một biểu thức toán học được nhập 0uào máy
tính để kiểm tra tính đúng đắn Biểu thức bao gồm các biến nhỏ la các chuối bý tự có độ dài bất kỳ, các phép
toán bao gồm "+", “-”, "*" uà "J" Biểu thức không có
dấu ngoặc, các dấu cách bị bö qua Em hã y uiết chương trinh biểm tra tính đúng đắn của biểu thức đó
17 Viết chương trình nhập một xâu bý tự uà biến đốt chúng thành toàn chữ in hoa
18 Viết chương trình biến đối một xâu bý tự nhập
từ bàn phím vé dang chit in thuong
19 Họ tên một học sưnh được nhập từ bàn phím Em
hãy 0uiết chương trình điều chỉnh lại cóc bý tự đầu họ hoặc đệm hoặc tên của học sinh đó trở thành chữ in hoa (Chú ý họ tên đây đủ của một học sinh có thể có nhiều hơn một tên đệm Ví dụ nếu nhập uào la nguyễn uăn anh hùng thì phải sửa lại là Nguyễn Văn Anh Hùng)
20 Viết chương trình nhộp xâu ky tu ttt ban phim,
sau đó "gọt" (trừm) xâu đó bằng cách xóa đi cúc ký tự,
Trang 14Phần 1 BÀI TẬP 13
trống ở hai đầu của xâu Ví dụ nếu nhập xâu ” Ha noi
" thi két qua sé la "Ha noi”
21 Viết chương trình nhập một dòng chữ uà đếm xem nó gồm bao nhiêu câu (Chú ý: một câu phải kết thúc băng dấu chấm)
22 Cho mét xéu ky tu Hay tính:
BS Câu hỏi, bài tập, ví dụ
1 Cho số tự nhiên n oà xâu Š„ S„, , S„ gồm n bí
tự Biết răng trong xâu có Ít nhất một dấu pháy Hã y
tìm số tự nhiên t sao cho:
a S, là dấu phẩy đầu diên
b S; la dấu phẩy sau cùng
2 Cho dõ y các kí tự S„ S;, , S„ Hỏi trong dã y có:
a Chit cai A hay khong?
b Có cặp chữ cái liền nhau “no” hoặc "on" hay không?
3 Cho số tự nhiên n uà dã y bí tự S„ S„, , S„„
a Hã y tính số lớn nhất các dấu trống đi liền nhau
Trang 1544 %4 # bunk Pascal - Tip 3
b Có tồn tat hay khéng 5 chit cdi e di liền nhau
trong day da cho?
4 Cho trước xâu gồm n kí tự Biết rằng trong xâu này có chữ cái u Hãy tìm số lớn nhất các chữ cái u di
liền nhau
5 Viét lai ham POS dé tim vi tri xau C trong xdu S
6 Cho số tự nhiên n va xdu gồm n bí tự Hã y biến đổi dãy đó: nếu trong dãy không có dấu * thì giZ nguyên da y đó, nếu có thì thay môi một bí tự * thành ki
tự -
7 1 hực hiện 0uiệc mã hóa cúc xâu ký tự theo cách -au: đổi chỗ các ký tự tại u‡ trí b uới n-b+1, ở đây n là
độ dài của xâu ban đầu K<=(n div 2) Viết chương trừnh
nhập một xâu by tự uà thực hiện uiệc mã hóa xâu này
8 Cho một xâu kỷ tự S bất kỳ Hà y tìm một xâu con
tài nhát của S nà không chứa bất cứ một chữ số nào
9 Viết chương trình nhập danh sách học sinh của
mol Lop
a Sap xép lai danh sách lớp theo thứ tự ABC của
họ tên
b Sắp xếp lại danh sách theo thứ tự tăng dần của
2ô dài họ tên
J0 Cho trước hai xâu ký tự S1, S2 Viết! chương trình tìm một xâu con chung cực đại của hai xâu trên
IRR) Bỏi lộp về nhờ
J1I1 Cho trước một xâu ky tu bat ky S Hay viét chuong trinh nhap so k va in ra tat ca cdc xdu con dé dài b của S mà có chứa ký tự số
Trang 16xdu chi bao gom cdc ky tv 0 va 1) Moi xau nhị phán S sẽ
ứng uới một cách sắp xếp n quân bai trén vong tron, sd 1
ứng uới quân bài ngửa, số Ú ứng ớt quán bai sdp Cho
trước hai xâu nhị phân, hã y hiểm tra xem chúng có tương
ứng uới cùng một cách sắp xến quân bài hay bhông
16 Cho hơi xâu nhị phân độ dài n cho trước SÌ,
S2 Hay uiết chương trình biến đổi xâu S1 thành S2 Các phép biến đối phải được hiện rõ trên màn hình Ví
du vidi S1='0101' va S2='1100' thi két qua sẽ thể hiện
nhu sau:
Vi tril: s60 >1
Vi tri 4: s61 >0
17 Dãy các số tự nhiên được xếp thành một hàng
ngang tạo thành một “xâu” ky tự dài 0ô tận
123456789101112131415161718192021
Viết chương trình nhập số tự nhiên n (h < 25) vaé in
ra phần đầu của xâu trên uới độ dài n
18 Lam bài 17 oới điều biện n < 1000
19 Nếu X là một xâu bý tự thì hý hiệu X* là XX X (b làn) Còn X" thì chí XXX (uô hạn lần)
Trang 1716 Lip tinh Paseal - Tip 3
Vidu: 10(001)? = 10001001001
10(01)°011(10)? = 10010101 0111010
Viết chương trình sinh ra xâu ký tự dài 255 bý tự
tà phần đầu của các xâu sdu:
a 1(100)°
b 10(001)”01
20 Hãy tìm điều biện để xâu 1(01)"0 là xâu con
của 0(10)”1
§5 LENH LAP REPEAT
FF cau hei, vidu, bai tap
Các bài tập dưới đây cần được viét bằng lệnh
Repeat
1 Tính tổng
S=1+ 1 + + +
N?à số tự nhiên cho trước được nhập uào tu ban phim)
2 Lập trình tính tổng của 15 số Fibonact đầu tiên
3 Tính hàm a" ở đây a thực uờ n tự nhiên được
nhập ào từ bàn phám
4 Cho một dãy số được nhập từ bàn phím Hã y viét chương trình nhập một số a rồi liệt kê tất cả các phan tw trong day lon hon a
Trang 187 Cho trước số tự nhiên n, dùng phương pháp
sang Eratosthen để tìm uà in ra tất cả các số nguyên tố
9 Bạn có 10.000 đ đem gứt uùo ngân hang voi lai
xuất 8% tháng Sau mỗi tháng tiền lãi được nhộp ào
để tính lãi xuất thang sau Lap trình để tính xem sau một năm số tiền gửi ngân hàng của bạn là bao nhiêu?
10 Nháp ào từ bàn phím 2 số tự nhiên m, n va tim ước số chung lớn nhất của chúng theo thuật toán Ởcli
11 Viết chương trình từm UDSCLN của N số được
Trang 1918 Lip tink Pascal - Tip 3
14, Cho mét bang s6 vuéng kich thude N x N Cac phần tử của bảng được mô tở như một măng hai chiều oli,J} Viết chương trình chỉ ra phần tử lớn nhất của bảng số trên
15 Cho bang sé vuéng N xN Viết chương trình tính phần tử lớn nhất trong uùng tam giác dưới đường chéo chính của bảng
Vùng cần tìm có dạng dÍL,J] uới ¡ < J
16 Cho một lưới ô uuông bích thước N x M Cac 6 lưới được đánh số (i,j) bat dau từ góc trái dưới là (1,1) cho đến góc phải trên là (N,M) Cho một ô điểm bất kỳ ' (i,j) trên lưới Hã y chỉ ra phần hình chữ nhật lớn nhất của lưới không chứa điểm (i,j)
17 Cho lưới ô uuông giống bời trên Cho trước hai điểm A, B trên lưới, Hãy tìm miền chữ nhật có điện tích lớn nhất trên lưới mò không chứa A uà B
18 Cho một dãy số a, a, Gy @, di n được
nhập từ bùn phím
Cho trước một số bất kỳ c (ta sẽ nói là “đường
thẳng y = c") Tu nói đường thẳng này cắt dãy đã cho
tai mét điểm nếu tồn tại chỉ số ¡ sao cho d, > € > Gịy;
Trang 20Phần 1 BÀI TẬP 19
20 Cho một dã y số ad, dạ, đạ, , dụ
Hãy uiết chương trình hiếm tra xem trong dãy trên
có tôn tợi hay không một cốp số cộng bao gồm 3 phần tử
21 Ta có 3, ð, 7 là một cấp số cộng bao gồm toàn các số nguyên tố Em hãy uiết chương trình biểm tra xem trong phạm 0i các số tự nhiên < 10000 còn có một cap số cộng nào khúc bao gồm 3 phần từ uà là số nguyên tố nữa hay không?
§6 CÁC THAO TÁC TRÊN XAU KY TỰ
BS Cau hoi, vi du, bai tap
4 Ding ham copy tach tw ddéu tién ra khéi mét
xâu ki tu cho trudc
5 Hay viét lại đoạn chương trình thực hiện công viéc cua ham COPY
6 Cho xéu gồm n bí tự Hãy biến đổi xôu đã cho bằng cách thay trong đó
Trang 2120 Lip tinh Pasoat - Tép 3
a Déu phay đầu tiên bằng hai dấu chấm than ởi
a Loại bhôi xâu nhám chit cai abe dau tién
b Thay trong xâu nhóm chữ cói đầu tiên “house”
thanh “houses”
8 Cho trước một xâu ki tự gồm n ki tu Hay biến
đổi dãy đó bằng cách loại đi khỏi dã y tất cả nhóm cúc
chit cai dang "abc"
9 Cho trước một xâu ki tự gồm n phan tu Hay thay trong xâu mỗi cụm chữ "Chì" thành “childhood"
10 Hãy nhập uào một xâu ký tự, sau đó in ra mỗi
từ của nó trên từng dòng
LH Bởi tap vé nha
11 Hãy nhập uào một string, sau đó hã y thay tất
cả các kí tự khác uới bí tự trống thành chữ "a”"
12 Cho trước một xâu kí tự Hã y loại ra bhỏi dã y
đó nhóm các bí tự nằm giữa dấu ngoặc ( ), các dấu ngoặc cũng phải được bỏ đi Giá sử bên trong mỗi cặp dấu ngoặc bhông có các dấu ngoặc khac
138 Cho trước một xâu bí tự Hãy biến đổi xâu đó: nếu trong xâu không có dấu * thì giữ nguyên xâu, nếu
có thì mỗi bí tự đi sau * thay bằng bí tự -
Trang 22Phan 1 BAI TAP 21
14, Cho trước một xâu kí tự Biết rằng trong xâu có
ít nhất một dấu chấm Hã y biến đổi dã y băng cách loại
bo tất cả các dấu trước dấu chấm đầu tiên 0ò thay thế
tất cả các chữ số 3 đi sau dấu chấm đầu tiên bằng các
đấu +
15 Cho trước một xâu gầm n kí tự (n>1) Hã y biến
đổi xâu đó bằng cách thuy tất cả các dấu hai chấm năm giữu S„ S;, , S„,; bằng các dấu phay va thay tat
cả các dấu chấm than nằm giữa S„,;„ „ S„ bằng các
17 Tu định nghĩa các ký hiệu sau trên cóc xâu ký tự:
- Nếu xâu S1 là xâu con của S2 ta uiết ST c 62
- Ký hiệu TA(S1,S3) = số lần lặp của S1 trong S2
- Ký hiệu TAS(S1,S9) = số lên lặp rời nhau của 61
trong S2
Hà y chứng mình các khẳng định sau:
ơ TAS(S1,S2) <= TA(S1,52)
b Nếu S† cS2¿»z,TA(S1,S) >=TA(S2,S)
18 Với bý hiệu như bùi trên, hãy chứng mình bất
đẳng thức sau:
Nếu S1 c S2 thì TAS(S1,S) >=TAS(S1,S2)TAS(S2,S)
Trang 2322 Lip tinh Doseal ~ Vip 3
19 C6 ding hay không voi SI — 82
TA(S1,S) >=TA(S1,S2)TA(S2,S)
Cho vi du minh hoa
20 Viết chương trình tự kiểm tra oà sửa lỗi chính
ta cho một xâu bý tự theo các nguyên tắc sau:
- Các chữ cái đầu câu phải viét hoa
- Nếu có hai chữ cái liền nhau 0iêt hoa, thì chữ cát thứ hai sẽ được đổi thùnh chữ thường
§7 ON TAP: DU LIEU VA THUAT TOAN
BS cau héi, vi du, bai tap
1.Cho trước một dã y số được nhập từ bàn phim va
được lưu trừ trong một máng Số phần tử của mảng được ghi trong một biến riêng biệt Viết chương trình
thực hiện các thao tác sau:
ơ Nhập (thêm một phần tử uà đưa uào cuối của day da cho
b Nhập thêm một phần tử uà đưa uào đầu của đã y
đã cho
e Nhập một phần tử va chén vao mét vi tri cho trước b củu day da cho
2 Cho hai day sda), dg, ., 2, va by, by, , b q
Tu hai day trén hay tao ra day ghép cy C2, ., Cpeq
va sap xép day mdi thu được theo thứ tự tăng dan
Trang 24Phan 1 BAI TAP 23
3 Diéu hién va déu bai giống như bài trên nhưng
voi điều kién ban dau la:
a, <= Q) <= <=a,
bị<= bạ <= <= b„
Hã y thực hiện yêu cầu của bài toán chỉ dùng đúng
một lệnh PFor (hoặc một lệnh Whtile)
4 K-biến đổi trên xâu nhị phâm
Cho trước số b va xdu nhị phân dé dai n (k <= n) Một phép k-bién déi trên xêu đã cho được thực hiện như sau: lấy ra một xấu con k phần tử, sau đó biến đổi xâu này theo qui tac 0 > 1 va 1 > 0
Ví dụ một phép 2-biến đổi: 1010110 -> 1011010 Cho trước hai xâúu nhị phán độ dài n Hãy uiết chương trình tìm một phép b-biến đổi để chuyển xâu thứ nhốt thành xâu thứ hai (hoặc thông báo không tôn tại phép biến đổi như uậy)
ð Hai xâu nhị phân bậc n cho trước được gọt là k-
tương đương nếu từ một xâu sưu một số hữu hạn phép k- biến đổi có thể thu được xâu kia Cho trước hai xâu sau:
100010110011101
011010101011010
¡a Hãy kiểm tra xem hai xâu trên có phải là 2-
tương đương không
b Hày kiém tra xem hai xâu trên có phổi là 3- tương đương không
6 Lập chương trình kiểm tra xem hai xâu nhị phân bậc n cho trước có phúi là hk-tương đương không?
Trang 2524 Ley brink Pascal - Tip 3
7 Hai xâu nhị phản độ dài n được gọt là tương
đương nếu tần tại k>1 sao cho chúng là k-tương đương
Hã y kiểm tra xem hai xâu sưu:
1010111011010
0101011010010
có phải là tương đương uới nhau bhông
8 Viết chương trình thực hiện trò chơi đơn giản
sơu đây:
Thực hiện liên tiếp uiệc đọc từ bàn phím một số tự nhiên >= 1 Điều biện của uiệc đọc phải như sau: số đọc sau phải hoặc bình phương số uừa đọc hoặc bằng số vita doc triz mét don vi Qua trinh choi sẽ két thúc khi
vi phạm luật chơi
9, Viết chương trình thực hiện trò chơi sau:
Thực hiện liên tiếp uiệc đọc một số tự nhiên từ bàn phim Néu sé vita duoc doc 0uòo lò số chính phương thì được thưởng thêm một lần đọc, nếu đọc số đã được đọc
từ trước thì bị trừ một lần đọc Nếu số đọc là nguyên tối
thì lập tức dừng chương trình, Chương trình cùng
dừng lại khi số lần bằng 0 Số lần cho ban đầu là 1 Trong quá trình chơi số lần đọc còn lại luôn hiện trên màn hình Ai được đọc nhiều lần nhất là người v6 dich
10 Viết chương trùnh thực hiện trò chơi sau: Thục hiện liên tiếp uiệc đọc một số tự nhiên từ bàn phím Nếu số uừa đọc 0ào là nguyên tố cùng nhau uới các số đồ đọc thì được thưởng một lần đọc, trong trường hợp ngược lại nếu số uừa đọc có chung từ hai ước số trở lên uới một trong số đã đọc thì bị trừ một lần
Trang 26Phan 1 BAI TAP 25 đọc, các trường hợp còn lại thì không có thường phụt
gì Trò chơi dùng tại khi hết lượt Số lượt ban đầu là 1
11 Con cáo, con dé va bap cai (bai toán 0ui cổ)
Một người nông dân đi cùng một con cáo, một con
dé va mét cay bap cải Tới một dang sông nọ chỉ có mội
con thuyền nhỏ Thuyền chỉ chở được một người uà một
trong 3 thứ: cáo, dê, bắp cái
Em hày giúp người nông dân chở qua sông có người lân Cáo, Dé va Bap cai
(J) Bỏi tập về nhà
19 Số tự nhiên n gọi là Amstrong nếu nó bằng
tổng lập phương các chữ số của minh Vi du 153 = 1° +
14 Số tự nhiên được gọi là Palindrom nếu cách biểu diễn thập phân của số này là đối xứng, uí dụ các
số 22, 3ã3 Hãy uiết chương trình tìm tất cd các số
Trang 2726 L Gp Link Pascal - Tig ý
17 Giả sử n là một số tự nhiên ý hiệu p(u) là số thu được từ n băng cách uiết ngược lại các chữ số Ví
dụ nếu n=12 thì p(n)=21, n=378 thi p(n)=873 R6 rang
rằng số n sẽ là Palindrom khi uà chi khin = p(n)
Với mỗi số tự nhiên n ta'thực hiện các phép biến
đổi sau:
- Kiểm tra n có phải là Palindrom hay không
- Nếu n là Palindrom thì kết thúc phép biến đổi
- Nếu n không la Palindrom thi bién déi n > n + p(n)
- Quay lại bước đầu tiên
Người ta khẳng định rằng quá trình biến đổi mọi
số tự nhiên theo cách trên đều bết thúc, túc là sẽ đều thu được số Palindrom
Em hã y uiết chương trình biểm tra giả thuyết trên
vdi 86 n được nhộp từ bàn phím Trong trường hợp đã thực hiện quá nhiêu các phép biến đổi (chẳng hạn sau
100 lồn) thì cũng kết thúc uù thông báo "Phép biến đổi chưa đạt hết quả”
18 Viết chương trình nhập danh sách học sinh của
một lớp sưu đó in ra những người có họ lò “Nguyen”
19 Day 86 a, Gz, a3, ., a, duoc goi la don diéu điều hòa nếu tồn tai chi s6 1 <i <n thoa man:
GQ, <= Op <= <= 4, >= 4;,, >= >= A,
hoặc @, >= Gy >= PH a, <=4,,, <= <=,
Cho day số bất ky hay kiém tra xem có phai la day
đơn điệu điều hòa hay không
20 Một dãy số được gọi la đơn điệu bậc b nếu nó
Trang 28Phần 1 BĂI TẬP 27
có thể được chia thănh b khoảng đơn điệu Dêy đơn
điệu điều hòa lă dê y đơn điệu bậc 2
Dễ thấy rằng dêy lă đơn điệu bậc b khi uă chỉ khi
dê y có đúng k-1 điểm “cao” hoặc “lùn” (xem băi )
Cho trước dêy số bất hỳ hêy tính bậc đơn điệu của đê y
21 Địa chủ uằ người hầu
Có 3 địa chủ, mỗi địa chủ mang theo một người
hầu cùng đến một khúc sông nọ Chỉ có một con thuyền
nhỏ Thuyín chỉ có thể chở được hơi người Em hê y tìm câch giúp câc địa chủ va ngudi hau của họ qua sông nếu biết rằng nếu người hđu không có mặt địa chủ của
mình sẽ lập tức gđy sự uới câc người địa chủ khúc nếu
có mặt Câc người bầu ở cạnh nhau không sao
§8 ON TAP
BS, cau hĩi, vi du, bai tap
1 Trong bảng ký tự ASCII câc ky tư từ 1 đến 31 lă câc ký tự điíu khiển Muốn hiển thị câc ký tự nùy trín măn hình kết qua ta phúi lăm thế năo?
3 Một học sinh khoe lăm một đoạn 0uăn toăh °T"
tức lă mọi từ đều bắt đầu bằng T Em hê y.uiết chương trình nhập đoạn oăn cua ban vao (1 xdu ky tu !!) uă hiểm tra xem có đúng lă toan "T" hay không
3 Giỏ sử để mô tả câc xđu bý tự “dăi” (uới độ dăi
lớn hơn 255) ta dung mang co dang sau:
Trang 2928 Lap Linh Pascal - Tips J
Array[0 MaxInt] of Char
Em hay viét chương trình mô tả các thao túc sau
trên cóc xâu hy tự trên:
a Ghép hat "xa@u"
b Lấy ra một xâu con (tương tự lệnh COPY')
c Cắt bỏ các khoảng trống bên trái
d Cắt bỏ các khoảng trống bên phải
4 Gia thiết giống như bùi trên Hãy uiết chường
trình mô ta thao tác chèn một xâu bý tự (tương tự lênh INSERT)
ð Giả thiết giống bài trên Hà y 0uiết chương trình
mô ta thao tác xóa ký tự (tương tự lệnh DELETE)
6 Gia thiết giống bài trên Hã y thực hiện thao tác chuyển đối số sang ký tự uà ngược lại (tương tự các
lénh Val va Str)
7 Dé mé ta cdc sé nguyén “lén” ta ding mang sé
có dạng sau:
Array[0 Maxint] of byte:
vdi chi số 0 ghỉ lại 1 nếu là số dương uè 0 nếu số là âm
Viết chương trình thực hiện uiệc nhập các số
nguyên lớn từ bàn phím
8 Viết chương trình mô tủ phép cộng các số
nguyên lớn được nều trong bài trên
9 Viết chương trình mô ta phép trừ cúc số nguyên
lớn được nêu trong các bài trên
10 Chia đôi thùng bia
Có một thùng đựng 8 lit bia day Cé hai thing
rông khác, một thùng đựng được 3 lt, một thùng đựng
Trang 3012 Cho trước số tự nhiên N, Hà y tìm số tự nhiên
nho nhất khúc N uà nguyên tố tưởng đương uới N
13 Cho trước số tự nhiên N va mét sé bat ky A Hay viét chuong trinh in ra tất ca các số tự nhiên nhỏ hơn A 0uò nguyên tố tương đương uới N
14 Hãy tìm số tự nhiên lớn nhất < 1000 uà không
có ước số nguyên tổ nòo bhác 3, 7, 11
15 Hay tìm số tự nhiên nho nhất > 1000 va khéng
có ước số nguyên tố nào khúc 3, 7, 11
16 Xét hai tap số nguyên Q1 oà 2 được định nghĩa như squ:
Q1 = { Tập các số nguyên có dạng 3x + 5y, với x, y số nguyên} Q2 = { Tập các số nguyên có dạng 2x + 3y, với x, y số nguyên} Goi Z* va Z lan lượt là tập các số nguyên dường 0à
Trang 3130 Lip binh Pascal - Tap 3
Hay viét chuong trinh tim ra mét day con chung
lién tuc c6 dé dai lon nhat cua hai day trén
18 Cho hai daéy 86 Gy, dạ, 43, ., a
Cyy Ca, Cay .; Cy
Hay viét chuong trinh chit ra mot day con chung (không cần liên tục) có độ dài lớn nhất của các đã y trên
20 Thing va Thoc
Có 3 người nông dân cần chia nhau 21 thing, trong đó có 7 thùng đầy thóc, 7 thùng đựng một nửa uà
7 thùng rồng Cần chia số thùng 0ò thóc trên sao cho
môi người có số thùng cà số thóc bằng nhau Không được đổ thóc đi uà từ thùng nọ sang thùng bìa em hỗ y giúp 3 người nông dân đó thực hiện được nguyện vong của mình.
Trang 32Phần 2 HƯỚNG DẪN 31
Phần 2: Hướng dẫn
§1 LỆNH LẶP WHILE /# Í Câu hỏi, ví dụ, bồi tập
tích:=1; (giá trị đầu của tích)
i:=1; (gid tri déu cua tf
While i<=N do (trong khi icon chua vuot qua N} Begin
tich:= tich*i; /nhân dồn ¡ uào tích)
Ù=I*1; {gid tri tiếp theo của if
Trang 3332 Lip tinh Pascal - Tip 3
Clrscr;
tong:=0; (git tri dau cua tong}
i=; (gia tri dau cua i/
While i<=N do /trong khi còn chưa oượt qua NỊ
Begin
tong:= tongti; /eéng dồn ¡ uào tổng) k= Í+1; (gia trị tiếp theo của t] End;
Writeln( Tổng của 1000 số tự nhiên đầu tiên là: ', tong):
Trang 34Phần 2 HƯỚNG DẪN 33
3 Program P3103;
Uses Crt;
Var n, dau: integer:
Epxilon, sohang, tong: Real;
Trang 3534 Lip hinh Pascal - Tip 3
Write(Cho số x: 1, Readln(x);
Ì=1;
Trang 36Phan 2 HUONG DAN 35
SoO:=0;
While i<=N do Begin
if (A[i] >x) then so:= so+1:
End;
Write('Các số khác nhau là: }; Writeln(A[1])
=2;
While i<=N do Begin
j=1,
While (j<i) and (A[j] <> Afi]) do inc(j);
if j= i then Writeln(Ali});
Trang 3736 Lip tink Paseal - Tép 3
End;
I;=1;
While (i<=N-1) do Begin
=1;
While j<=N do Begin
if A[j] > afi] then Begin
T:= A[]; A|j}= All): Ali) T,
End;
j=);
Trang 38Writeln(‘Day sé sau khi da sap xếp là: ');
For i:=1 to N do Write(A[i]:4):
End;
kt:=true;
If N>2 then Begin d:=a{1]-al2];
=2;
While (<N)and(a[i-a[i+1]=d) do ínc(Ì);
If t<>N then kt:=false;
Trang 3938 Lip bins Pascal - Tip 3
End;
If kt then
Write('Day a1, a',N; lập thành 1 cấp số công)
Else Write(Dãy a1, a',N,' không lập thành một
End;
t= 1:
While (i<=(S div2)) and (A[ï] = A[S - i + 1]) do inc(i);
if i> (S div 2) then Writein(Day nay la đã y đối xứng) Else Wrileln(Dấy này không đối xứng);
Readin;
End
Trang 40Phần 2 HƯỚNG DẪN 39
10 Program Sap_xep;
Uses Crt;
Var N, i,j: byte:
Hoten: array[1 100] of string [30};
namsinh: array[1 100] of integer;
T: integer;
S: string|30};
Begin
Cirser;
Write('So nguoi N= '}; Readin(N);
Writetn(Nhap danh sach nhan sU:},
For i:=1 to N do
Begin Wnte(Họ và tên người ì,/: ); Readln(Hoten[il); Wiite(Năm sinh: );, Readin(Namsinh[i]); End;
While i<=(N-1) do
Begin jan While j<=N do /sắp xếp thao tuổi tăng dân) Begin
lf Namsinh[i| > Namsinhlj] then Begin
S:= Hoten[i] T:= Namsinhli]; Hoten{i}:= Hotenfj);
Namsinh{i]:= Namsinhfjj; Hoten|[j}:= S;