Tải bản đầy đủ (.pdf) (4 trang)

Đề thi tuyển sinh Cao học và nghiên cứu sinh môn Ngôn ngữ lập trình 2005 - đáp án

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (178.7 KB, 4 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
ĐẠI HỌC HUẾ
KỲ THI TUYỂN SINH SAU ĐẠI HỌC NĂM 2005
Đáp án đề thi tuyển sinh Cao học
Môn thi: Ngôn ngữ lập trình
Câu 1: 1,5 đ
Kết quả in ra trên màn hình:
8 4 10 5 9
8 4 5 10 9
8 4 5 9 10
4 8 5 9 10
4 5 8 9 10
* Dòng 1: 0,5 đ
* Dòng 2-3: 0,5 đ
* Dòng 4-5: 0,5 đ

Câu 2: 4,0 đ
a) 1,0 đ
Function Addr(FirstS: TroMH; BMaMH: Integer):TroMH;
Begin
If FirstS=nil then Addr:=nil
else if FirstS^.MaMH=BMaMH then Addr:=FirstS
else Addr:=Addr(FirstS^.next, BMaMH);
End;
* Xử lý trường hợp để có Addr=nil: 0,5 đ
* Xử lý trường hợp để có Addr<>nil: 0,5 đ

b) 3,0 đ
Procedure ListOfSubjects(FirstT: TroGV; BMaGV: St8); (1,5 đ)
Procedure LOS(F: TroM);
var stt: integer; p: TroMH;


Begin If F<>nil then
begin stt:=1; writeln(‘STT’:5, ‘Ten mon hoc’:30, ‘So DVHT’:10);
while F<>nil do
begin p:=Addr(FirstS, F^.MaM);
writeln(stt:5, p^.TenMH:30, p^.SoDVHT:10);
F:=F^.Tiep; stt:=stt+1;
end;
end;
End;
Nguyễn Lý Hữu Huấn
Begin If (FirstT<>nil)and(FirstT^.MaGV<=BMaGV) then
If FirstT^.MaGV=BMaGV then LOS(FirstT^.DSM)
else ListOfSubjects(FirstT^.Down, BMaGV);
End;
* Định vị đến nút giáo viên cần tìm (có sử dụng danh sách tăng dần): 0,5 đ
* Duyệt danh sách mã môn học: 0,5 đ
* In theo mẫu: 0,5 đ

Procedure ListOfTeachers(FirstT: TroGV; BMaM: Integer); (1,5 đ)
var stt: integer;
Procedure LOT(F: TroGV; BMaM: Integer);
Procedure Find_and_Print(P: TroM; BMaM: Integer);
Begin If P<>nil then
if P^.MaM=BMaM then
begin writeln(stt:5, F^.HoTenGV:30); stt:= stt+1;
end
else Find_and_Print(P^.Tiep, BMaM);
End;
Begin If F<>nil then
begin Find_and_Print(F^.DSM, BMaM);

LOT(F^.down, BMaM);
end;
End;

Begin If FirstT<>nil then
begin stt:=1; writeln(‘STT’:5, ‘Ho ten giao vien’:30);
LOT(FirstT, BMaM);
end;
End;
* Duyệt mọi nút giáo viên: 0,5 đ
* In theo mẫu: 1,0 đ

Câu 3: 4,5 đ
a) 1,5 đ
Function Muc(Top, p: TroNutTrenCay):Word ;
Function Cha(Top, p: TroNutTrenCay):TroNutTrenCay;
Begin If (Top=nil)or(Top=p) then Cha:=nil
else If (Top^.Left=p) or (Top^.Right=p) then Cha:=Top
else if Cha(Top^.Left, p)<>nil then Cha:=Cha(Top^.Left, p)
else Cha:= Cha(Top^.Right, p);
End;
Nguyễn Lý Hữu Huấn
Begin If Top=nil then Muc:=0
else If p=Top then Muc:=1
else Muc:=Muc(Top, Cha(Top, p))+1;
End;
* Xác định địa chỉ nút cha của p: + 0,5 đ (trường hợp cha=nil)
+ 0,5 đ (trường hợp cha<>nil)
* Từ đó xác định mức của nút p: 0,5 đ


b) 2,0 đ
Procedure InsertQueue(var First, Last: TroNutTrenDS; X: TroNutTrenCay); (1,0 đ)
var p: TroNutTrenDS;
Begin new(p); p^.Info:=X; p^.next:=nil;
If First=nil then begin First:=p; Last:=p; end
Else begin Last^.next:=p; Last:=p; end;
End;
* Xử lý trường hợp First = nil: 0,5 đ
* Xử lý trường hợp First <> nil: 0,5 đ

Procedure DeleteQueue(var First, Last: TroNutTrenDS; var X: TroNutTrenCay); (1,0 đ)
var p: TroNutTrenDS;
Begin
If First=nil then write(‘Khong xoa duoc’)
Else If First=Last then
begin X:=First^.Info;dispose(First); First:=nil; Last:=nil; end
Else
begin p:=First; X:=p^.Info; First:=p^.next; dispose(p); end;

End;
* Xử lý trường hợp First = nil và First=Last: 0,5 đ
* Xử lý trường hợp còn lại: 0,5 đ

c) 1,0 đ (không chia nhỏ)
Procedure Lietke(Top: TroNutTrenCay);
var First, Last: TroNutTrenDS; X: TroNutTrenCay;
Begin If Top<>nil then
begin First:=nil; Last:=nil;
InsertQueue(First, Last, Top); writeln(Top^.Value);
Repeat

DeleteQueue(First, Last, X);
If X^.Left<>nil then begin InsertQueue(First, Last, X^.Left);
writeln(X^.Left^.Value);
end;
Nguyễn Lý Hữu Huấn
If X^.Right<>nil then begin InsertQueue(First, Last, X^.Right);
writeln(X^.Right^.Value);
end;
Until First=nil;
end;
End;
Nguyễn Lý Hữu Huấn

×