Kết quả của chương trình sau là gì:
#include
Void main ()
{
Int a=40, b=4;
While (a! =B)
If (a>B) a=a-b;
Else b=b-a;
Printf ( "%d", A) ;
};
Trả lời:
Đáp án đúng: C
Đoạn chương trình trên thực hiện vòng lặp `while` để giảm dần giá trị của `a` hoặc `b` cho đến khi `a` bằng `b`. Ban đầu `a = 40` và `b = 4`.
* **Lần lặp 1:** `a > b` (40 > 4) nên `a = a - b = 40 - 4 = 36`.
* **Lần lặp 2:** `a > b` (36 > 4) nên `a = a - b = 36 - 4 = 32`.
* **Lặp lại quá trình:** `a` tiếp tục giảm 4 đơn vị mỗi lần lặp cho đến khi `a = 4`. Số lần lặp cần thiết là (40 - 4) / 4 = 9 lần.
* **Lần lặp 9:** a = 8, a > b (8 > 4) nên a = a -b = 8 - 4 = 4
* **Lần lặp 10:** a = 4. a không lớn hơn b, a == b, vòng lặp while kết thúc.
Sau vòng lặp, chương trình in ra giá trị của `A`. Tuy nhiên, cần chú ý rằng trong hàm `printf`, biến được sử dụng là `A` (viết hoa), trong khi biến đã khai báo là `a` (viết thường). Do đó, chương trình sẽ báo lỗi biên dịch vì `A` chưa được khai báo. Tuy nhiên, vì câu hỏi yêu cầu *kết quả* của chương trình, nên giả sử rằng lỗi này không xảy ra và chương trình có thể chạy và in ra giá trị của `a`.
Nếu ta sửa lỗi chính tả `Printf` thành `printf` và `A` thành `a` thì chương trình sẽ in ra giá trị của `a`, tức là 4.
Tuy nhiên, vì câu hỏi có thể kiểm tra kiến thức về lỗi chính tả, và chương trình sẽ không biên dịch được nếu có lỗi, nên đáp án đúng nhất là "Kết quả khác".





