JavaScript is required

Cho thuật toán:

Procedure Test(x,i,j: Integer);

Var m:integer;

Begin 

m:=trunc(i+j)/2;

If x= a[i] then vt:=m

Else If (x

Else If ( x> a[m] ) and (j>m) then Test(x,m+1,j)

Else vt:=0;

End;

Với A = {5, 2, 9 ,8, 6, 4, 7,1}. Kết quả nào đúng trong số những kết quả dưới đây: 

A.

Test(3,1,8), vt = 0;

B.

Test(4,1,8), vt = 5; 

C.

Test(6,1,8), vt = 0; 

D.

Test(7,1,8), vt = 8;

Trả lời:

Đáp án đúng: A


Đầu tiên, cần sắp xếp mảng A theo thứ tự tăng dần: A = {1, 2, 4, 5, 6, 7, 8, 9}. Xét Test(3, 1, 8): - i = 1, j = 8, m = trunc((1+8)/2) = 4 - x (3) != a[i] (1) - (x (3) < a[m] (5)) and (i (1) < m (4)) là đúng. Gọi Test(3, 1, 3) - i = 1, j = 3, m = trunc((1+3)/2) = 2 - x (3) != a[i] (1) - (x (3) < a[m] (2)) and (i (1) < m (2)) là sai. - (x (3) > a[m] (2)) and (j (3) > m (2)) là đúng. Gọi Test(3, 3, 3) - i = 3, j = 3, m = trunc((3+3)/2) = 3 - x (3) != a[i] (4) - (x (3) < a[m] (4)) and (i (3) < m (3)) là sai. - (x (3) > a[m] (4)) and (j (3) > m (3)) là sai. - vt := 0 Xét Test(4, 1, 8): - i = 1, j = 8, m = trunc((1+8)/2) = 4 - x (4) != a[i] (1) - (x (4) < a[m] (5)) and (i (1) < m (4)) là đúng. Gọi Test(4, 1, 3) - i = 1, j = 3, m = trunc((1+3)/2) = 2 - x (4) != a[i] (1) - (x (4) < a[m] (2)) and (i (1) < m (2)) là sai - (x (4) > a[m] (2)) and (j (3) > m (2)) là đúng. Gọi Test(4, 3, 3) - i = 3, j = 3, m = trunc((3+3)/2) = 3 - x (4) = a[i] (4) => vt := m = 3. Tuy nhiên, do đoạn code đầu vào index từ 1, nên kết quả vt = 3 sẽ tương ứng với vị trí index là 3. Trong mảng A đã sắp xếp, giá trị 4 nằm ở vị trí thứ 3, tức a[3]. Vì vậy phương án này sai. Xét Test(6, 1, 8): - i = 1, j = 8, m = trunc((1+8)/2) = 4 - x (6) != a[i] (1) - (x (6) < a[m] (5)) and (i (1) < m (4)) là sai. - (x (6) > a[m] (5)) and (j (8) > m (4)) là đúng. Gọi Test(6, 5, 8) - i = 5, j = 8, m = trunc((5+8)/2) = 6 - x (6) = a[i] (6) => vt := m = 6. Trong mảng A đã sắp xếp, giá trị 6 nằm ở vị trí thứ 5, tức a[5]. Vì vậy phương án này sai. Xét Test(7, 1, 8): - i = 1, j = 8, m = trunc((1+8)/2) = 4 - x (7) != a[i] (1) - (x (7) < a[m] (5)) and (i (1) < m (4)) là sai. - (x (7) > a[m] (5)) and (j (8) > m (4)) là đúng. Gọi Test(7, 5, 8) - i = 5, j = 8, m = trunc((5+8)/2) = 6 - x (7) != a[i] (6) - (x (7) < a[m] (6)) and (i (5) < m (6)) là sai - (x (7) > a[m] (6)) and (j (8) > m (6)) là đúng. Gọi Test(7, 7, 8) - i = 7, j = 8, m = trunc((7+8)/2) = 7 - x (7) = a[i] (8) is false - (x (7) < a[m] (8)) and (i (7) < m (7)) is false - (x (7) > a[m] (8)) and (j (8) > m (7)) is false - vt := 0. Vậy phương án này sai. Do đó, không có kết quả đúng trong các phương án được đưa ra.

Bộ 525 câu hỏi trắc nghiệm ôn thi môn Toán rời rạc có đáp án dưới đây sẽ là tài liệu ôn tập hữi ích dành cho các bạn sinh viên. Mời các bạn cùng tham khảo!


30 câu hỏi 60 phút

Câu hỏi liên quan