Cho C = {2, 4, 5, 6, 7, 8}, k = 6, n=9. Kết quả nào đúng trong số những kết quả dưới đây sau khi thực hiện thuật toán Test(C, k, n):
Function Test(C:array[1..10] of integer; k,n:integer);
Var i,j: integer;
Begin
i:=k; While (i>0) and (c[i]=n-k+i) do i:=i-1;
If i> 0 then
Begin c[i]:= c[i] +1;
For j:= i+1 to k do c[j]:=c[i] + j-1;
End;
End;
Trả lời:
Đáp án đúng: A
Đề bài cho mảng C = {2, 4, 5, 6, 7, 8}, k = 6, n = 9. Ta sẽ thực hiện thuật toán Test(C, k, n) theo từng bước:
1. **Khởi tạo:** i = k = 6.
2. **Vòng lặp while:**
- Điều kiện lặp: (i > 0) and (C[i] = n - k + i).
- Lần 1: i = 6, C[6] = 8, n - k + i = 9 - 6 + 6 = 9. Điều kiện C[i] = n - k + i (8 = 9) là sai. Vòng lặp dừng.
3. **Kiểm tra điều kiện if:** i > 0 (6 > 0) là đúng.
4. **Thực hiện thân lệnh if:**
- C[i] = C[6] + 1 = 8 + 1 = 9. Vậy C[6] = 9.
- Vòng lặp for: j chạy từ i+1 = 7 đến k = 6. Vòng lặp này không được thực hiện vì điều kiện j <= k không thỏa mãn (7 <= 6 là sai).
Vậy sau khi thực hiện thuật toán, mảng C trở thành {2, 4, 5, 6, 7, 9}.