Tổng hợp : Đề thi và đề cương tuyển sinh Cao học và nghiên cứu sinh môn Ngôn ngữ lập trình từ năm 1993-2007
Nguyễn Lý Hữu Huấn BỘ GIÁO DỤC VÀ ĐÀO TẠO Họ và tên thí sinh: ………. ĐẠI HỌC HUẾ Số báo danh: ………. ---------- ĐỀ THI TUYỂN SINH CAO HỌC NĂM 2007 Môn thi: Ngôn ngữ lập trình (Dành cho Cao học) Thời gian làm bài: 180 phút Câu 1: Cho chương trình con sau: Function F(k, n: byte): longint; Begin If (k-0) or (k=n) then F:=1 Else F:=F(k-1, n-1) + F(k, n-1); End; a). Tính F(4, 8). b). Viết lại chương trình con trên bằng phương pháp khử đệ quy. c). Xác định độ phức tạp tính toán của chương trình con trong câu trên (sử dụng phương pháp khử đệ quy). Câu 2: Để quản lý phần Help các tên hàm của một ứng dụng, người ta sử dụng một danh sách liên kết đơn có nút đầu được trỏ bởi biến con trỏ F (gọi tắt là danh sách F). Mỗi nút của danh sách F là một bản ghi gồm các trường: Name: Lưu tên hàm (là trường khóa của danh sách F và được sắp xếp theo thứ tự tăng dần), Description: Lưu lời giải thích về cách sử dụng hàm này, Next: Lưu địa chỉ của nút tiếp theo trong danh sách F, SeeAlso: Lưu địa chỉ nút đầu của một danh sách khác gồm các hàm có liên quan đến hàm đó (gọi là danh sách hàm liên quan). Mỗi nút của danh sách hàm liên quan là một bản ghi gồm các trường: TenHLQ: Tên của hàm liên quan Tiep: Lưu địa chỉ của nút tiếp theo trong danh sách hàm liên quan. Cho khai báo của cấu trúc dữ liệu nói trên như sau: Type St10 = String[10]; TroHLQ = ^HLQ; HLQ = Record TenHLQ: St10; Tiep: TroHLQ; End; TroHam = ^Ham; Ham = Record Name: St10; Nguyễn Lý Hữu Huấn Description: String; Next: TroHam; SeeAlso: TroHLQ; End; Var F: TroHam; a). Viết hàm Addr(F: TroHam; TH: St10): TroHam trả về địa chỉ của nút thuộc danh sách F có giá trị trường Name là TH, hoặc trả về giá trị nil nếu không có nút nào thỏa mãn điều kiện này. b). Sử dụng danh sách F, viết thủ tục Add_SeeAlso(F: TroHam; TH1, TH2: St10) nhằm bổ sung một tên hàm liên quan mới TH2 vào cuối danh sách hàm liên quan với hàm TH1, và bổ sung một tên hàm liên quan mới TH1 vào cuối danh sách hàm liên quan với hàm TH2, với điều kiện các tên hàm TH1 và TH2 là đã có trong danh sách F. Câu 3: Cho một cây nhị phân T (nút gốc trỏ bởi T) có khai báo như sau: Type TroNut = ^Nut; Nut = Record Muc: Byte; {lưu mức của nút trên cây T} Left, Right: TroNut; {lưu địa chỉ nút con trái và phải} End; Var T: TroNut; a). Viết thủ tục TinhMuc(T: TroNut) nhằm thay thế giá trị trường Muc của mỗi nút trên cây T bằng mức tương ứng của nút đó trên cây này. b). Giả sử giá trị trường Muc của tất cả các nút trên cây T đã được xác định. Viết hàm DemSoNut(T: TroNut; Level: Byte): Integer cho kết quả là số nút của cây T có giá trị trường Muc bằng Level. Câu 4: a). Viết thủ tục sắp xếp một mảng số nguyên theo kiểu lựa chọn bằng ngôn ngữ lập trình Pascal. b). Tại sao thời gian thực hiện của thuật toán sắp xếp lựa chọn độc lập với dữ liệu đang được sắp xếp? c). Cho dãy số 4, 3, 8, 22, 1, 5. Khi sử dụng thuật toán sắp xếp lựa chọn, hãy cho biết kết quả biến đổi của dãy số này sau lần hoán vị đầu tiên. d). Trong trường hợp nào thì việc sử dụng thuật toán sắp xếp theo kiểu nổi bọt sẽ tốt hơn thuật toán sắp xếp theo kiểu lựa chọn? ---------------------------------------- Ghi chú: Cán bộ coi thi không giải thích gì thêm. . DỤC VÀ ĐÀO TẠO Họ và tên thí sinh: ………. ĐẠI HỌC HUẾ Số báo danh: ………. ---------- ĐỀ THI TUYỂN SINH CAO HỌC NĂM 2007 Môn thi: . TUYỂN SINH CAO HỌC NĂM 2007 Môn thi: Ngôn ngữ lập trình (Dành cho Cao học) Thời gian làm bài: 180 phút Câu 1: Cho chương trình con sau: Function F(k, n: byte):