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 biết kết quả in ra màn hình khi thực hiện chương trình dưới đây: PROGRAM Mystery; PROCEDURE Permute (var a, b, c, d: char); VAR e: char; BEGIN e:=a; a:=b; b:=c; c:=d; d:=e; END; PROCEDURE Cook(n: integer); VAR c, h, a, r: char; BEGIN c:=’l’; h:=’d’; a:=’u’; r:=’j’; while (n>5) do begin Permute(c, h, a, r); Writeln(c, h, a, r); c:=chr(ord(c)-1); a:=chr(ord(a)+3); n:=n div 10; end; writeln(c, h, a, r); writeln(n); END; BEGIN Cook(2001); END. Câu 2: Người ta tổ chức lưu trữ trong bộ nhớ các dòng của một văn bản dưới dạng một danh sách liên kết kép mà mỗi nút của nó gọi là một dòng. Ta dùng hai con trỏ là Dau và Cuoi lần lượt trỏ vào dòng đầu và dòng cuối của văn bản. Cho khai báo cấu trúc dữ liệu này như sau: Type St80 = String[80]; Tro = ^dongvb; dongvb = Record Truoc: Tro; {lưu địa chỉ dòng trước} Dong: St80; {dòng văn bản} Sau: Tro; {lưu địa chỉ dòng sau} End; Var Dau, Cuoi: Tro; Giả sử văn bản khác rỗng. Nguyễn Lý Hữu Huấn a). Viết thủ tục Chentruoc(Var Dau: Tro; Vitri: Tro; Dong: St80) cho phép chèn một dòng với nội dung là Dong vào trước dòng có địa chỉ là Vitri trong văn bản mà nút đầu được trỏ bởi con trỏ Dau. b). Viết thủ tục Chensau(Var Cuoi: Tro; Vitri: Tro; Dong: St80) cho phép chèn một dòng với nội dung là Dong vào sau dòng có địa chỉ là Vitri trong văn bản mà nút cuối được trỏ bởi con trỏ Cuoi. c). Ta định nghĩa khối là một dãy liên tiếp các dòng trong văn bản. Ký hiệu (db, cb) là khối được xác định vị trí bởi địa chỉ dòng đầu db và dòng cuối cb. Viết thủ tục Chepkhoi(Var: Dau: Tro; db, cb, Noiden: Tro) cho phép sao chép khối (db, cb) tới trước dòng trỏ bởi Noiden trong danh sách trỏ bởi Dau. Giả sử Noiden không ở trong khối (db, cb). Câu 3: Cho 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 Info: Integer; Left, Right: TroNut; End; Var T: TroNut; a). Giả sử cây T là cây nhị phân tìm kiếm khác rỗng, hãy viết hai hàm Min(T: TroNut): Integer và Max(T: TroNut): Integer lần lượt cho kết quả là giá trị nhỏ nhất và giá trị lớn nhất của trường Info của các nút thuộc cây T. b). Viết hàm LaCayNPTK(T: TroNut): Boolean cho kết quả là True nếu cây T là một cây nhị phân tìm kiếm, ngược lại trả về giá trị False. Câu 4: a). Hãy mô tả thuật toán sắp xếp theo thứ tự tăng dần một mảng các số nguyên theo kiểu nổi bọt (bubble sort) bằng ngôn ngữ lập trình Pascal. b). Xét dãy số sau: 4, 7, 2, 5, 6. Hãy cho biết diễn biến của 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 kiểu nổi bọt. c). Giả sử dãy này gồm n số liệu, hãy chỉ ra trường hợp xấu nhất (chương trình phải thực hiện việc hoán đổi nhiều nhất) đối với thuật toán sắp xếp theo kiểu nổi bọt và giải thích tại sao? Tính số lần thực hiện việc hoán đổi trong trường hợp này. ---------------------------------------- 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: . 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 biết kết quả in ra màn hình khi thực hiện chương trình dưới đây: