Trong các phát biểu sau đây về tham biến (gọi theo biến) và tham trị (gọi theo giá trị) . Câu nào đúng nhất?
A -
Dùng tham trị (gọi theo giá trị) thì truyền được giá trị vào chương trình con, dùng tham biến (gọi theo biến) thì không.
B -
Dùng tham biến thì truyền được giá trị ra ngoài chương trình con, dùng tham trị thì không.
C -
Dùng tham trị hay tham biến thì cũng không làm ảnh hưởng ra ngoài.
D -
Tất cả đều sai
2-
Chương trình P có khai báo các thủ tục A, B Program P; var x, y,z :integer; Procedure A; var x,y: integer; begin x:= 8; y:= 4; B; write(x:3,z:3) end; Procedure B var y: interger; begin x:= 5; y:= 7; z:= 1; write(x:3,y:3,z:3) end;
begin {Chương trình P} x:= 1; y:= 2; z:= 3; A; write(x:3,y:3) end. Cho biết khi chạy chương trình P kết quả in ra là :
A -
5 7 1 8 4 8 4
B -
5 7 1 5 1 1 2
C -
5 7 1 5 3 1 2
D -
5 7 1 5 4 8 2
3-
Giả sử có hai hàm tìm max và min của hai số nguyên đr có từ trước. Ta viết hàm đệ quy sau function Tinhgi(m,n: integer):integer; begin if m <> n then TINHGI := TINHGI (min(m,n), max(m,n)-min(m,n)) else TINHGI := m end; Cho biết TINHGI (105, 30)
A -
5
B -
7
C -
12
D -
15
4-
Căn cứ vào công thức n! = (n+1)! / (n+1) ta có thể viết hàm đệ quy tính giai thừa được viết như sau : function GT(n:integer): integer; begin if n= 1 then GT := 1 else GT := GT(n+1) div (n+1) end; Ý kiến của bạn về chương trình này ?
A -
Hàm này viết đúng và có thể dùng được
B -
Hàm này chỉ dùng được với đối số nhỏ vì khi n lớn kết quả sẽ vượt khỏi khuôn khổ của số nguyên. [
C -
Hàm này không dùng được vì quá trình đệ quy không dừng
D -
Cả B và C
5-
Trong phần khai báo biến, để khai báo biến a có giá trị là tập hợp các chữ cái thường (không phải chữ in hoa) tìm câu lệnh khai báo đúng trong các câu dưới đây :
A -
a: set of ['a'..'z'];
B -
a: set of char;
C -
a=['a'..'z'];
D -
Tất cả đều sai
6-
Cho biến cs là biến có giá trị là tập hợp các chữ cái thường được gán bởi phép gán cs := ['a'..'z']. Biểu thức lôgic kiểm tra xem biến x kiểu char có phải là một chữ cái thường hay không là:
A -
(x in cs)
B -
(x in [cs])
C -
(x in ['a'..'z'])
D -
Cả A và C đúng
7-
Cho hai biến U và V có cùng một kiểu tập hợp. Câu lệnh kiểm tra "nếu U và V là hai tập rời nhau thì..." có thể là:
A -
if U*V=[] then ...
B -
if U*V<=[] then ...
C -
if U<>V then ...
D -
Chỉ A và B đúng
8-
Cho hai biến kiểu tập hợp U và V. Câu lệnh kiểm tra "nếu V là tập con của U thì..." có thể là:
A -
if U + V = U then ...
B -
if U - V = [] then ...
C -
A và C đúng
D -
A và B đúng
9-
Cách in ra màn hình các phần tử thuộc tập T ( T: set of char ), giả thiết c đr được khai báo trong một kiểu phù hợp tại mỗi trường hợp. Trường hợp nào đúng.
A -
write(T);
B -
for c in T write(c);
C -
for c:=0 to 255 do write(Chr(c));
D -
for c:= #0 to # 255 do if c in T then write(c);
10-
Có một lớp gồm 23 học sinh có tên là A,B,C.... Z. Các học sinh này có thể tham gia hoặc không tham gia một số câu lạc bộ là cờ tướng, bóng đá, ca nhạc, thơ. Người ta muốn tìm ra danh sách tất cả những người không tham gia hoạt động nào để động viên những sinh viên này hoà nhập với tập thể. Một chương trình Pascal khai báo một kiểu tập nhom = set of char và 6 biến kiểu nhom là co, bongda, canhac, tho,nhom1,nhom2 và một biến kiểu ký tự hocsinh. Giả sử mỗi danh sách các câu lạc bộ đr được thiết lập trong những câu lệnh nào đó ví dụ bongda := ['A', 'D', 'M'..'K', 'X']; Có một số đoạn chương trình như sau, đoạn nào đúng.
A -
nhom1 := ['A'..'Z']; nhom2:= nhom1\(bongda,canhac,tho,co); for hocsinh := 'A' to 'Z' do if hocsinh in nhom2 then M writeln(hocsinh);
B -
for hocsinh := 'A' to 'Z' do if hocsinh not in (bongda and co and canhac and tho) then writeln(hocsinh);
C -
nhom1 := ['A'..'Z']; nhom2:= nhom1- (bongda + canhac +tho +co); for hocsinh := 'A' to 'Z' do if hocsinh in nhom2 then writeln(hocsinh);