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

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

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 (253.89 KB, 3 trang )

1/3
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 2006
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. Xét đoạn chương trình sau:
function Power(n:byte):integer;
begin
if then Power:=1 n=0
else
if (n mod 2)=0 then Power:=sqr(Power(n div 2))
else Power:=2*sqr(Power(n-1)div 2));
end;
a. Tính Power(20).
b. Xét độ phức tạp tính toán của chương trình trên.

Câu 2. Xét dãy số: 12, 10, 5 , 19, 7, 16. Hãy cho biết diễn biến dãy số này (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 thứ tự tăng
dần bằng phương pháp nỗi bọt (Bubble Sort).

Câu 3. Một trung tâm đào tạo Tin học cần quản lý việc học của học viên theo
chứng chỉ môn học. Trong mỗi kỳ, trung tâm lưu giữ thông tin về kết quả học tập
của các học viên trong một danh sách liên kết với nút đầu được trỏ bởi con trỏ F
(gọi à danh sách học viên F). Mỗi nút của danh sách là một bản ghi gồm 3 trường:
• Trường Down: Lưu địa chỉ của nút tiếp theo trong danh sách học viên.


• Trường Hoten: Lưu họ tên học viên (trường khóa của danh sách học viên).
• Trường DsMon: Lưu địa chỉ của nút đầu của một danh sách khác chứa các
kết quả các môn học mà học viên này đăng ký học trong học kỳ đó (gọi là
danh sách môn hộc).
Mỗi nút của danh sách môn học gồm các trường:
• Trường TenMH: Tên của môn học (khóa).
• Trường Diem: Điểm thi kết thúc môn học này của học viên.
• Trường Next: Lưu địa chỉ nút tiếp theo của danh sách môn học.
Lưu ý rằng chỉ có danh sách học viên được sắp xếp theo thứ tự tăng dần của
Hoten.
Khai báo CTDL:
type St20=String[20];
TroMH=^MonHoc;
MonHoc = record
TenMH:st20;
Diem:byte;
Next:TroMH;
Trình bày: Trần Hoài Nhân

2/3
end;
TroHV=^HocVien;
HocVien = record
HoTen:st20;
down: TroHV;
DsMon: TroMH;
end;
var F:TroHV;

a. Viết hàm:

Function TimHV(F: TroHV; Name:St20):TroHV;

Trả về địa chỉ của nút thuộc danh sách học viên F có giá trị trường
Hoten=Name, hoặc trả về giá trị NIL nếu trong danh sách F không có học
viên nào có họ tên là Name.
b. Viết hàm:
Function TimMH(F: TroHV; Subject:st20):TroMH;

Trả về địa chỉ của nút thuộc danh sách môn học P (nút đầu trỏ bởi P) có giá
trị trường TenMH=Subject, hoặc trả về giá trị NIL nếu trong danh sách P
không có môn học nào có tên Subject.
c. Viết thủ tục:
Procedure Bosung(F: TroHV; Name,Subject:st20);
Để bổ sung một học viên có tên Name vào danh sách F nếu chưa có học viên
đó và học viên này có danh sách môn học đăng ký ban đầu gồm 1 môn học
Subject. Nếu đã có học viên này, thì bổ sung một môn học có tên Subject
vào cuối danh sách môn học của học viên đó, nếu môn học này chưa có
trong danh sách; ngược lại, không làm gì cả.

d. Viết thủ tục:
Procedure Capnhat(F: TroHV; Name,Subject:st20; Mark:byte);
Để cập nhật điểm thi Mark của môn học Subject cho học viên Name. Nếu
không tìm thấy học viên Name thì thực hiện việc bổ sung học viên Name và
môn học Subject kèm điểm số Mark tương ứng. Nếu không thấy môn học
Subject của học viên Name thì thực hiện việc bổ sung môn học Subject kèm
số điểm Mark.
e. Viết thủ tục:
Procedure InDSHV(F: TroHV);
Thực hiện việc in danh sách học viên và điểm của từng môn học đăng kí
kèm điểm trung bình của mỗi học viên, điểm trung bình bằng tổng tất cả các

cột điểm chia cho số lượng môn học đã đăng ký. In danh sách theo mẫu:
DANH SACH HOC VIEN
1. Le Van A: Tin(9), Pascal(10) – DTB: 9.50
2. Le Van B: word(5), Excel(8) – DTB: 6.50


Câu 4. Cho cây nhị phân
type TroNut=^Nut;
Nut = record
Giatri:integer;
Left,Right:TroNut;
Trình bày: Trần Hoài Nhân

3/3
end;
var T:TroNut;

a. Viết hàm:
ChieuCao(T:TroNut):byte;
Trả về chiều cao của cây nhị phân T.
b. Xét một danh sách liên kết F:
type TroNutDS=^NutDS;
NutDS = record
Giatri:integer; {lưu giá trị 1 nút trên cây}
Muc:byte; {lưu mức tương ứng của nút đó}
Next:TroNutDS;
end;
var F:TroNutDS;
Giả sử ban đầu danh sách F đã được khởi tạo là danh sách rỗng. Viết thủ tục
bằng đệ qui:

Ghi(T:TroNut; Var T:TroNutDS; level:byte);
Để tạo danh sách F và ghi thông tin trường giatri của mọi nút trên cây T vào
danh sách F này, đồng thời mức của nút trỏ bởi T là level sẽ được gán cho
trường Muc của F.
c. Giả sử thông tin trong cây nhị phân T đã được ghi vào danh sách T nhờ lời
gọi Ghi(T,F,1). Viết hàm:
DemSoNut(F:TroNutDS, level:byte):integer;
Cho kết quả là số nút của danh sách F có giá trị trường Muc=level.
d. Viết hàm:
LaCayNPDD(T:Tronut):boolean;
Cho kết quả True nếu cây T là cấy nhị phân đầy đủ, ngượi 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

×