Tìm kết quả của đoạn lệnh sau?
Trả lời:
Đáp án đúng: A
Đoạn lệnh này có vài lỗi sai cú pháp. Cụ thể:
* Dòng 2: `n := 3;` Phải sửa thành `n = 3;` hoặc `n := 3;` (tùy theo ngôn ngữ Pascal hoặc ngôn ngữ khác).
* Dòng 3, 4, 5: `a[1] := 10; a[2] := 5; a[3] := 15;` Không có vấn đề nếu `a` là mảng đã được khai báo.
* Dòng 6: `max := a[1];` Không có vấn đề.
* Dòng 7: `vitri := 1;` Không có vấn đề.
* Dòng 8: `for i := 2 to n do` Không có vấn đề.
* Dòng 9: `if a[i] > max then` Không có vấn đề.
* Dòng 10: `max := a[i];` Không có vấn đề.
* Dòng 11: `vitri := i;` Không có vấn đề.
* Dòng 13: `if max > 0 then` Không có vấn đề.
* Dòng 14: `write('Số lớn nhất là số thứ ', vitri);` Không có vấn đề.
* Dòng 16: `write('Chưa tìm thấy số lớn nhất');` Không có vấn đề.
Vì có lỗi ở dòng 2 nên đoạn code bị lỗi ngay từ đầu. Tuy nhiên, trong các đáp án thì đáp án phù hợp nhất là **D. Đoạn lệnh bị lỗi ở dòng số 9** bởi vì nếu sửa dòng 2 thì chương trình sẽ tiếp tục chạy, và dòng số 9 là dòng `if a[i] > max then` sẽ bắt đầu có vấn đề về mặt logic nếu mảng `a` chưa được khai báo. Tuy nhiên, đáp án chính xác nhất phải là "Đoạn lệnh bị lỗi ở dòng số 2". Do không có đáp án nào đúng hoàn toàn nên đây là một câu hỏi không hợp lệ.