Đề 04
1/2
Đề thi tuyển NCS và Cao học 6/1994 (Đề số 1)
Môn thi: Phương pháp lập trình
Thời gian 180’ - Được sử dụng tài liệu
Bài 1. Người ta viết một chương trình trên Pascal chuẩn, để tính giai thừa của một
số nguyên không âm như sau:
Program Giaithua(input,output)
Label 99;
Type tunhien = 0..maxint;
Var x,y:tunhien;
Procedure halt;
Begin
Goto 99;
End;
Procedure fact(var n,f:tunhien);
Var k:so;
Begin
k:=0; f:=1;
While k<>n do
Begin
K:=k+1;
If (f > (maxint div k)) then halt
Else f:=f*k;
End;
End;
BEGIN
X:=3;
Fact(x,y);
Writeln(y);
Fact(y,y);
Write(y);
9
END.
9;
1. Hãy cho biết kết quả đưa ra từ các lệnh in và giải thích.
2. Kết quả trên có điều không bình thường. Hãy giải thích lý do. Chữa lại
chương trình để in ra đúng giá trị 3! Và (3!)! như mong muốn.
Bài 2. Hãy viết một chương trình cho phép đọc lần lượt các ký tự của một xâu từ
bàn phím, kết thúc bằng một dấu chấm, hãy hiển thị lại xâu đó theo thứ tự đảo
ngược (không có dấu chấm). Chương trình viết theo ba phương án sau:
a. Dùng một mảng để ghi nhận xâu. Chương trình không đệ quy. Chú ý xử lý
trường hợp trên mảng.
b. Dùng một danh sách tuyến tính móc nối để ghi nhận ghi nhận xâu, chương
trình không đệ quy.
c. Dùng kỹ thuật đệ quy.
Trình bày: Trần Hoài Nhân
Đề 04
2/2
Bài 3. Người ta diễn tả một biểu thức số học infix bằng một cây nhị phân như sau:
- Các nút trong của cây chứa các toán tử (+,-,*,/,#,↑). Trong đó # là phép toán
một ngôi và ↑ là phép lũy thừa.
- Các lá chứa toán hạng (số thực).
- Mỗi nút có các trường: Ctrai trỏ tới nút con trái, Cphai trỏ tới nút con phải,
một trường LoaiNut cho biết nút này ứng với +,-,*,/,#,↑ hay toán hạng. Nếu
loại nút là # thì chỉ có con phải, còn nếu loại nút là toán hạng thì không có
các cây con trái, phải và nút có thêm một trường chứa trị (Thực) của toán
hạng.
a. Hãy viết các khai báo (trong Pascal) cho cây như trên.
b. Giả sử đã có một cây (xây dựng đúng yêu cầu trên), trỏ bởi một con trỏ T.
Hãy viết một hàm (Function) cho phép tính giá trị của biểu thức tương ứng
với cây đó.
Trình bày: Trần Hoài Nhân