Download - Ch tin dhhue2004

Transcript
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