Ch tin dhhue2004

2
1/2 BGIÁO DC & ĐÀO TO Hvà tên thí sinh: .................................................. ĐẠI HC HUSbáo danh: .................................................. KTHI TUYN SINH SAU ĐẠI HC NĂM 2004 Môn thi: Ngôn nglp trình (Dành cho cao hc) Thi gian làm: 180 phút Câu 1. Cho mt chương trình viết trên Pascal như sau: var x:integer; procedure tanggiam(var x:integer; y:integer); begin writeln(x,y);x:=x+1; if y>0 then begin y:=y-1; tanggiam(x,y); writeln(x,y); end; end; BEGiN x:=3; tanggiam(x,x); END. Hãy viết các kết quin ra khi thc hin chương trình trên. Câu 2. Mt người có thbiết nhiu ngoi ngkhác nhau, vì vy vic lưu trthông tin vtrình độ ngoi ngca mt scác bcó thtchc như sau: Sdng mt cây nhphân tìm kiếm để lưu tên cán btheo khóa Ten, nút gc ca cây có địa chT. Mi nút trên cây T, ngoài trường Ten, còn có trướng DSNN dùng để lưu địa chnút đầu ca mt danh sách ni đơn. Trình độ ngoi ngca mi cán bđược thhin trên mi danh sách ni đơn này vi trường khóa là NgoaiNgu. Cu trúc này được khai báo như sau: Type str20=Sring[20]; troNN=^NN; NN=record Ngoaingu:Str20; {ngoi ng: Anh, Phap, Nga,…} Capdo:Char {cp độ: A, B, C} Next:TroNN; end; TroCB=^CB; CB=record Ten:Str20; {Tên cán b} DSNN:TroNN; Left, Right:TroCB; end; Var T:TroCB; Trình bày: Trn Hoài Nhân

Transcript of Ch tin dhhue2004

Page 1: Ch tin dhhue2004

1/2

BỘ GIÁO DỤC & ĐÀO TẠO Họ và tên thí sinh: .................................................. ĐẠI HỌC HUẾ Số báo danh: ..................................................

KỲ THI TUYỂN SINH SAU ĐẠI HỌC NĂM 2004 Môn thi: Ngôn ngữ lập trình

(Dành cho cao học) Thời gian làm: 180 phút

Câu 1. Cho một chương trình viết trên Pascal như sau:

var x:integer; procedure tanggiam(var x:integer; y:integer); begin

writeln(x,y);x:=x+1; if y>0 then begin y:=y-1; tanggiam(x,y); writeln(x,y); end;

end; BEGiN

x:=3; tanggiam(x,x);

END. Hãy viết các kết quả in ra khi thực hiện chương trình trên.

Câu 2. Một người có thể biết nhiều ngoại ngữ khác nhau, vì vậy việc lưu trữ thông tin về trình độ ngoại ngữ của một số các bộ có thể tổ chức như sau:

• Sử dụng một cây nhị phân tìm kiếm để lưu tên cán bộ theo khóa Ten, nút gốc của cây có địa chỏ là T.

• Mỗi nút trên cây T, ngoài trường Ten, còn có trướng DSNN dùng để lưu địa chỉ nút đầu của một danh sách nối đơn. Trình độ ngoại ngữ của mỗi cán bộ được thể hiện trên mỗi danh sách nối đơn này với trường khóa là NgoaiNgu.

Cấu trúc này được khai báo như sau: Type str20=Sring[20];

troNN=^NN; NN=record

Ngoaingu:Str20; {ngoại ngữ: Anh, Phap, Nga,…} Capdo:Char {cấp độ: A, B, C} Next:TroNN;

end; TroCB=^CB; CB=record

Ten:Str20; {Tên cán bộ} DSNN:TroNN; Left, Right:TroCB;

end; Var T:TroCB;

Trình bày: Trần Hoài Nhân

Page 2: Ch tin dhhue2004

2/2

a. Viết hàm: Function DinhViCB(f:TroCB; Name:Str20):TroCB; Cho kết quả là địa chỉ của một nút trên cây T mà trường Ten có giá trị là Name. Nếu không tìm thấy nút này thì hàm trả về giá trị NIL.

b. Viết thủ tục: Procedure BoSungCB(var T:TroCB; Name:Str20); Để bổ sung một cán bộ mới vào cây T có trường Ten=Name và DSNN=NIL.

c. Viết thủ tục: Procedure CapNhat(T:TroCB; Name, FL:Str20; Level:Char); Để cập nhật thông tin “cán bộ có tên Name biết ngoại ngữ FL với cấp độ Level”. Lưu ý rằng: • Việc cập nhất này chỉ được thực hiện trong trường hợp có cán bộ có tên

Name. Nếu không tìm được cán bộ có tên Name thì thông báo “Khong co can bo nay!”.

• Nếu cán bộ tìm ra chưa biết ngoài ngữ FL, thì cần bổ sung thông tin này vào đầu danh sách móc nối đơn.

• Nếu cán bộ tìm ra đã biết ngoại ngữ FL, thì chỉ thay đổi cấp độ cũ bởi cấp độ mới Level trong trường hợp cấp độ mới Level là lớn hơn cấp độ cũ.

d. Viết thủ tục: Procedure InDS(T:TroCB); Để in ra danh sách tất cả cán bộ (theo thứ tự tăng dần của tên cán bộ) kèm khả năng ngoại ngữ, theo ví dụ mẫu như sau:

TRÌNH ĐỘ NGOẠI NGỮ CỦA CÁC CÁN BỘ 1. AN: ANH-B 2. BINH: ANH-C, NGA-B, PHAP-A 3. CHI: Khong biet thu tieng nào …

Câu 3. Cho cây nhị phân có khai báo như sau:

Type TroNut=^Nut; Nut=record

Info:integer; LEnd;

eft,right:TroNut;

Var T:TroNut; Cây T (nút gốc trỏ bởi T) được gọi là một “đống” nếu cây T là rỗng, hoặc cây T

chỉ có một nút, hoặc cây T có tính chất sau: giá trị trường Info của bất kỳ nút N nào thuộc cây T đều lớn hơn giá trị trường Info của mọi nút thuộc cây con trái và cây con phải của nút N đó.

Viết hàm Function LaDong(T:TroNut):boolean; cho kết quả là True nếu cây T là một đống, ngược lại trả về giá trị False. Ghi chú: Cán bộ coi thi không được giải thích gì thêm.

Trình bày: Trần Hoài Nhân