BÙI VIỆT HĂ NGUYÍN QUANG HÒA TỰ HỌC LẬP TRÌNH PASCAL Tập 4
(Có thể tham khỏdo dĩ day cho hoe sinh ldp 9)
Trang 4Phần I BĂI TẬP - 3
Phan 1 BAI TAP
§1 ƠN TẬP
DỮ LIỆU VĂ THUẬT TOÂN TRONG PASCAL
ES cau hei, vi du, băi tập
1 Hơi kiểu khai bâo sau có tương đương uới nhau không: Var Ch: Char Var St: String[1]; Sau đó liệu ta có thể thực hiện câc lệnh gân như sau hay khĩng: a St=Ch; b Ch:=St;
Trang 54 Ve hae hip Brink Pascal
3 Lập chương trình in ra trín măn hình 10 dòng đầu tiín của tam giâc Pascol theo dạng sau: 1 1 1 1 2 ‡ 1 3 3 1 { 4 6 4 1 4 Lập chương trình in ra trín mờn hình 10 dòng đầu tiín của tam gidc Pascal theo dang sau: 1 1 14 1 2 1 1 3 3 1 1 4 6 4 14
5 Giả sử giâ trị ban dau cua X lă 0.1 Hê y tính gió trị cua X sau cúc lệnh sau:
a If 2+ 4 =5 then X:=X+1;
b If (142 =3} or (4 < 1) then X:=round(X+1);
c If ((2 > 3) or not({1+ 1 =2} and (3 < 5))} then X:=X*X;
Trang 6Phần 1 BĂI TẬP 5 N,i:integer; Begin Readin(N); For i:=0 to N do A(i]:=0; While A[N] <> 1 do Begin For t:=1 to N do Write(A[N-i]}: Whiteln; i:=0; While Afi} = 1 do Begin A(i]:=0; t=i+1; End; A[i]'=1; End; End 7 Nhập xâu ký tự có dạng sau từ băn phím: X;‡+X,+X+ TX, ˆ
có dạng: câc chữ số nối tiếp nhau bằng dấu + hoặc - Viết chương trình tính giâ trị của biểu thức trín
8 Câ một chuyĩn gia lap trinh Pascal phât biểu lă bất
cu mot lĩnh lap While nado cũng có thể thay thế tương đương bằng một lệnh lặp RepeaL Ngược lại mọi lệnh Repeat đều có thể thay thế bằng lệnh While
Điều đó có đúng không? Hê y cho 0í du minh hoa 9 Một lệnh lap For cĩ thĩ thay thĩ bằng lệnh While
Trang 76 Tee hac Li think Pascal
10 Trong Pascal có lệnh tạo nhê n (Label) va lệnh chuyển
điđu khiến đến nhê n (Golo) Trín thực tế có thể thấy rằng lệnh tạo nhên uù chuyển điều khiển tới nhên dễ gđy rồi chương trình uă khó theo dõi Em hêy chuyển chương trừnh sơu có nhấn thănh hhông có nhấn mă tâc dụng của chương từnh không thay đổi Program VD; Label 100, 101; Var i, a: integer; _ Begin For i:=1 to 100 do Begin Writeln(‘Nhap a: '}; Readln(a), Ifa <= 0 then goto 100; Ifa mod 5 = 0 then Begin Writeln(a); goto 101; End; 100: End; Writeln(Không tìm thấy): 101: End
LH Bai tap vĩ nha
11 Viĩt chuong trinh nhap sĩ tw nhiĩn N va in ra dòng thứ N cua tam giâc Pascal
12 Xĩt ban cd vua 8 x 8 Câc ô được đânh dấu bởi 0ÿ
Trang 8Phần 1 BĂI TẬP 7
Cho trước b 0ị trí, trín đó đê xếp b quđn hậu: (ÌtÌ} (ial),
ĐM):
a Viết chương trình biểm tra xem b quđn hộu trín có Ở trong trạng thói độc lập huy bhông (tức lò không quđn năo có thể khống chế quđn năo)
b Trường hợp câc quđn trín đê độc lập hê y kiểm tro
xem có thể bổ xung thím một quđn hậu nữa mă uôn bảo đđm tính độc lập được hay không, nếu được hêy chỉ ra 0} trí của quđn hậu mới
13 Xĩt băn cờ uua 8 x 8 Câc ô được đânh dấu bởi uị tri hang va cĩt, vi du vi tri (1,2) chi ra vi tri hang 1 cột 2 Cho trước b uị trí, trín đó đê xếp b quđn tốt: (iqds), (lake)
(4):
Hêy uiết chương trình kừểm tra xem có thể xếp một quđn hậu trín băn cờ sao cho nó có thể khống chế toăn bộ b quđn tốt Nếu được hê y chỉ rd uị trí của quân hậu đó
14 Xĩt ban co vua 8 x 8 Câc ô được đânh dấu bởi uị
trí hang va cĩt, vi du vi tri (1,2) chi ra vi trí hăng 1 cột 2
Cho trước Ỉ uị trí, trín đó đê xếp k quđn tốt: (IÌ\, (lạ),
(isk):
Hêy uiết chương trình để chỉ ra 0ă xếp thím trín ban cờ một số tối thiểu nhất câc con hau sao cho chúng sẽ khống chế toăn bộ b quđn tốt Chương trừnh phải chỉ ra duoc vi tri cia mỗi quđn hậu được xếp
15 Trín một băn tròn người ta xếp n số 0 uă 1 Giả sử
dêy số đê cho được uiết dưới dạng: a; œ¿ aạ d„ Sơu mỗi
phút câc số trín uòng tròn sẽ tự biến đổi theo câch sau:
Trang 98 Tee hae &y Drink Pascal
tại nếu hai số bín cạnh khâc nhau thì sẽ thay đổi Ó —› 1 bă 1 ¬20
Cho trước dê y số như trín, lập chương trình tính sau b phút (k nhập từ băn phím) dêy số ban đầu sẽ thay doi như thế năo :
16 Giả thiết giống băi trín Dễ thấy răng dê y đê cho
sẽ không biến đốt nữa bhi mù tất ca cdc sĩ cua day lă như nhau
Cho trước một dê y bất ky ban dau, hay kiĩm tra xem quâ trình biến đổi trín có bị dừng lại hay không Hêy kiểm tra vdi cdc day cu thĩ sau:
a, 101010101010 b 100100100100
17 Giả thiết giống băi trín Dê y đê cho ban đầu được gọi lă Tuđn hoăn nếu qua trình biến đổi đến một lúc năo đó sẽ xuất hiện lại dê y ban đầu
Cho trước một dêy ban đầu hêy kiểm tra xem nó có phúi lò tuần hoăn hay hhông Hũ y biểm tra cu thĩ vdi cdc
day sau:
a, 1010101000101100 b 0100010101111001
18 Cần phải xếp 20 bao gọạo 0ăo 8 nhă kho sao cho
Trang 10Phần 1 BĂI TẬP 9
a Giải quyết băi toân trín nhưng uới tổng số 24 bao gạo b Giai quyết bời toân chỉ uới 16 bao gạo
19 Ma tran ky ao bac N la bang số vuĩng N x N bao gom cdc 61, 2, 3, ., N? sưo cho tổng số câc hăng, câc cột 0ò
câc đường chĩo đíu bằng nhau
Em hê y thử tìm mu trận bỳ ao bậc 4 20 Hê y thử tìm ma trận ky ao bac 5
§2 KHÂI NIỆM THỦ TỤC
4 Cau hĩi, vi du, bai tap
1 Trong phần bhai bâo của thủ tục có thể khai bâo một thủ tục khâc được hay không? Cho uứ dụ
2 Trong chương trình của một thủ tục có thể sử dụng câc biến:
a Được khai bâo trong chương trình chính hay không? b Được khơi bâo trong câc thủ tục khâc hay không? 3 Hêy lập một thủ tục nhập 2 số nguyín A, B; sau đó tinh vĩ in ra man hinh thương A/B
4 Việt thủ tục nhập dữ hiệu cho một mỏng số cho trước 5 Hêy lập thủ tục tìm ma trận chuyến u‡ của ma trận A khích thước mxn cho trước
Trang 1110 Tec hee Lip, Drink Pageal b Tổng lập phương câc số hợng nằm trín hùng lẻ
7 Dùng thủ tục, đối uới một mảng cóc số thực, hêy tính tổng của câc số hang đm va in kĩt qua ra man hinh
8 Viết một thủ tục nhập một mỏng hai chiíu từ bờn, phím 9 Dùng thủ tục chuyển một số tự nhiín n cho trước sang hệ cơ số 2 10 Dùng thủ tục giải phương trình bậc nhất: qœx+b=0 11 Dùng thủ tục giải phương trừnh bậc hai : ax?+bx+c=0 (ma) Bỏi tập về nhỏ
12 Có thể khai bâo tín của thủ tục trùng uới tín của
một thủ tục có sẵn trong Pascal được không?
13 Dùng thủ tục giải hệ phương trình tuyến tính 2 ổn
cho trước (câc hệ số được nhập uăo từ băn phím): ayx+b¡y =cy
a +boy =Cy
14 Hay viĩt lai thit tuc INSERT d6ĩi vdi mĩt chudi ky tt cho trước tuỳ ý
15 Hêy uiết lại thủ tục DELETE đối uới một chuỗi ký tự cho trước tuy 3
16 Viết một chương trùnh Pascal bằng câch thực hiện lần tượt cdc cĩng viĩc sau:
a Lập thủ tục nhập ba số thực dương a, b, c từ băn phím
b Lập thủ tục kiểm tra xem ba số trín có lập thănh ba
Trang 12Phần 1 BĂI TẬP 11
c Viết thủ tục tính diện tích tam giâc
d Viết thủ tục tính câc trung tuyến của tam giâc e Viết hoăn thiện chương trinh chính
17 Cho trước mảng PỊ1 50) oƒ tnfeger, hồ y uiết thủ tục sinh ra mỏng trín bao gồm câc số nguyín tố theo thứ tự cua chi so
18 Viết chương trình Pascal hoăn chỉnh để thực hiện theo thực đơn như sau:
1- Nhập dứữ liệu (nhập 3 số thực a, b, ©)
2- Giải phương trình ax? + bx + e = 0 3- Thoât khỏi chương trình
19 Viết chương trừnh Pascdl thực hiện theo thực đơn sau: 1- Nhập dữ liệu (nhập 4 số thực a, b, c, d)
2- Tính phần tử Min 3- Tính phần tử Max 4- Thoât khỏi chương trình
20 Viết chương trình Pascal hoăn chỉnh thực hiện câc công uiệc của thực đơn sau:
1- Nhập dữ liệu (nhập số tự nhiín n)
2- Phan tich ra thừa số nguyín tố (phđn tích n thănh tích câc số nguyín tố)
3- Thoât khỏi chương trình
21 Viết chương trình Pascal hoăn chỉnh thực hiện công uiệc của thực đơn:
1- Nhập số tự nhiín N
Trang 1312 Tee hac LE Drink Pascal
3- Biểu diễn N theo cơ số q 4- Thoât Chú ý: 7œ gọi biểu diễn số tự nhiín N theo cơ số q lă biểu diễn: N= a,a,.; 4¡aạ với N =a’ + aig’! + +a,q +a, $3 THAM SỐ CỦA THỦ TỤC
&S Cau hĩi, vi du, bai tap
Trang 14Phần 1 BĂI TẬP 13 Writeln( Giâ trị x luc nay bang:’, x); Readln; End
2 Chương trình sau đây mình họa uiệc truyền biến cho chương trình con Procedure cong không có danh sâch biến nhưng có khai bdo biến X trong phần khai bao VAR, vi bđy biến x của nó lă biến mới (biến X của chương trình chính bị che) Khi chụy cong biến x của nó sẽ nhộn gia trị khởi đầu băng 0 ù chưa gân giú trị khỏi động Program VD; Var x: integer; (*= ===") Procedure cong; Var x: integer; Begin X:= X42; Writeln ('x+2 =', x) End; ("== ====") Begin (chương trình chính} Write (Hê y nhập x: ) Readln(x); cong; Writeln (Giâ trị của x lúc năy bằng ', x); End
3 Chương trình con sau đđy mình họa uiệc truyền biến cho chương trình con
Trang 1514 Tu hac big Drink Pascal
động tuỳ thuộc lời gọi của chương trình chính Khi chạy cong biến của chương trình chính bi che vi vĩy khi cong kĩt thúc biến x của chương trình chính uẫn mang giâ trị cũ Program VD; Var x: integer; Ĩ== ‘) Procedure cong(x: integer); Begin _X=X+1; Wiriteln (x+1 =, x); End; ("35 ‘ Begin (chương trình chính} Wrile(Hê y nhập x: ); Readln(x); cong(x); Wiriteln( Giâ trị của x lúc năy bằng ', x); End
Trang 16Phần 1 BĂI TẬP 15 (* = ) Begin {chương trình chính) Write(Hêy nhập a: ); Readln(a), Write(Hêy nhập b: 3 Readin(b): nhan (b);
Writeln(Giâ trị của a lúc năy bằng ', a);
Writeln ( Giâ trị của b lúc năy bằng ', b);
Readin; End
5 Chuong trinh sau đđy mình họa uiệc chương trình cơn sẽ khởi động câc biến có trong danh sâch biến theo thú tự danh sâch biến mă chương trình chính ấn định cho nó Program VD; Var a, b: real: ("== ==== *) Procedure Enter (Var a,b: real); Begin ,
Trang 1716 Tec hoe Lig Drink Pascal ƒ=z=====z==erz======e : 9 Begin {chương trình chính} Enter (a,b); Chia (b,a); End 6 Giri phương trừnh trong pham 0ì số nguyín bhông đm: x†y+z=10
7 Giải phương trình: x+y†2Z12 trong phạm vi sĩ nguyín không đm uới điều biện x« ả,
8 Giải phương trình: x+yt2z13 trong phạm vi sĩ nguyín không đm uới điều biện x<4, <5 uă 7<6,
9 Cho trước câc số tự nhiín N, a, b, c Giới phương trình sau trong phạm 0ì số nguyín bhông đm: x+y+z=N uới điều kiện x<ơ, y<b 0ă z<c
(LE) Bòi tập về nhă
10 Dêy số thực được định nghĩa như sau: a,=2
ay = a,(6 - a4,)/4
"Vil chuong trình tính dêy trín với n khâ lớn (khoảng
10000) uă uới độ chính xâc khoảng 20 chữ số sau.dấu phấy
thập phđn
Em có nhận xĩt gì uề đê y số năy?
Trang 18Phần 1 BĂI TẬP 17
12 Cho trước xđu nhị phđn Hêy tính số bậc bhông lặp của xđu trín (tức lò số lớn nhất b thỏa mê n xđu lă không lặp bâc b uă không lă không lặp bâc b- 1)
18 Một xđu nhị phđn gọi lă "chuẩn" nếu nó không chứa hai số 0 liền nhau
a Liệt kí vă tính số câc xđu nhị chđn "chuẩn" độ dăi 3
b Liệt kí vă tính số câc xđu nhị phđn "chuẩn" độ dăi 4
c Liệt kí vă tính số câc xđu nhị phđn "chuẩn" độ dăi 5 d Gọi A, lă số câc xđu nhì phđn chuẩn độ dăi n Hê y tính A,
14 Gia thiết giống như bời trín Em hêy chứng mảnh cĩng thite sau: AFA +A
15 Viĩt chuong trinh liĩt kĩ va tinh gố tất cả câc xđu nhị phan d6 dai 6 va khong chita 3 số0 hiín Hếp
16 Goi A, la sĩ cdc xu ký tự độ dăi n uă chứa 3 số 0 liín tiếp Gọi B, lă số câc xđu bý tự độ dăi n uă không chứa 3 số 0 liín tiếp Rõ răng ta có A,+B,=2", Tìm công thức tinh A, va B,,
17 Cấu trúc dữ liệu Ngăn xếp:
Một mảng dữ liệu ngăn xếp lă mảng dữ liệu trong đó câc phần tử được lưu trữ uò xử lý theo nguyín tắc “Văo sau ru trước”, tức lă phần tử đưa uăo lần cuôi cùng sẽ được dua ra dau tiín (Giống như ngăn xếp, đưa uòo đầu tiín
nằm dưới đây thì không thể lấy ra trước được) Đối uới dữ liệu biểu ngăn xếp (Hếng Anh gọi lă Staek) chỉ có hai phĩp
toân: Đưa uăo (Push) uă Lấy ra (Pull)
Trang 1918 Tee hae “ Drink Paserl
18 Cấu trúc dữ liệu Hăng đợi:
Một mảng dữ liệu Hang doi lă mảng dữ liệu trong đó
câc phần tử được lưu trữ öuă xử lý theo nguyín tắc "Văo trước ra trước”, giống như 0iệc xếp hăng mua uĩ, ai xếp trước mua trước Đối uới kiểu dữ liệu Hăng đợi cũng chỉ có hai phĩp toân la Push va Dull giống như băi toân trín,
Hêy mô tả một kiếu dữ liệu Hằng đợi đơn giản uă hai thu tuc Push va Pull
19 Nguồn gốc số Fibonaci:
Trín một hòn đảo hoang người ta đặt uòo một cặp thỏ non (một đực uă một câi) Câc cặp thỏ non chỉ trưởng thănh sau 2 thâng Khi đê trưởng thănh câc cặp thỏ sẽ
sinh ru một cặp thỏ non sau mỗi thúóng Tính số cặp thỏ
trĩn dao sau k thang
Chúng minh rằng số cặp thỏ cần từn trín đảo chính bằng số Fibonaci thứ b
Băi toân trín lần đầu tiín được mô tả trong quyển
sâch Liber abaci của tâc giâ PYbonaci người Italia 0uăo thế kỷ thứ 13 va tín gọi số Fibonaci bắt đầu có từ đó
§4 KHÂI NIỆM HĂM
/#Ế Cđu hỏi, vĩ dụ, bởi tập
1 Viết đoạn chuong trinh mĩ ta Function tinh gid tri của biểu thức:
Trang 20Phần 1 BĂI TẬP 19
2 Tinh ham s6 a”, ở đđy a lă số thực uă n lă số tự nhiín tuỳ y được nhập ăo từ băn phím
3 Viĩt Function cho gid tri Boolean hiểm tra tính
nguyín tố của một số tự nhiín cho trước
4 Dùng FuneHon tính UCLN của 2 số tự nhiín +, y theo thuột toân Oclit
5 Dùng Function tâch từ đầu tiín rơ khỏi một xđu ký
tự cho trước
6 Viĩt Function cho gid tri Boolean kiĩm tra xem một xđu cho trước có phải lă một xđu đốt xứng không
7 Tính +, ở đđy x»0 uă y lă 2 số thực tuỳ ý được nhập vdo ti ban phim
8 Dung Function tinh UCLN cua k sĩ tu nhiĩn theo thuật toân Oclit
9 Viết lại hăm Int(x) tinh giâ trị phần nguyín của số thực x (tức lă số nguyín lớn nhất không uượt quâ +)
10 Viít hăm tính số nguyín gđn số thực x nhất 11 Viết hăm số tính khoảng câch gần nhất từ số thực
x tới cúc số nguyín
12 Viết hăm số Euler gín) uới n tự nhiín tính số câc số tự nhiín nhỏ hơn n bă nguyín tố cùng nhưu uới n
IRR) Bòi tập về nhỏ 13 Viết ham s6 tinh n!
Trang 2120 Te bac hig think Pascal
15 Cho S1, S2 lă hai xđu hý tự cùng độ dòi Gọi
d(S1, S2) uới S1, S2 hơi xđu bý tự cùng độ dời, lă tổng số
câc 0Ÿ trí khúc ruhau trong xôu
Ví dụ: dCabcd’, ‘achc')=2 (cdc vi trí 2 uă 3 )hâc nhau)
Viết hờm số tính d(S1, S2) Số d(S1,S2) được gọi lă
Khoảng câch ga Š1 va S2
l6 Cho trước xđu nhị phôn S Viết chương trừnh liệt bí tất cả cúc xđu nhị phđn Sˆ cùng độ dăi uớởi S sao cho d(S,S%1
17 Cho số tự nhiín N Viết chương trình kiểm tra xem ÂN có thể biểu diễn thănh tổng của một số số tự nhiín liín tiếp (> 1 hạng tử) được hay không Nếu đúng hĩy in ra một biểu diĩn nhu vay
18 Số tự nhiĩn N được gọi lă "Tích bậc k” nếu nó có thể
biểu diễn dưới dạng tích của b số tự nhiín (>1)
Vi du: một số tự nhiín la Tích bạc 2 bhi uă chỉ khi nó lă hợp số:
Cho trước số tự nhiín N, kiểm tra xem N có phải lă
Tich bĩe 3 hay khang
19 Goi A, la tap hợp câc số tự nhiín lă Tích bậc k Dễ thấy khẳng định sau:
A1A25 A3 Ăk Ak†1D
Số tự nhiín n thuộc A, nhưng không thuộc A„ được goi la có TÝch thực sự bậc k Câc số nguyín tố lă những số có Tích thực sự bộc 1
Trang 22Phần 1 BĂI TẬP 21 k2 "ai ks Hêy chứng mình rằng khi đó n lă số có tích thực sự bậc: k1 + k2 + + ks, sau: N= pp, 20 Viĩt chuong trinh nhap sĩ tv nhiĩn N va tính bậc tích thực sự của nó 21 Xĩt hăm số NQ xâc định trín tập câc xđu bý tự chỉ bao gồm cdc ky tuw'0','1', .,'9' uă được xúc định như sau: NÓ) =0, N(x)= [T Lnếux cắn vă | nếu x lẻ, N(uv) = N(u) + NV), với u,v lă câc xđu ký tự tương ứng a Tinh N( 1233536535)
b Tinh N(u) voi u lă xđu bat ky
22 Cho trước n số tự nhiín at, 8; a„ Gọi đ !ă UCLN của n số trín Hê y tìm câc sốtp,, D;, Dạ sơo cho: d # pịa; +
pra + t Đnđr
§5 BIẾN CỤC BỘ, BIEN TONG THE
TRUYỀN THAM BIẾN CHO THỦ TỤC/ HĂM
#@ Cđu hỏi, ví dụ, bời tập
1 Câc khẳng định sau đúng hay sai:
Trang 2322 Tuc hac big trink Pascal b Biến tổng thể lă biến mô tả trong phần khai bdo của chương trình chính c Biến cục bộ uă biến tổng thể trong rột chương trừnh có ` thể trùng tín
2 Câc khẳng định sau đúng hay sai:
ø Biến cục bộ không có giâ trị ở bín ngoăi khi tín của biến đó không được khơi bâo ở bín ngoăi
b Giâ trị của biến cục bộ sẽ được gù? nguyín khi biến đê được khai bâo ở bín ngoăi
c Giâ trị của biến tổng thể hoăn toăn không phụ thuộc uăo uiệc thực hiện bín trong cóc hăm va thủ tục
Trang 24Phần 1 BĂI TẬP 23
5 Cac ham va thu tuc trong Pascal có thể gọi lông
nhau được hay bhông?
Trang 2524 Tex hee Li Drink Pascal Begin {Chương trình chính} a:=1; b:=4; VD_thamso(a,b): Writeln(a:5, b:5); End Kế! quỏ chạy sẽ lă: 2 c Program Tham_so; Var a, b: inleger, (* ‘) Procedure VD_thamso(Var x, y: integer) Begin X:=X†1; y:= y†1; Wnitein (x5, y:5); End; (* ) Begin {chương trình chính} a:=1,b:=4; VD_thamso(a,b); Writeln(a:5,b:5); End Kĩt qua chay sĩla: 2 5 2 5
Bạn hêy giỏi thích xem tai sao hết qua lợi như uậy (phđn biệt tham biến uùă tham tri)
Trang 26
Phần 1 BĂI TẬP - 25
trong phần chương trình của B can goi A Trường hợp trín có thể xử lý trín Pascdl được hay khĩng? Vi sao?
8 Trong phần thđn của thủ tục hoặc hăm có thể gọi
đến chính nó được không?
9 Giải phương trình 2 ẩn sau trong phạm ù câc số nguyĩn: ax + by = c, vdi a, b, c lă cóc số nguyín cho trước Chương trình chỉ cần chỉ ra một nghiệm nòo đó của
phương trình trín hoặc đưa ra phủ định uề nghiệm
10 Mọi phđn số dương va nhỏ hơn 1 đều có thể biểu diễn (duy nhữ1!) dưới dang: a,+ 1 apt 1 nạ + + — ay
Ở đđy ay, ay, a, La cde 86 tu nhiĩn
Việt chương trình nhập hai số tự nhiín p, q từ băn
phím uới p<q Sau dĩ tim day ay, a, ., a, lă khai triển của
phĩn s6 plq Kết quả thể hiện trín măn hình
LE) Bai tap vĩ nha
11 Viết thủ tục:
Compare (S1,S2: String; Var Kq: String)
Trang 2726 Te hac Lig trivh Pascal
12 Cho n xđu ký tự S1, 82, ., Sn Goi d(U,V), voi U, V la hai xdu ky tu bất bỳ, lă tổng số cúc ký tự không giống
nhau trong hai xđu trín, môi loợi ký tự chỉ được nhớ một
lan Vi du daabbe’,'bedd') = 9 ù chỉ có hai ký #ự a 0ỉ ở lă không giống nhau trong câc xđu trín
a Viết hăm số tinh d(U,V)
b Tính Max(d(Si,Sj)) vă Min(d(Si,Sj))
13 Cho một bình hoa có K bông hoa Hai đối thủ lần
lượt hâi -
Luật chơi :Mỗi lần chỉ được hâi từ 1 đến M bông hoa (M<K cho trước).Ai hâi được bông hoa cuối cùng thì người đó sẽ thắng cuộc
Hêy thử uới K=2A M=5,
Lập chương trình để Mây tính chơi uới người
14 Cho bảng số uuông NxN cho bởi mỏng 2 chiíu Nj |) Viết chương trình tính phần tử Max của mỏng trín trong câc miền sau của bảng số:
a b € d e,
15 Hừm Mobius của một số tự nhiín n được định nghĩa như sau:
M(n) = 1 nếu n =1 hoặc n biểu diễn thănh tích của một số chẩn câc số nguyín tố khâc nhau, M (n) s —1 nếu n biểu diễn thònh tích của một số lẻ câc số nguyín tố khâc nhau
Trang 28Phần 1 BĂI TẬP 27 Hay uiết chương trình tính hăm M(n) 16 Ta định nghĩa: Tổ hợp chập b của n phđn tử lă số dạng: _ n! C@.K) = no! hay một câch định nghĩa khâc C(n,Ỉ) lă hệ số của khơi triển đa thức: (x + y)" = x" + Cín,1)x"1y + + Cín,k)x 9t + + Chứng mình câc đẳng thức sau đđy: a C{2n,2) = 2C(n,2) + n* b C(n,k)C(k,m) = C(n,m)C(n-m,k-m) c C(m+n,2) - C(m,2) - C(n,2) = mn 17 Chúng mình câc đẳng thức sau đđy: a ©(p+q)= Ð_ C(p.j)C(qr- |) j=0 T b C(n+r+1,)= 5; Cin+i.) „=0
18 Gọi một hoân 0ì aya, a, của (12 n) lă không cđn
bằng nếu vdi moi i thi as>i Goi D, lă số câc hôn uị khơng
cđn bằng của n phđn tử
Viết chương trình tinh D, va in ra tat ca cdc hodn vi không cđn bằng của n phần tử
19 Chứng mình rằng dê y sốD, được định nghĩa trong
Trang 2928 Tye hae Lig, think Pascal Dạ = (n-1 XD,-‹ + D;¿) với n > 1
20 Chứng mình rằng dê y sốD, được định nghĩo trong
bởi trín sẽ thỏa mê n đẳng thức sau:
D,=nD,,+(-1)" vdt moi n
§6 LAM VIEC VOI FILE TRONG PASCAL
FS Cau hĩi, vi du, bai tap
1 Mĩt file van ban trĩn dia cĩ tĩn la SON.INF chita
đúng một dòng bao gồm hai số tự nhiín n, m được uiết
câch nhưu một dấu câch Sau đđy la mĩt vi du vĩ file nay: 4 5
Em hêy uiết đoạn chương trùuh nhập hai số năy từ file trĩn va in bết quả ra măn hình
2 Một fñle oăn bản trín đĩa có tín lă SOD.INF chứa đúng hai dòng, mỗi dòng bao gồm đúng một số tự nhiín tương ứng lò n, m Sau đđy la một uý dụ uề file năy:
4
5
Em hũy uiế! đoạn chương trình nhập hai số năy từ
ke trín va in kĩt qua ra man hinh
3 Mĩt file van ban có tín DATA.TXT lưu trừ số liệu của một mảng n số uă có dựng sau:
- Dòng đầu tiín của file ghi số n
Trang 30Phần 1 BĂI TẬP 29
Viết chương trừnh nhập số liệu cua day trín oăo một mảng oò in ra dữ liệu của mảng trín sau khi đê sắp lại theo thứ tự tăng dần
4 Một file uăn bản có tín DATA.TXT lưu trữ số liệu của một mảng n số 0ò có dụng sau:
- Dăng đầu tiín của ïile gh¿ số n
- Dòng tiíp theo của file ghí n số câc số câch nhau bởi tôi thiểu một dấu câch
Viết chương trình nhập số liệu của đêy trín oăo một mang va in ra dit liĩu cia mang trĩn
ð Viết câc thủ tục nhập dữ liệu từ file cho cúc trường hợp của 4 băi trín
6 Lăm băi tương tự băi 3 Điểm khúc biệt lă ở chỗ file đữ liệu không có dòng đđu tiín ghỉ tổng số đữ liệu như
trong băi 3 Chương trình phải tự kiểm tra uă tính số n đó
7 Lăm băi tương tự băi 4 Điểm khâc biệt lă ở chỗ file
dữ liệu không có dòng đầu tiín ghỉ n, chương trình phải tự kiểm tra 0ă uă tính số đó
8 Cho file uăn ban ghỉ số liệu của một bang s6 NxM va co dang sau:
- Đòng đầu tiín ghi hơi số N, M câch nhau bởi dấu
cach
- N dang tiếp theo ghi số liệu của N hăng, môi đăng bao gồm M số câch nhau bởi dấu câch
Trang 3130 Tuc bee hip trinh Pascal 4 5 3 5 -1 12 10 12 3 6 1 1 4 5 10 -11 214 5 7 Viĩt chuong trinh nhap di liĩu tw file trĩn vao mĩt mang sO NXM 9 Mĩt file van ban ghi sĩ liĩu cua hoc sinh cĩ dang sau: 4
Nguyen Van Hung 15G Bui Quang Than 14K Tran Minh Quang 16G
Le Van Minh 15T
Dit liĩu ghi trong file nay có ý nghĩa như sau:
- Dòng đđu tiín ghỉ đúng một số n chỉ số lượng học sinh trong ld p
-ndong tiếp theo môi dong ghi dit liĩu cilia mĩt hoc sinh
- Mỗi học sinh được ghỉ câc dữ liệu sau: Họ vă tín: 20 ký tự
Tuổi: 3 ký tự
Xếp loại: 1 ký lỰ
Trang 32Phần 1 BĂI TẬP 31
10 Lăm tương tự băi trín, điểm khâc biệt lă không có
dòng đầu tiín ghi số lượng học sinh Chương trình phỏi tự nhận biết uờ tính được số đó
IRR| Bai tap vĩ nha
11 Thực hiện tất cả câc thao tâc uới câc dạng file van bản như trong phần Cđu hỏi, ủ dụ, bai tập nhưng theo chiều ngược lại, tức lă thực hiện câc thao tâc ghi
12 Có thể được hay không uiệc thực hiện ghi ru file uốn bản trín một dòng câc biến uới kiểu dữ liệu khúc nhau Ví dụ có thể được hay không uiệc ghỉ ra file như sau:
Wrileln(F, Xau1, So1, Xau2, So2);
uới XaUX lă câc biến biểu strring còn SoX lă biến biểu Real 13 Số liệu được nhập từ một He ăn ban INPUT.TXT uò có dạng sau:
- Đòng đầu tiín ghi số tự nhiín N (N <20)
- Ñ dòng tiếp theo, mỗi dòng ghi một dê y số, câc số câch nhau
bởi dấu câch Số lượng phần tử của câc dê y có thể khâc nhau Viết chương trình nhập số liệu từ file trín, sốp xếp N dêy trín theo thứ tự tăng dđn va ghi kĩt qua ra file
ODUDTPUT.TXT có dụng tương tự như file nhập liệu
14 Một danh sâch lớp được ghi trong một Pie ăn ban cĩ dang sau:
Nguyen Van Minh Nam
Nguyen Tung Chau Nu
Trang 3332 Tue đạc Lig trink Pasenl
Trong d6 ho vĩ tĩn hoc sinh duoc ghi trín độ dăi 20 ky tu, 3 ky tu tiĩp theo sẽ ghỉ Nam hoặc Nu chỉ giới tinh của học sinh đó Số dòng của file năy sẽ bằng số bọc sinh trong lớp
Hêy viết! chương trình thực hiện câc công uiệc sưu: a Nhap tĩn File sĩ liĩu tit ban phim, sau dĩ nhap
dữ liệu từ File uăo bộ nhớ mây tính
b Thực hiện viĩc sap xếp lại danh sâch học sinh trong lớp sơo cho câc bạn Nữ lín trước, câc bạn Nam sau
c Nhập tín Pile kĩt qua tit ban phim va ghi danh sâch lớp sau khi đê sắp xếp lại ru File đó theo mẫu giống như lúc đọc uăo
15 Đầu băi giống băi trín Hê y uiốt chương trình để thực
hiĩn cdc cĩng viĩc sau:
- Đếm xem trong lớp có bao nhiíu bạn lă Nam, bao nhiíu bạn lă Nữ
- Kiểm tra xem lớp có hai bạn năo cùng họ hưy không? Nếu có liệt hí tất cả câc bạn có chưng họ
16 Đầu băi giống bùi trín Hêy oiế! chương trùnh đọc
dit liĩu va in bết quả ra File sau khi đê sắp xếp câc bạn trong lớp theo trật tự sau: trước tiín sắp xếp theo giới tính, câc bạn Nữ trước, Nam sau, sau đó sắp tiếp trong số câc bạn cùng giới theo tín theo thứ tự ABC, sau đó sẽ sắp tiếp theo họ Trong 0ý dụ cua bai trĩn file kĩt qua sẽ có dựng
Nguyen Tung Chau Nu Nguyen Van Minh Nam
Trang 34Phan 1 BAI TAP 33
Tran Quang Thu Nam
17 Cho trước một xđu nhị phđn độ dăi bất kỳ được dua vao tw file vĩn ban |NPUT.TXT Can biến đổi xảu nhị phan nay vĩ dạng toăn số 0 Câc phĩp biến đổi có thể chỉ la mĩt trong câc Ïoại sau:
- Biến đổi xđu con 11 thănh 00
- Biến đổi xđu con 010.thănh 000
Hay chi mĩt cach biển đổi xđu đê cho thănh xđu có
toăn 0 Kết quả thể hiện trong fñile OUTPUT.TXT như sau: Dòng đầu tiín của OUTPUT.TXT chứa xđu ban đầu, sau đó môi dòng lă một xảu tiếp theo sau một phĩp biến đối, xđu cuối cùng lă xđu toăn 0
18 Cho một file uăn bản BLPAS trín đó ghỉ một
chương trình Pascal
Hêy uiết chương trình thực hiện câc công uiệc sau: ơ._ Kiểm tra xem trong chương trình trín số câc từ
Begin có bằng số câc từ End hay không
b Niểm tra tinh đúng đắn của câc chú thích của chương trình: số câc ký tự "[' có bằng số câc ký tử
^“ không
19 Một uăn bản có tín BL.PAS chứa một chương trùnh Pascal hoăn chỉnh Trong chương trình năy trín một dòng có thế chứa nhiều lệnh
Em hêy uiết chương trình ín ra file mới có tín BLMOI.PAS chương trình Pascal trín sao cho thỏa mê n điều kiện môi lệnh phải nằm trín một hăng
Trang 3534 Tue haz ⁄% Drink Pascal
khâch được ghi trín một dòng, mỗi biện hăng được ghủ rõ số cđn trín kiện hang do Vi du mot file nhu vĩy cĩ dang sau: 4 12 4 55 62 21 15 5 1 6
File trín có ý nghĩa sau: có tốt cả 4 hănh khâch, hănh
khâch 1 có ð biện hăng uới số cđn tương ling la 12, 4, 5.5, 6 Uỉ 2kg, khâch thứ hai có 1 kiện nặng 21 kg
Hêy uiết chương trừnh thực hiện câc công uiệc sưu:
a Tính tổng số cđn của mỗi hănh khâch va in kĩt qua
ra file có tín CAN.KQ, mỗi hănh khâch lă một số trín một hang Ví dụ uới file đầu vao như trín thì bết quả sẽ lă:
29.5 21 20 7
b Kiĩm tra va in ra những khach hang khĩng di: tiĩu
chuẩn đi tờu Số liệu duoc ghi ra file cĩ tĩn HUY.KQ, modi
dong ghi sĩ thu tu hanh khdch khong du diĩu kiĩn Biĩt
rằng hănh khâch sẽ không đủ điíu kiĩn di tau nĩu tĩng sĩ
trọng lượng hùng bóa lớn hơn 20 kg hoặc có quâ 10 hiện hăng Trong vi du trĩn câc hănh khâch số 1 uò 2 lă không đủ điíu kiện do đó file bết quỏ sẽ có dạng:
Trang 36Phần 1 BĂI TẬP 35
§7 ON TAP
ZS Cau hĩi, vi du, bai tap
1 Viĩt chuong trinh con tính diện tích hình tròn, hình buông, hình thoi trong một chương trình chính Sau đó hoi va chọn một số phương ân tính diện tích bằng câch chọn trong bảng chọn lệnh sau:
1- Tính diện tích hình tròn 3- Tĩnh diện tích hình uuông 3- Tinh diĩn tích hừnh thoi
2 Hêy uiết lại chương trình giải phương trình bậc 2 bằng câch đưa oăo câc thủ tục tính giâ trị Delta
3 Hêy uiết chương trình cộng 2 số tự nhiín cho trước được nhập uòo từ băn phím uới bết quủ được oiế! trong hệ cơ số 9
4 Tim va inra tất cỏ câc số Hỷ nhiín nguyín tố có 3
chữ số lă số đối xứng trong câch viĩt cơ số 2
Trang 3736 Tue bac Lip tien Pascal
8 Câc số được utết trong hệ đếm cơ số 16 sử dụng câc ký tự sau: 0, 1, 9 uă A,B,C,D, E, F chỉ câc số 10, 11, 12, 13,
14, 15
Hêy uiết chương trình nhập số tự nhiín N từ ban phím uă chuyển số đê cho sang hệ đếm 16 (còn được gọi lă hĩ hexa) 9, Lap chương trình thực hiện theo thực đơn sou- 1- Nhập số tự nhiín N 2- Nhập số M trong hệ đếm 16 3- Chuyín N sang hệ 16 4- Chuyển M sang hệ 10
5- Ghi kĩt qua ra file
Chu y: Tĩp kĩt qua sĩ có tín KQ12.TXT uă bao gầm 4
dòng Dòng thứ nhất gh: số N dạng thộp phđn, dòng thứ 2 ghi s6 M dui dang Hexa, dong thu 3 ghi N dang hexa, dong
thit 4 ghi M dang thap phan
LL] Bỏi tập về nhă
10 Cho trước câc hĩ sĩ nguyĩn 4, a1, ., ay Giai phuong trinh sau trong pham vi sĩ nguyĩn:
ax tax) + tayx ta, = 0
11 Thuật todn cộng số nguyín:
Xĩt cức biểu diễn nhị phđn của câc số tự nhiín:
a = đ,+đ,; 3yđu,
Trang 38Phần 1 BĂI TẬP 37
Tu có thuật toân sau mô tă phĩp công câc số nguyín theo
câch biểu diễn nhị phđn:
Gia suf a = 8yvđy¿ yaạ, b = bạ„b„¿ bịbạ bờ kết quả của phĩp cộng: a+b=c€=(0„;0„¿ C¡Cg Thuật toân cộng số nhị phđn như sau: e:=0 for i:=Ũ lo n-1 do Begin f:=int((a, + b, + e)/2) c;= a, + b,- 2f e:=f End G.;= ©
Hăy chúng mình tính đúng đắn uă mơ tả thuật tôn trín bằng chương trình Pascal
12 Thuật toân nhđn số nguyín: Để mơ tả thuật tôn nhđn câc số nguyín bằng biểu diễn nhị phđn ta cần định nghĩa hai phĩp todn sau:
Gia sử a = a,;a,¿ aôạ nỉ b = bạbạ¿ bịby khỉ đó định nghĩa phĩp todn left (chuyĩn sang trai) va right (chuyển sang phat) một số bit như sau:
a left k=a„„ a;a00 0 (k số 0 bín phải)
b right k = 00 0a,,a,„¿ 4-„{k số 0 bín trâi)
Trang 3938 Tee hoe Lit Rrink Pascal
Kế? quả sẽ được gún cho biến p for i:=Ũ to n-1 do Begin lfb,= 1 thenc,:=a left / Else c, :=0 End; p:=0; for ì:=0 to n-1 do p:=ptc;
Viết chương trình mơ td thuật tôn trín 13 Thuật toân nhđn nhanh:
Trong băi tập năy sẽ mơ tả một thuật tôn nhôn rốt nhanh câc số nguyín
Gia sử ta co: a= 8¿n-13¿n.; 3t3p va b = Don-tDeng:-D4Dp la câc
biểu diễn nhị phđn của a uờ b Chú ý rằng ta có thể coi
chúng có cùng độ dăi 2n bằng câch bổ sung câc bít 0 uề bín trâi của câc số đó
Đặt a = 2Ă, + Âc vă b = 2B, + Bụ
Oday Đ¡= đ¿a:3› 3n,tđu, Âo = đ, ;đn¿ 8đu,
By = Dyn tDgn.2:-Dae Dp, Bo = Bp 1Dp-2 - bo
Khi đó thuật toân nhđn nhanh được thể hiện trong công thức sau:
ab = (2"+29A:B, + 2(ArAj(ByB,) + (2° + 1)A,Bo
a Chitng minh tinh ding dan cia cong thitc trĩn
b Viết chương trình mơ tỏ thuật tôn trín
14 Chứng mình rang day sĩ Fibonaci F,, Fy, Fạụ thỏa
Trang 40Phần 1 BĂI TẬP 39
FF, + FessFast = Four VOL mot sĩ tu nhiín K, n 15 Chứng mình câc đẳng thức sau uới số EYbonaci: a Fi? +P + +F 2 =F b.F, + Fst + Pony = Foy 16 Dêy số Lucas được định nghĩa như sau: Lụ=2, Lị=1 uă L;=L„¡†L„; oới n>1 nt? a Chúg mình liín hệ sau giữa câc số Lucas va Fibonact: Fa+F,¿ = L¿.x b Chúng minh hằng đẳng thức: Ly? +L/ + + L2 =L;L2„ị +2 17 Chứng minh câc đẳng thức sau:
a FoF” Fy? = (A)
b FoF, + FyF, + + Fons Fan = Fan
6 Fy = F, + F; > F, + one ™ Fo + Fạa = F;„.-1
18 Dê y số a, được định nghĩa qui nạp nhu sau:
a, = 1
a, = 2
Giả sử tất có câc số tự nhiín nhỏ hơn n đều đê được
xúc định lă thuộc da y trín hay không
Khi đó sốn sẽ được xóc định thuộc đê y trín nếu nó có thể biểu diễn duy nhất dưới dụng tổng của hai số bhâc nhau của đê y trín
Ta cĩ vi du a,= 3, a, = 4, as = 6,