Đề 01
1/2
Đề thi tuyển sinh Cao học nghành Công nghệ thông tin
Năm học 1999-2000
Môn thi: Ngôn ngữ lập trình
Thời gian 180’ - Không được sử dụng tài liệu
Bài 1. Người ta viết một chương trình để tính giai thừa của một số nguyên không
âm như sau:
Program giaithua(input,output)
Labe
Type so = 0..maxint;
l 1999;
Var x,y:so;
Procedure factorial(var n,f:interger);
Var k:so;
begin
K:=0; f:=1;
While k<>n do
begin
K:
ef (f > (maxint div k)) then goto 1999
=k+1;
else f:=f*k;
end;
end;
BEGIN
X:=4;
Factorial(x,y);
writeln(y);
Factorial(y,y);
writeln(y);
1999; writeln(‘ket thuc’);
END.
a. Hãy cho biết kết quả đưa ra từ các lệnh in và giải thích.
b. Kết quả trên có điều không bình thường. Hãy giải thích lý do. Chữa lại
chương trình để in ra đúng giá trị 4! Và (4!)! như mong muốn.
Bài 2. Cho một tập các cặp số nguyên S ={(a1,b1),(a2,b2),…,(an,bn)}. Ta nói dãy
D bào gồm các cặp giá trị của S là dãy Domino nếu:
• Trong D không có cặp nào xuất hiện 2 lần.
• Đối với mọi cặp giá trị liên tiếp nhau trong dãy D, giá trị thứ 2 của cặp đứng
trước luôn bằng giá trị thứ nhất của cặp đứng sau.
• Không có dãy D nào thoả mãn hai tính chất trên chứa D như một phần con.
Chẳng hạn, trong tập {(3,1),(6,1),(4,3),(2,6),(9,4),(4,0),(6,2),(8,7)} có dãy
Domino {(2,6),(6,1)} và {(9,4),(4,3),(3,1)}
Hãy lập các chương trình con thực hiện các công việc sau:
1. Đọc tập n cặp số nguyên từ tệp văn bản có tên DL.TXT được tổ chức theo
quy cách:
Trình bày: Trần Hoài Nhân
Đề 01
2/2
• Dòng đầu tiên chứa số n.
• N dòng tiếp theo, mỗi dòng chứa một cặp số ai, bi.
Và lưu vào một cấu trúc A nào đó.
2. Xác định một dãy Domino nào đó từ tập A đã cho.
3. Xác định dãy Domino có số cặp giá trị lớn nhất có thể được.
Bài 3. Cho khai báo của một cây nhị phân như sau:
Type tro=^nut;
Nut = record
Gtri:integer;
Trai,phai:tro;
end;
Var goc:tro;
Hãy lập các chương trình con thực hiện các công việc sau:
1. Hàm
Function CayTK(Goc:tro):boolean;
cho phép kiểm tra xem cây
có gốc được trỏ bởi goc có phải là cây nhị phân tìm kiếm hay không.
Chú ý: Cây rỗng cũng được coi là cây tìm kiếm. Viết theo hai phương pháp
đệ quy và không đệ quy.
2. Trường hợp cây ban đầu không phải là cây tìm kiếm, hãy viết thủ tục
Procedure saplai(goc:tro)
;
Cho phép tráo đổi nội dung của các nút trong cây, nhưng không thay đổi cấu
trúc cây, để nhận được cây nhị phân tìm kiếm.
Chẳng hạn, với cây ở trên hình 1, sau khi tráo đổi ta nhận được cây tìm kiếm
như ở hình 2.
8
6
7
3 4
1
9
4
3
8
1 6
9
7
Hình 1 Hình 2
Trình bày: Trần Hoài Nhân