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
Trang 1Đề 15 1/2
Đề thi tuyển cao học 1995 Môn thi: Lập trình
(180 phút)
Bài 1 Cho chương trình sau:
Program Print(input,output);
Var i:integer;
Procedure p(var x,y:interger); y[ ]of interger;
Begin
{3}X:=x+1;
{4}Y:=y+1;
{5}Write(x,y);
{6}End;
Begin
{1}i:=1;T[1]:=2;T[2]:=0;
{2}P(i,T[T[i]]);
{7}witeln(i,T[1],T[2]);
{8}End
Cho biết kết quả in ra từ chương trình trên Chỉ rõ giá trị của các biến và các tham số, qua mỗi bước theo vết thực hiện {1,2,3,4,5,6,7,8}
Bài 2 Cho hàm:
Function M(n:integer):integer;
Begin
If n>100 then M:=n-100
Else M:=M(M(n+1));
End
a Cho biết các giá trị M(101), M(99), M(88)
b Một cách tổng quát, cho biết M(n) với các trường hợp khác nhau của n Giải
thích lời đáp đưa ra
Bài 3 Trong một hệ soạn thảo, văn bản đang soạn được lưu ở bộ nhớ trong dưới
dạng một danh sách nối kép như sau:
Trình bày: Trần Hoài Nhân
Trang 2Đề 15 2/2
Dòng 1 Dòng 2
Dòng n
Đầu
Trường hợp chung
Trường hợp văn bản rỗng Cuối
Đầu Cuối
Khai báo của danh sách này như sau:
Type str80=String[80];
Tro=^dongvb;
Dongvb=record
Truoc:tro;
Dong:str80;
Sau:tro;
End;
Var dau,cuoi:tro; {đều bằng NIL khi văn bản là rỗng}
a Viết một thủ tục dưới dạng:
Procedure XenTruoc(var d:tro;p:tro;s:str80);
Cho phép xen một dòng mới với nội dung cho bởi s vào trước phần tử trỏ bởi p trong danh sách có đầu d
b Gọi Bloc(db,cb) là một khối liền nhau các dòng kể từ dòng trỏ bới db đến dòng trỏ bởi cb Hãy viết một thủ tục dưới dạng:
Procedure chuyenBl(var d,c:tro; db,cb,noiden:tro);
Cho phép chuyển dời Bloc(db,cb) tới trước dòng trỏ bởi noiden trong
danhsach(d,c), giả sử noiden không ở trong Bloc
c Viết một thủ tục:
Procedure chepBl(var d:tro; db,cb,noiden:tro);
Cho phép chép (mà không hủy) một Bloc(bd,cb) tới trước dòng trỏ bởi
noiden trong danh sách có đầu d Giải sử noiden không ở trong Bloc
Trình bày: Trần Hoài Nhân