際際滷

際際滷Share a Scribd company logo
Nguy畛n L箪 H畛u Hu畉n
B畛 GIO D畛C V O T畉O H畛 v t棚n th鱈 sinh: .
畉I H畛C HU畉 S畛 b叩o danh: .
----------
畛 THI TUY畛N SINH CAO H畛C NM 2007
M担n thi: Ng担n ng畛 l畉p tr狸nh
(Dnh cho Cao h畛c)
Th畛i gian lm bi: 180 ph炭t
C但u 1: Cho bi畉t k畉t qu畉 in ra mn h狸nh khi th畛c hi畛n ch動董ng tr狸nh d動畛i 但y:
PROGRAM Mystery;
PROCEDURE Permute (var a, b, c, d: char);
VAR e: char;
BEGIN
e:=a; a:=b; b:=c; c:=d; d:=e;
END;
PROCEDURE Cook(n: integer);
VAR c, h, a, r: char;
BEGIN
c:=l; h:=d; a:=u; r:=j;
while (n>5) do begin
Permute(c, h, a, r);
Writeln(c, h, a, r);
c:=chr(ord(c)-1); a:=chr(ord(a)+3);
n:=n div 10;
end;
writeln(c, h, a, r); writeln(n);
END;
BEGIN
Cook(2001);
END.
C但u 2: Ng動畛i ta t畛 ch畛c l動u tr畛 trong b畛 nh畛 c叩c d嘆ng c畛a m畛t vn b畉n d動畛i d畉ng
m畛t danh s叩ch li棚n k畉t k辿p m m畛i n炭t c畛a n坦 g畛i l m畛t d嘆ng. Ta d湛ng hai con tr畛 l
Dau v Cuoi l畉n l動畛t tr畛 vo d嘆ng 畉u v d嘆ng cu畛i c畛a vn b畉n. Cho khai b叩o c畉u
tr炭c d畛 li畛u ny nh動 sau:
Type St80 = String[80];
Tro = ^dongvb;
dongvb = Record
Truoc: Tro; {l動u 畛a ch畛 d嘆ng tr動畛c}
Dong: St80; {d嘆ng vn b畉n}
Sau: Tro; {l動u 畛a ch畛 d嘆ng sau}
End;
Var Dau, Cuoi: Tro;
Gi畉 s畛 vn b畉n kh叩c r畛ng.
Nguy畛n L箪 H畛u Hu畉n
a). Vi畉t th畛 t畛c Chentruoc(Var Dau: Tro; Vitri: Tro; Dong: St80) cho ph辿p ch竪n
m畛t d嘆ng v畛i n畛i dung l Dong vo tr動畛c d嘆ng c坦 畛a ch畛 l Vitri trong vn b畉n m
n炭t 畉u 動畛c tr畛 b畛i con tr畛 Dau.
b). Vi畉t th畛 t畛c Chensau(Var Cuoi: Tro; Vitri: Tro; Dong: St80) cho ph辿p ch竪n m畛t
d嘆ng v畛i n畛i dung l Dong vo sau d嘆ng c坦 畛a ch畛 l Vitri trong vn b畉n m n炭t cu畛i
動畛c tr畛 b畛i con tr畛 Cuoi.
c). Ta 畛nh ngh挑a kh畛i l m畛t d達y li棚n ti畉p c叩c d嘆ng trong vn b畉n. K箪 hi畛u (db, cb) l
kh畛i 動畛c x叩c 畛nh v畛 tr鱈 b畛i 畛a ch畛 d嘆ng 畉u db v d嘆ng cu畛i cb. Vi畉t th畛 t畛c
Chepkhoi(Var: Dau: Tro; db, cb, Noiden: Tro) cho ph辿p sao ch辿p kh畛i (db, cb) t畛i
tr動畛c d嘆ng tr畛 b畛i Noiden trong danh s叩ch tr畛 b畛i Dau. Gi畉 s畛 Noiden kh担ng 畛 trong
kh畛i (db, cb).
C但u 3: Cho c但y nh畛 ph但n T (n炭t g畛c tr畛 b畛i T) c坦 khai b叩o nh動 sau:
Type TroNut = ^Nut;
Nut = Record
Info: Integer;
Left, Right: TroNut;
End;
Var T: TroNut;
a). Gi畉 s畛 c但y T l c但y nh畛 ph但n t狸m ki畉m kh叩c r畛ng, h達y vi畉t hai hm Min(T:
TroNut): Integer v Max(T: TroNut): Integer l畉n l動畛t cho k畉t qu畉 l gi叩 tr畛 nh畛
nh畉t v gi叩 tr畛 l畛n nh畉t c畛a tr動畛ng Info c畛a c叩c n炭t thu畛c c但y T.
b). Vi畉t hm LaCayNPTK(T: TroNut): Boolean cho k畉t qu畉 l True n畉u c但y T l
m畛t c但y nh畛 ph但n t狸m ki畉m, ng動畛c l畉i tr畉 v畛 gi叩 tr畛 False.
C但u 4:
a). H達y m担 t畉 thu畉t to叩n s畉p x畉p theo th畛 t畛 tng d畉n m畛t m畉ng c叩c s畛 nguy棚n theo
ki畛u n畛i b畛t (bubble sort) b畉ng ng担n ng畛 l畉p tr狸nh Pascal.
b). X辿t d達y s畛 sau: 4, 7, 2, 5, 6. H達y cho bi畉t di畛n bi畉n c畛a d達y s畛 ny (s畛 thay 畛i m畛i
l炭c c坦 ho叩n 畛i gi叩 tr畛) khi vi畛c s畉p x畉p 動畛c th畛c hi畛n theo ki畛u n畛i b畛t.
c). Gi畉 s畛 d達y ny g畛m n s畛 li畛u, h達y ch畛 ra tr動畛ng h畛p x畉u nh畉t (ch動董ng tr狸nh ph畉i
th畛c hi畛n vi畛c ho叩n 畛i nhi畛u nh畉t) 畛i v畛i thu畉t to叩n s畉p x畉p theo ki畛u n畛i b畛t v gi畉i
th鱈ch t畉i sao? T鱈nh s畛 l畉n th畛c hi畛n vi畛c ho叩n 畛i trong tr動畛ng h畛p ny.
----------------------------------------
Ghi ch炭: C叩n b畛 coi thi kh担ng gi畉i th鱈ch g狸 th棚m.

More Related Content

Ctdl 2007-2

  • 1. Nguy畛n L箪 H畛u Hu畉n B畛 GIO D畛C V O T畉O H畛 v t棚n th鱈 sinh: . 畉I H畛C HU畉 S畛 b叩o danh: . ---------- 畛 THI TUY畛N SINH CAO H畛C NM 2007 M担n thi: Ng担n ng畛 l畉p tr狸nh (Dnh cho Cao h畛c) Th畛i gian lm bi: 180 ph炭t C但u 1: Cho bi畉t k畉t qu畉 in ra mn h狸nh khi th畛c hi畛n ch動董ng tr狸nh d動畛i 但y: PROGRAM Mystery; PROCEDURE Permute (var a, b, c, d: char); VAR e: char; BEGIN e:=a; a:=b; b:=c; c:=d; d:=e; END; PROCEDURE Cook(n: integer); VAR c, h, a, r: char; BEGIN c:=l; h:=d; a:=u; r:=j; while (n>5) do begin Permute(c, h, a, r); Writeln(c, h, a, r); c:=chr(ord(c)-1); a:=chr(ord(a)+3); n:=n div 10; end; writeln(c, h, a, r); writeln(n); END; BEGIN Cook(2001); END. C但u 2: Ng動畛i ta t畛 ch畛c l動u tr畛 trong b畛 nh畛 c叩c d嘆ng c畛a m畛t vn b畉n d動畛i d畉ng m畛t danh s叩ch li棚n k畉t k辿p m m畛i n炭t c畛a n坦 g畛i l m畛t d嘆ng. Ta d湛ng hai con tr畛 l Dau v Cuoi l畉n l動畛t tr畛 vo d嘆ng 畉u v d嘆ng cu畛i c畛a vn b畉n. Cho khai b叩o c畉u tr炭c d畛 li畛u ny nh動 sau: Type St80 = String[80]; Tro = ^dongvb; dongvb = Record Truoc: Tro; {l動u 畛a ch畛 d嘆ng tr動畛c} Dong: St80; {d嘆ng vn b畉n} Sau: Tro; {l動u 畛a ch畛 d嘆ng sau} End; Var Dau, Cuoi: Tro; Gi畉 s畛 vn b畉n kh叩c r畛ng.
  • 2. Nguy畛n L箪 H畛u Hu畉n a). Vi畉t th畛 t畛c Chentruoc(Var Dau: Tro; Vitri: Tro; Dong: St80) cho ph辿p ch竪n m畛t d嘆ng v畛i n畛i dung l Dong vo tr動畛c d嘆ng c坦 畛a ch畛 l Vitri trong vn b畉n m n炭t 畉u 動畛c tr畛 b畛i con tr畛 Dau. b). Vi畉t th畛 t畛c Chensau(Var Cuoi: Tro; Vitri: Tro; Dong: St80) cho ph辿p ch竪n m畛t d嘆ng v畛i n畛i dung l Dong vo sau d嘆ng c坦 畛a ch畛 l Vitri trong vn b畉n m n炭t cu畛i 動畛c tr畛 b畛i con tr畛 Cuoi. c). Ta 畛nh ngh挑a kh畛i l m畛t d達y li棚n ti畉p c叩c d嘆ng trong vn b畉n. K箪 hi畛u (db, cb) l kh畛i 動畛c x叩c 畛nh v畛 tr鱈 b畛i 畛a ch畛 d嘆ng 畉u db v d嘆ng cu畛i cb. Vi畉t th畛 t畛c Chepkhoi(Var: Dau: Tro; db, cb, Noiden: Tro) cho ph辿p sao ch辿p kh畛i (db, cb) t畛i tr動畛c d嘆ng tr畛 b畛i Noiden trong danh s叩ch tr畛 b畛i Dau. Gi畉 s畛 Noiden kh担ng 畛 trong kh畛i (db, cb). C但u 3: Cho c但y nh畛 ph但n T (n炭t g畛c tr畛 b畛i T) c坦 khai b叩o nh動 sau: Type TroNut = ^Nut; Nut = Record Info: Integer; Left, Right: TroNut; End; Var T: TroNut; a). Gi畉 s畛 c但y T l c但y nh畛 ph但n t狸m ki畉m kh叩c r畛ng, h達y vi畉t hai hm Min(T: TroNut): Integer v Max(T: TroNut): Integer l畉n l動畛t cho k畉t qu畉 l gi叩 tr畛 nh畛 nh畉t v gi叩 tr畛 l畛n nh畉t c畛a tr動畛ng Info c畛a c叩c n炭t thu畛c c但y T. b). Vi畉t hm LaCayNPTK(T: TroNut): Boolean cho k畉t qu畉 l True n畉u c但y T l m畛t c但y nh畛 ph但n t狸m ki畉m, ng動畛c l畉i tr畉 v畛 gi叩 tr畛 False. C但u 4: a). H達y m担 t畉 thu畉t to叩n s畉p x畉p theo th畛 t畛 tng d畉n m畛t m畉ng c叩c s畛 nguy棚n theo ki畛u n畛i b畛t (bubble sort) b畉ng ng担n ng畛 l畉p tr狸nh Pascal. b). X辿t d達y s畛 sau: 4, 7, 2, 5, 6. H達y cho bi畉t di畛n bi畉n c畛a d達y s畛 ny (s畛 thay 畛i m畛i l炭c c坦 ho叩n 畛i gi叩 tr畛) khi vi畛c s畉p x畉p 動畛c th畛c hi畛n theo ki畛u n畛i b畛t. c). Gi畉 s畛 d達y ny g畛m n s畛 li畛u, h達y ch畛 ra tr動畛ng h畛p x畉u nh畉t (ch動董ng tr狸nh ph畉i th畛c hi畛n vi畛c ho叩n 畛i nhi畛u nh畉t) 畛i v畛i thu畉t to叩n s畉p x畉p theo ki畛u n畛i b畛t v gi畉i th鱈ch t畉i sao? T鱈nh s畛 l畉n th畛c hi畛n vi畛c ho叩n 畛i trong tr動畛ng h畛p ny. ---------------------------------------- Ghi ch炭: C叩n b畛 coi thi kh担ng gi畉i th鱈ch g狸 th棚m.